diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8e76abb..4808d97 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "5.0.0" + ".": "5.1.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index ecc682c..d1dec4b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 163 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/droidrun/droidrun-cloud-a00f37a39074e0b00cf6a706aa69307a8ee8f7012966f71037085c5f0fa3ce39.yml -openapi_spec_hash: 8e7f2e32d8d7dfe18060c45f56d8cf48 +configured_endpoints: 160 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/droidrun/droidrun-cloud-1f76a7dc8fca7f07cb386036f42d21a1124965c458c28a2efe03bb829609dff5.yml +openapi_spec_hash: 1f5262ae5849178b5dfd766537910ec5 config_hash: dcea68e3d1becafc8b349671e3a0763d diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d7e44b..7b9ff4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 5.1.0 (2026-06-19) + +Full Changelog: [v5.0.0...v5.1.0](https://github.com/droidrun/mobilerun-sdk-python/compare/v5.0.0...v5.1.0) + +### Features + +* **api:** api update ([458209a](https://github.com/droidrun/mobilerun-sdk-python/commit/458209a064d4be4eedfceab7f680bc9329e5de73)) +* **api:** api update ([93a672c](https://github.com/droidrun/mobilerun-sdk-python/commit/93a672ceb48abc041a26ea744d797048ebc894b0)) + ## 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) diff --git a/api.md b/api.md index d19900e..1c524a7 100644 --- a/api.md +++ b/api.md @@ -709,25 +709,6 @@ Methods: - client.workflows.timezones.list() -> TimezoneListResponse -## Secrets - -Types: - -```python -from mobilerun_sdk.types.workflows import ( - UserSecret, - SecretCreateResponse, - SecretListResponse, - SecretDeleteResponse, -) -``` - -Methods: - -- client.workflows.secrets.create(\*\*params) -> SecretCreateResponse -- client.workflows.secrets.list() -> SecretListResponse -- client.workflows.secrets.delete(secret_id) -> SecretDeleteResponse - # Webhooks Types: diff --git a/pyproject.toml b/pyproject.toml index 92a3d5d..a49aac4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "mobilerun-sdk" -version = "5.0.0" +version = "5.1.0" description = "The official Python library for the mobilerun API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/mobilerun_sdk/_version.py b/src/mobilerun_sdk/_version.py index f6ed05f..c478aec 100644 --- a/src/mobilerun_sdk/_version.py +++ b/src/mobilerun_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "mobilerun_sdk" -__version__ = "5.0.0" # x-release-please-version +__version__ = "5.1.0" # x-release-please-version diff --git a/src/mobilerun_sdk/resources/workflows/__init__.py b/src/mobilerun_sdk/resources/workflows/__init__.py index 9923a1b..2b80e07 100644 --- a/src/mobilerun_sdk/resources/workflows/__init__.py +++ b/src/mobilerun_sdk/resources/workflows/__init__.py @@ -24,14 +24,6 @@ ActionsResourceWithStreamingResponse, AsyncActionsResourceWithStreamingResponse, ) -from .secrets import ( - SecretsResource, - AsyncSecretsResource, - SecretsResourceWithRawResponse, - AsyncSecretsResourceWithRawResponse, - SecretsResourceWithStreamingResponse, - AsyncSecretsResourceWithStreamingResponse, -) from .triggers import ( TriggersResource, AsyncTriggersResource, @@ -116,12 +108,6 @@ "AsyncTimezonesResourceWithRawResponse", "TimezonesResourceWithStreamingResponse", "AsyncTimezonesResourceWithStreamingResponse", - "SecretsResource", - "AsyncSecretsResource", - "SecretsResourceWithRawResponse", - "AsyncSecretsResourceWithRawResponse", - "SecretsResourceWithStreamingResponse", - "AsyncSecretsResourceWithStreamingResponse", "WorkflowsResource", "AsyncWorkflowsResource", "WorkflowsResourceWithRawResponse", diff --git a/src/mobilerun_sdk/resources/workflows/events/events.py b/src/mobilerun_sdk/resources/workflows/events/events.py index 09d9238..450f4bb 100644 --- a/src/mobilerun_sdk/resources/workflows/events/events.py +++ b/src/mobilerun_sdk/resources/workflows/events/events.py @@ -60,7 +60,6 @@ def dry_run( self, *, event_type: str, - device_id: str | Omit = omit, payload: Dict[str, Optional[object]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -88,7 +87,6 @@ def dry_run( body=maybe_transform( { "event_type": event_type, - "device_id": device_id, "payload": payload, }, event_dry_run_params.EventDryRunParams, @@ -103,7 +101,6 @@ def ingest( self, *, event_type: str, - device_id: str | Omit = omit, payload: Dict[str, Optional[object]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -130,7 +127,6 @@ def ingest( body=maybe_transform( { "event_type": event_type, - "device_id": device_id, "payload": payload, }, event_ingest_params.EventIngestParams, @@ -170,7 +166,6 @@ async def dry_run( self, *, event_type: str, - device_id: str | Omit = omit, payload: Dict[str, Optional[object]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -198,7 +193,6 @@ async def dry_run( body=await async_maybe_transform( { "event_type": event_type, - "device_id": device_id, "payload": payload, }, event_dry_run_params.EventDryRunParams, @@ -213,7 +207,6 @@ async def ingest( self, *, event_type: str, - device_id: str | Omit = omit, payload: Dict[str, Optional[object]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -240,7 +233,6 @@ async def ingest( body=await async_maybe_transform( { "event_type": event_type, - "device_id": device_id, "payload": payload, }, event_ingest_params.EventIngestParams, diff --git a/src/mobilerun_sdk/resources/workflows/executions.py b/src/mobilerun_sdk/resources/workflows/executions.py index cb5a0dd..4d12f2d 100644 --- a/src/mobilerun_sdk/resources/workflows/executions.py +++ b/src/mobilerun_sdk/resources/workflows/executions.py @@ -89,7 +89,7 @@ def list( page: int | Omit = omit, page_size: int | Omit = omit, search: str | Omit = omit, - status: Literal["pending", "running", "success", "failed"] | Omit = omit, + status: Literal["pending", "running", "success", "failed", "cancelled", "skipped", "invalid"] | Omit = omit, to: Optional[str] | Omit = omit, trigger_id: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -247,7 +247,7 @@ async def list( page: int | Omit = omit, page_size: int | Omit = omit, search: str | Omit = omit, - status: Literal["pending", "running", "success", "failed"] | Omit = omit, + status: Literal["pending", "running", "success", "failed", "cancelled", "skipped", "invalid"] | Omit = omit, to: Optional[str] | Omit = omit, trigger_id: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. diff --git a/src/mobilerun_sdk/resources/workflows/flows/actions.py b/src/mobilerun_sdk/resources/workflows/flows/actions.py index caea3b8..06e3278 100644 --- a/src/mobilerun_sdk/resources/workflows/flows/actions.py +++ b/src/mobilerun_sdk/resources/workflows/flows/actions.py @@ -89,7 +89,6 @@ def add( position: int, children: Iterable[FlowChildActionInputParam] | Omit = omit, continue_on_error: bool | Omit = omit, - device_id: str | Omit = omit, name_override: str | Omit = omit, overrides: Optional[FlowActionOverridesParam] | Omit = omit, parent_flow_action_id: Optional[str] | Omit = omit, @@ -122,7 +121,6 @@ def add( "position": position, "children": children, "continue_on_error": continue_on_error, - "device_id": device_id, "name_override": name_override, "overrides": overrides, "parent_flow_action_id": parent_flow_action_id, @@ -268,7 +266,6 @@ async def add( position: int, children: Iterable[FlowChildActionInputParam] | Omit = omit, continue_on_error: bool | Omit = omit, - device_id: str | Omit = omit, name_override: str | Omit = omit, overrides: Optional[FlowActionOverridesParam] | Omit = omit, parent_flow_action_id: Optional[str] | Omit = omit, @@ -301,7 +298,6 @@ async def add( "position": position, "children": children, "continue_on_error": continue_on_error, - "device_id": device_id, "name_override": name_override, "overrides": overrides, "parent_flow_action_id": parent_flow_action_id, diff --git a/src/mobilerun_sdk/resources/workflows/flows/flows.py b/src/mobilerun_sdk/resources/workflows/flows/flows.py index d6881fa..c1acea9 100644 --- a/src/mobilerun_sdk/resources/workflows/flows/flows.py +++ b/src/mobilerun_sdk/resources/workflows/flows/flows.py @@ -15,7 +15,7 @@ ActionsResourceWithStreamingResponse, AsyncActionsResourceWithStreamingResponse, ) -from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given +from ...._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given from ...._utils import path_template, maybe_transform, async_maybe_transform from ...._compat import cached_property from ...._resource import SyncAPIResource, AsyncAPIResource @@ -71,7 +71,11 @@ def create( cooldown_scope: Literal["flow", "device"] | Omit = omit, cooldown_seconds: Optional[int] | Omit = omit, description: str | Omit = omit, + device_ids: SequenceNotStr[str] | Omit = omit, enabled: bool | Omit = omit, + notify_on_failure: bool | Omit = omit, + notify_on_success: bool | Omit = omit, + notify_webhook_id: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -101,7 +105,11 @@ def create( "cooldown_scope": cooldown_scope, "cooldown_seconds": cooldown_seconds, "description": description, + "device_ids": device_ids, "enabled": enabled, + "notify_on_failure": notify_on_failure, + "notify_on_success": notify_on_success, + "notify_webhook_id": notify_webhook_id, }, flow_create_params.FlowCreateParams, ), @@ -151,8 +159,12 @@ def update( cooldown_scope: Literal["flow", "device"] | Omit = omit, cooldown_seconds: Optional[int] | Omit = omit, description: str | Omit = omit, + device_ids: SequenceNotStr[str] | Omit = omit, enabled: bool | Omit = omit, name: str | Omit = omit, + notify_on_failure: bool | Omit = omit, + notify_on_success: bool | Omit = omit, + notify_webhook_id: Optional[str] | Omit = omit, trigger_id: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -182,8 +194,12 @@ def update( "cooldown_scope": cooldown_scope, "cooldown_seconds": cooldown_seconds, "description": description, + "device_ids": device_ids, "enabled": enabled, "name": name, + "notify_on_failure": notify_on_failure, + "notify_on_success": notify_on_success, + "notify_webhook_id": notify_webhook_id, "trigger_id": trigger_id, }, flow_update_params.FlowUpdateParams, @@ -285,6 +301,7 @@ def clone( self, flow_id: str, *, + device_ids: SequenceNotStr[str] | Omit = omit, name: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -309,7 +326,13 @@ def clone( raise ValueError(f"Expected a non-empty value for `flow_id` but received {flow_id!r}") return self._post( path_template("/flows/{flow_id}/clone", flow_id=flow_id), - body=maybe_transform({"name": name}, flow_clone_params.FlowCloneParams), + body=maybe_transform( + { + "device_ids": device_ids, + "name": name, + }, + flow_clone_params.FlowCloneParams, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -385,7 +408,11 @@ async def create( cooldown_scope: Literal["flow", "device"] | Omit = omit, cooldown_seconds: Optional[int] | Omit = omit, description: str | Omit = omit, + device_ids: SequenceNotStr[str] | Omit = omit, enabled: bool | Omit = omit, + notify_on_failure: bool | Omit = omit, + notify_on_success: bool | Omit = omit, + notify_webhook_id: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -415,7 +442,11 @@ async def create( "cooldown_scope": cooldown_scope, "cooldown_seconds": cooldown_seconds, "description": description, + "device_ids": device_ids, "enabled": enabled, + "notify_on_failure": notify_on_failure, + "notify_on_success": notify_on_success, + "notify_webhook_id": notify_webhook_id, }, flow_create_params.FlowCreateParams, ), @@ -465,8 +496,12 @@ async def update( cooldown_scope: Literal["flow", "device"] | Omit = omit, cooldown_seconds: Optional[int] | Omit = omit, description: str | Omit = omit, + device_ids: SequenceNotStr[str] | Omit = omit, enabled: bool | Omit = omit, name: str | Omit = omit, + notify_on_failure: bool | Omit = omit, + notify_on_success: bool | Omit = omit, + notify_webhook_id: Optional[str] | Omit = omit, trigger_id: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -496,8 +531,12 @@ async def update( "cooldown_scope": cooldown_scope, "cooldown_seconds": cooldown_seconds, "description": description, + "device_ids": device_ids, "enabled": enabled, "name": name, + "notify_on_failure": notify_on_failure, + "notify_on_success": notify_on_success, + "notify_webhook_id": notify_webhook_id, "trigger_id": trigger_id, }, flow_update_params.FlowUpdateParams, @@ -599,6 +638,7 @@ async def clone( self, flow_id: str, *, + device_ids: SequenceNotStr[str] | Omit = omit, name: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -623,7 +663,13 @@ async def clone( raise ValueError(f"Expected a non-empty value for `flow_id` but received {flow_id!r}") return await self._post( path_template("/flows/{flow_id}/clone", flow_id=flow_id), - body=await async_maybe_transform({"name": name}, flow_clone_params.FlowCloneParams), + body=await async_maybe_transform( + { + "device_ids": device_ids, + "name": name, + }, + flow_clone_params.FlowCloneParams, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/mobilerun_sdk/resources/workflows/secrets.py b/src/mobilerun_sdk/resources/workflows/secrets.py deleted file mode 100644 index 04f2e00..0000000 --- a/src/mobilerun_sdk/resources/workflows/secrets.py +++ /dev/null @@ -1,311 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import httpx - -from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import path_template, maybe_transform, async_maybe_transform -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( - to_raw_response_wrapper, - to_streamed_response_wrapper, - async_to_raw_response_wrapper, - async_to_streamed_response_wrapper, -) -from ..._base_client import make_request_options -from ...types.workflows import secret_create_params -from ...types.workflows.secret_list_response import SecretListResponse -from ...types.workflows.secret_create_response import SecretCreateResponse -from ...types.workflows.secret_delete_response import SecretDeleteResponse - -__all__ = ["SecretsResource", "AsyncSecretsResource"] - - -class SecretsResource(SyncAPIResource): - @cached_property - def with_raw_response(self) -> SecretsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/droidrun/mobilerun-sdk-python#accessing-raw-response-data-eg-headers - """ - return SecretsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> SecretsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/droidrun/mobilerun-sdk-python#with_streaming_response - """ - return SecretsResourceWithStreamingResponse(self) - - def create( - self, - *, - name: str, - value: str, - description: str | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SecretCreateResponse: - """ - Create a user secret (write-only; value cannot be read back) - - Args: - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._post( - "/secrets", - body=maybe_transform( - { - "name": name, - "value": value, - "description": description, - }, - secret_create_params.SecretCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=SecretCreateResponse, - ) - - def list( - self, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SecretListResponse: - """List user secrets (metadata only — values never returned)""" - return self._get( - "/secrets", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=SecretListResponse, - ) - - def delete( - self, - secret_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SecretDeleteResponse: - """ - Delete a user secret - - Args: - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not secret_id: - raise ValueError(f"Expected a non-empty value for `secret_id` but received {secret_id!r}") - return self._delete( - path_template("/secrets/{secret_id}", secret_id=secret_id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=SecretDeleteResponse, - ) - - -class AsyncSecretsResource(AsyncAPIResource): - @cached_property - def with_raw_response(self) -> AsyncSecretsResourceWithRawResponse: - """ - This property can be used as a prefix for any HTTP method call to return - the raw response object instead of the parsed content. - - For more information, see https://www.github.com/droidrun/mobilerun-sdk-python#accessing-raw-response-data-eg-headers - """ - return AsyncSecretsResourceWithRawResponse(self) - - @cached_property - def with_streaming_response(self) -> AsyncSecretsResourceWithStreamingResponse: - """ - An alternative to `.with_raw_response` that doesn't eagerly read the response body. - - For more information, see https://www.github.com/droidrun/mobilerun-sdk-python#with_streaming_response - """ - return AsyncSecretsResourceWithStreamingResponse(self) - - async def create( - self, - *, - name: str, - value: str, - description: str | Omit = omit, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SecretCreateResponse: - """ - Create a user secret (write-only; value cannot be read back) - - Args: - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return await self._post( - "/secrets", - body=await async_maybe_transform( - { - "name": name, - "value": value, - "description": description, - }, - secret_create_params.SecretCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=SecretCreateResponse, - ) - - async def list( - self, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SecretListResponse: - """List user secrets (metadata only — values never returned)""" - return await self._get( - "/secrets", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=SecretListResponse, - ) - - async def delete( - self, - secret_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SecretDeleteResponse: - """ - Delete a user secret - - Args: - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not secret_id: - raise ValueError(f"Expected a non-empty value for `secret_id` but received {secret_id!r}") - return await self._delete( - path_template("/secrets/{secret_id}", secret_id=secret_id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=SecretDeleteResponse, - ) - - -class SecretsResourceWithRawResponse: - def __init__(self, secrets: SecretsResource) -> None: - self._secrets = secrets - - self.create = to_raw_response_wrapper( - secrets.create, - ) - self.list = to_raw_response_wrapper( - secrets.list, - ) - self.delete = to_raw_response_wrapper( - secrets.delete, - ) - - -class AsyncSecretsResourceWithRawResponse: - def __init__(self, secrets: AsyncSecretsResource) -> None: - self._secrets = secrets - - self.create = async_to_raw_response_wrapper( - secrets.create, - ) - self.list = async_to_raw_response_wrapper( - secrets.list, - ) - self.delete = async_to_raw_response_wrapper( - secrets.delete, - ) - - -class SecretsResourceWithStreamingResponse: - def __init__(self, secrets: SecretsResource) -> None: - self._secrets = secrets - - self.create = to_streamed_response_wrapper( - secrets.create, - ) - self.list = to_streamed_response_wrapper( - secrets.list, - ) - self.delete = to_streamed_response_wrapper( - secrets.delete, - ) - - -class AsyncSecretsResourceWithStreamingResponse: - def __init__(self, secrets: AsyncSecretsResource) -> None: - self._secrets = secrets - - self.create = async_to_streamed_response_wrapper( - secrets.create, - ) - self.list = async_to_streamed_response_wrapper( - secrets.list, - ) - self.delete = async_to_streamed_response_wrapper( - secrets.delete, - ) diff --git a/src/mobilerun_sdk/resources/workflows/triggers.py b/src/mobilerun_sdk/resources/workflows/triggers.py index 99ed8c3..b6a1b4c 100644 --- a/src/mobilerun_sdk/resources/workflows/triggers.py +++ b/src/mobilerun_sdk/resources/workflows/triggers.py @@ -281,7 +281,6 @@ def fire( trigger_id: str, *, payload: Dict[str, object], - device_id: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -313,10 +312,6 @@ def fire( Validated against the trigger's customPayloadSchema when one is configured; otherwise only "must be a JSON object" is enforced. - device_id: Optional device scope. When supplied, ownership is verified for the calling user - and the value is passed through to each enqueued execution as the default device - context. - extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -329,13 +324,7 @@ def fire( raise ValueError(f"Expected a non-empty value for `trigger_id` but received {trigger_id!r}") return self._post( path_template("/triggers/{trigger_id}/fire", trigger_id=trigger_id), - body=maybe_transform( - { - "payload": payload, - "device_id": device_id, - }, - trigger_fire_params.TriggerFireParams, - ), + body=maybe_transform({"payload": payload}, trigger_fire_params.TriggerFireParams), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -595,7 +584,6 @@ async def fire( trigger_id: str, *, payload: Dict[str, object], - device_id: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -627,10 +615,6 @@ async def fire( Validated against the trigger's customPayloadSchema when one is configured; otherwise only "must be a JSON object" is enforced. - device_id: Optional device scope. When supplied, ownership is verified for the calling user - and the value is passed through to each enqueued execution as the default device - context. - extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -643,13 +627,7 @@ async def fire( raise ValueError(f"Expected a non-empty value for `trigger_id` but received {trigger_id!r}") return await self._post( path_template("/triggers/{trigger_id}/fire", trigger_id=trigger_id), - body=await async_maybe_transform( - { - "payload": payload, - "device_id": device_id, - }, - trigger_fire_params.TriggerFireParams, - ), + body=await async_maybe_transform({"payload": payload}, trigger_fire_params.TriggerFireParams), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/mobilerun_sdk/resources/workflows/workflows.py b/src/mobilerun_sdk/resources/workflows/workflows.py index 75a9afa..99d44df 100644 --- a/src/mobilerun_sdk/resources/workflows/workflows.py +++ b/src/mobilerun_sdk/resources/workflows/workflows.py @@ -2,14 +2,6 @@ from __future__ import annotations -from .secrets import ( - SecretsResource, - AsyncSecretsResource, - SecretsResourceWithRawResponse, - AsyncSecretsResourceWithRawResponse, - SecretsResourceWithStreamingResponse, - AsyncSecretsResourceWithStreamingResponse, -) from .triggers import ( TriggersResource, AsyncTriggersResource, @@ -101,10 +93,6 @@ def executions(self) -> ExecutionsResource: def timezones(self) -> TimezonesResource: return TimezonesResource(self._client) - @cached_property - def secrets(self) -> SecretsResource: - return SecretsResource(self._client) - @cached_property def with_raw_response(self) -> WorkflowsResourceWithRawResponse: """ @@ -154,10 +142,6 @@ def executions(self) -> AsyncExecutionsResource: def timezones(self) -> AsyncTimezonesResource: return AsyncTimezonesResource(self._client) - @cached_property - def secrets(self) -> AsyncSecretsResource: - return AsyncSecretsResource(self._client) - @cached_property def with_raw_response(self) -> AsyncWorkflowsResourceWithRawResponse: """ @@ -210,10 +194,6 @@ def executions(self) -> ExecutionsResourceWithRawResponse: def timezones(self) -> TimezonesResourceWithRawResponse: return TimezonesResourceWithRawResponse(self._workflows.timezones) - @cached_property - def secrets(self) -> SecretsResourceWithRawResponse: - return SecretsResourceWithRawResponse(self._workflows.secrets) - class AsyncWorkflowsResourceWithRawResponse: def __init__(self, workflows: AsyncWorkflowsResource) -> None: @@ -247,10 +227,6 @@ def executions(self) -> AsyncExecutionsResourceWithRawResponse: def timezones(self) -> AsyncTimezonesResourceWithRawResponse: return AsyncTimezonesResourceWithRawResponse(self._workflows.timezones) - @cached_property - def secrets(self) -> AsyncSecretsResourceWithRawResponse: - return AsyncSecretsResourceWithRawResponse(self._workflows.secrets) - class WorkflowsResourceWithStreamingResponse: def __init__(self, workflows: WorkflowsResource) -> None: @@ -284,10 +260,6 @@ def executions(self) -> ExecutionsResourceWithStreamingResponse: def timezones(self) -> TimezonesResourceWithStreamingResponse: return TimezonesResourceWithStreamingResponse(self._workflows.timezones) - @cached_property - def secrets(self) -> SecretsResourceWithStreamingResponse: - return SecretsResourceWithStreamingResponse(self._workflows.secrets) - class AsyncWorkflowsResourceWithStreamingResponse: def __init__(self, workflows: AsyncWorkflowsResource) -> None: @@ -320,7 +292,3 @@ def executions(self) -> AsyncExecutionsResourceWithStreamingResponse: @cached_property def timezones(self) -> AsyncTimezonesResourceWithStreamingResponse: return AsyncTimezonesResourceWithStreamingResponse(self._workflows.timezones) - - @cached_property - def secrets(self) -> AsyncSecretsResourceWithStreamingResponse: - return AsyncSecretsResourceWithStreamingResponse(self._workflows.secrets) diff --git a/src/mobilerun_sdk/types/app_create_signed_upload_url_params.py b/src/mobilerun_sdk/types/app_create_signed_upload_url_params.py index a374c4b..d33f6e9 100644 --- a/src/mobilerun_sdk/types/app_create_signed_upload_url_params.py +++ b/src/mobilerun_sdk/types/app_create_signed_upload_url_params.py @@ -38,6 +38,13 @@ class AppCreateSignedUploadURLParams(TypedDict, total=False): class File(TypedDict, total=False): - content_type: Required[Annotated[str, PropertyInfo(alias="contentType")]] + content_type: Required[ + Annotated[ + Literal["application/vnd.android.package-archive", "application/octet-stream", "application/zip"], + PropertyInfo(alias="contentType"), + ] + ] file_name: Required[Annotated[str, PropertyInfo(alias="fileName")]] + + sha256: str diff --git a/src/mobilerun_sdk/types/flow.py b/src/mobilerun_sdk/types/flow.py index 908b874..6457f9d 100644 --- a/src/mobilerun_sdk/types/flow.py +++ b/src/mobilerun_sdk/types/flow.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import List, Optional from typing_extensions import Literal from pydantic import Field as FieldInfo @@ -25,18 +25,26 @@ class Flow(BaseModel): description: Optional[str] = None + device_ids: List[str] = FieldInfo(alias="deviceIds") + enabled: bool last_failure_at: Optional[str] = FieldInfo(alias="lastFailureAt", default=None) last_failure_code: Optional[ - Literal["device_not_found", "permission_denied", "client_error", "transient", "logic"] + Literal["device_not_found", "permission_denied", "client_error", "transient", "logic", "invalid_config"] ] = FieldInfo(alias="lastFailureCode", default=None) last_triggered_at: Optional[str] = FieldInfo(alias="lastTriggeredAt", default=None) name: str + notify_on_failure: bool = FieldInfo(alias="notifyOnFailure") + + notify_on_success: bool = FieldInfo(alias="notifyOnSuccess") + + notify_webhook_id: Optional[str] = FieldInfo(alias="notifyWebhookId", default=None) + status: Literal["healthy", "failing", "blocked"] trigger_id: str = FieldInfo(alias="triggerId") diff --git a/src/mobilerun_sdk/types/workflows/__init__.py b/src/mobilerun_sdk/types/workflows/__init__.py index 89853e2..860c6eb 100644 --- a/src/mobilerun_sdk/types/workflows/__init__.py +++ b/src/mobilerun_sdk/types/workflows/__init__.py @@ -3,7 +3,6 @@ from __future__ import annotations from .action import Action as Action -from .user_secret import UserSecret as UserSecret from .flow_execution import FlowExecution as FlowExecution from .flow_list_params import FlowListParams as FlowListParams from .flow_clone_params import FlowCloneParams as FlowCloneParams @@ -23,8 +22,6 @@ from .flow_create_response import FlowCreateResponse as FlowCreateResponse from .flow_delete_response import FlowDeleteResponse as FlowDeleteResponse from .flow_update_response import FlowUpdateResponse as FlowUpdateResponse -from .secret_create_params import SecretCreateParams as SecretCreateParams -from .secret_list_response import SecretListResponse as SecretListResponse from .event_ingest_response import EventIngestResponse as EventIngestResponse from .execution_list_params import ExecutionListParams as ExecutionListParams from .flow_unblock_response import FlowUnblockResponse as FlowUnblockResponse @@ -37,8 +34,6 @@ from .action_update_response import ActionUpdateResponse as ActionUpdateResponse from .event_dry_run_response import EventDryRunResponse as EventDryRunResponse from .flow_retrieve_response import FlowRetrieveResponse as FlowRetrieveResponse -from .secret_create_response import SecretCreateResponse as SecretCreateResponse -from .secret_delete_response import SecretDeleteResponse as SecretDeleteResponse from .timezone_list_response import TimezoneListResponse as TimezoneListResponse from .execution_list_response import ExecutionListResponse as ExecutionListResponse from .trigger_create_response import TriggerCreateResponse as TriggerCreateResponse diff --git a/src/mobilerun_sdk/types/workflows/action.py b/src/mobilerun_sdk/types/workflows/action.py index fb111f1..1b85a3f 100644 --- a/src/mobilerun_sdk/types/workflows/action.py +++ b/src/mobilerun_sdk/types/workflows/action.py @@ -19,8 +19,6 @@ class Action(BaseModel): description: Optional[str] = None - is_async: bool = FieldInfo(alias="isAsync") - method: str name: str diff --git a/src/mobilerun_sdk/types/workflows/action_catalog_entry.py b/src/mobilerun_sdk/types/workflows/action_catalog_entry.py index 4eb711f..5e6278c 100644 --- a/src/mobilerun_sdk/types/workflows/action_catalog_entry.py +++ b/src/mobilerun_sdk/types/workflows/action_catalog_entry.py @@ -17,8 +17,6 @@ class ActionCatalogEntry(BaseModel): description: Optional[str] = None - is_async: bool = FieldInfo(alias="isAsync") - method: str name: str diff --git a/src/mobilerun_sdk/types/workflows/actions/service_list_methods_response.py b/src/mobilerun_sdk/types/workflows/actions/service_list_methods_response.py index 0ebef39..95cff7a 100644 --- a/src/mobilerun_sdk/types/workflows/actions/service_list_methods_response.py +++ b/src/mobilerun_sdk/types/workflows/actions/service_list_methods_response.py @@ -3,8 +3,6 @@ from typing import List, Optional from typing_extensions import Literal -from pydantic import Field as FieldInfo - from ...._models import BaseModel __all__ = ["ServiceListMethodsResponse", "Data", "DataParam"] @@ -25,14 +23,10 @@ class DataParam(BaseModel): class Data(BaseModel): - is_async: bool = FieldInfo(alias="isAsync") - method: str params: List[DataParam] - requires_target: bool = FieldInfo(alias="requiresTarget") - class ServiceListMethodsResponse(BaseModel): data: List[Data] diff --git a/src/mobilerun_sdk/types/workflows/event_dry_run_params.py b/src/mobilerun_sdk/types/workflows/event_dry_run_params.py index c55498e..42cacb5 100644 --- a/src/mobilerun_sdk/types/workflows/event_dry_run_params.py +++ b/src/mobilerun_sdk/types/workflows/event_dry_run_params.py @@ -13,6 +13,4 @@ class EventDryRunParams(TypedDict, total=False): event_type: Required[Annotated[str, PropertyInfo(alias="eventType")]] - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - payload: Dict[str, Optional[object]] diff --git a/src/mobilerun_sdk/types/workflows/event_dry_run_response.py b/src/mobilerun_sdk/types/workflows/event_dry_run_response.py index 13df857..b1c8264 100644 --- a/src/mobilerun_sdk/types/workflows/event_dry_run_response.py +++ b/src/mobilerun_sdk/types/workflows/event_dry_run_response.py @@ -13,6 +13,7 @@ "Data", "DataMatchedFlow", "DataMatchedFlowAction", + "DataMatchedFlowGates", "DataMatchedFlowTrigger", "DataMatchedFlowTriggerScheduleRule", "DataValidation", @@ -29,11 +30,27 @@ class DataMatchedFlowAction(BaseModel): service: Literal["tasks_api", "devices_api", "agents_api", "webhooks"] - device_id: Optional[str] = FieldInfo(alias="deviceId", default=None) + children: Optional[List[Optional[object]]] = None + """ + Nested child actions (loop/branch bodies), each the same shape as a + ResolvedAction. + """ params: Optional[Dict[str, Optional[object]]] = None +class DataMatchedFlowGates(BaseModel): + blocked: bool + + cooldown_active: Optional[bool] = FieldInfo(alias="cooldownActive", default=None) + + device_attached: bool = FieldInfo(alias="deviceAttached") + + device_ids: List[str] = FieldInfo(alias="deviceIds") + + enabled: bool + + class DataMatchedFlowTriggerScheduleRule(BaseModel): type: Literal["once", "cron", "recurring"] @@ -80,8 +97,12 @@ class DataMatchedFlow(BaseModel): flow: Flow + gates: DataMatchedFlowGates + trigger: DataMatchedFlowTrigger + would_fire: bool = FieldInfo(alias="wouldFire") + class DataValidationError(BaseModel): field: str diff --git a/src/mobilerun_sdk/types/workflows/event_ingest_params.py b/src/mobilerun_sdk/types/workflows/event_ingest_params.py index d8edf19..345113f 100644 --- a/src/mobilerun_sdk/types/workflows/event_ingest_params.py +++ b/src/mobilerun_sdk/types/workflows/event_ingest_params.py @@ -13,6 +13,4 @@ class EventIngestParams(TypedDict, total=False): event_type: Required[Annotated[str, PropertyInfo(alias="eventType")]] - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - payload: Dict[str, Optional[object]] diff --git a/src/mobilerun_sdk/types/workflows/execution_get_metrics_response.py b/src/mobilerun_sdk/types/workflows/execution_get_metrics_response.py index 774f398..cb796ac 100644 --- a/src/mobilerun_sdk/types/workflows/execution_get_metrics_response.py +++ b/src/mobilerun_sdk/types/workflows/execution_get_metrics_response.py @@ -10,12 +10,18 @@ class DataByStatus(BaseModel): + cancelled: int + failed: int + invalid: int + pending: int running: int + skipped: int + success: int diff --git a/src/mobilerun_sdk/types/workflows/execution_list_params.py b/src/mobilerun_sdk/types/workflows/execution_list_params.py index 2ffa5c9..ccc40d4 100644 --- a/src/mobilerun_sdk/types/workflows/execution_list_params.py +++ b/src/mobilerun_sdk/types/workflows/execution_list_params.py @@ -25,7 +25,7 @@ class ExecutionListParams(TypedDict, total=False): search: str - status: Literal["pending", "running", "success", "failed"] + status: Literal["pending", "running", "success", "failed", "cancelled", "skipped", "invalid"] to: Optional[str] diff --git a/src/mobilerun_sdk/types/workflows/flow_child_action_input_param.py b/src/mobilerun_sdk/types/workflows/flow_child_action_input_param.py index 9c883c4..a201a30 100644 --- a/src/mobilerun_sdk/types/workflows/flow_child_action_input_param.py +++ b/src/mobilerun_sdk/types/workflows/flow_child_action_input_param.py @@ -18,8 +18,6 @@ class FlowChildActionInputParam(TypedDict, total=False): continue_on_error: Annotated[bool, PropertyInfo(alias="continueOnError")] - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - name_override: Annotated[str, PropertyInfo(alias="nameOverride")] overrides: Optional[FlowActionOverridesParam] diff --git a/src/mobilerun_sdk/types/workflows/flow_clone_params.py b/src/mobilerun_sdk/types/workflows/flow_clone_params.py index e513de2..c38a149 100644 --- a/src/mobilerun_sdk/types/workflows/flow_clone_params.py +++ b/src/mobilerun_sdk/types/workflows/flow_clone_params.py @@ -2,10 +2,15 @@ from __future__ import annotations -from typing_extensions import TypedDict +from typing_extensions import Annotated, TypedDict + +from ..._types import SequenceNotStr +from ..._utils import PropertyInfo __all__ = ["FlowCloneParams"] class FlowCloneParams(TypedDict, total=False): + device_ids: Annotated[SequenceNotStr[str], PropertyInfo(alias="deviceIds")] + name: str diff --git a/src/mobilerun_sdk/types/workflows/flow_create_params.py b/src/mobilerun_sdk/types/workflows/flow_create_params.py index 1dcdd12..464086f 100644 --- a/src/mobilerun_sdk/types/workflows/flow_create_params.py +++ b/src/mobilerun_sdk/types/workflows/flow_create_params.py @@ -5,6 +5,7 @@ from typing import Iterable, Optional from typing_extensions import Literal, Required, Annotated, TypedDict +from ..._types import SequenceNotStr from ..._utils import PropertyInfo from .flow_action_overrides_param import FlowActionOverridesParam from .flow_child_action_input_param import FlowChildActionInputParam @@ -25,8 +26,16 @@ class FlowCreateParams(TypedDict, total=False): description: str + device_ids: Annotated[SequenceNotStr[str], PropertyInfo(alias="deviceIds")] + enabled: bool + notify_on_failure: Annotated[bool, PropertyInfo(alias="notifyOnFailure")] + + notify_on_success: Annotated[bool, PropertyInfo(alias="notifyOnSuccess")] + + notify_webhook_id: Annotated[Optional[str], PropertyInfo(alias="notifyWebhookId")] + class Action(TypedDict, total=False): action_id: Required[Annotated[str, PropertyInfo(alias="actionId")]] @@ -37,8 +46,6 @@ class Action(TypedDict, total=False): continue_on_error: Annotated[bool, PropertyInfo(alias="continueOnError")] - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - name_override: Annotated[str, PropertyInfo(alias="nameOverride")] overrides: Optional[FlowActionOverridesParam] diff --git a/src/mobilerun_sdk/types/workflows/flow_execution.py b/src/mobilerun_sdk/types/workflows/flow_execution.py index ba28012..96782d6 100644 --- a/src/mobilerun_sdk/types/workflows/flow_execution.py +++ b/src/mobilerun_sdk/types/workflows/flow_execution.py @@ -23,9 +23,11 @@ class FlowExecution(BaseModel): flow_name: Optional[str] = FieldInfo(alias="flowName", default=None) + kind: Literal["live", "dry_run"] + started_at: Optional[str] = FieldInfo(alias="startedAt", default=None) - status: Optional[Literal["pending", "running", "success", "failed"]] = None + status: Optional[Literal["pending", "running", "success", "failed", "cancelled", "skipped", "invalid"]] = None trigger_id: str = FieldInfo(alias="triggerId") diff --git a/src/mobilerun_sdk/types/workflows/flow_update_params.py b/src/mobilerun_sdk/types/workflows/flow_update_params.py index 8b29afd..af63c04 100644 --- a/src/mobilerun_sdk/types/workflows/flow_update_params.py +++ b/src/mobilerun_sdk/types/workflows/flow_update_params.py @@ -5,6 +5,7 @@ from typing import Optional from typing_extensions import Literal, Annotated, TypedDict +from ..._types import SequenceNotStr from ..._utils import PropertyInfo __all__ = ["FlowUpdateParams"] @@ -17,8 +18,16 @@ class FlowUpdateParams(TypedDict, total=False): description: str + device_ids: Annotated[SequenceNotStr[str], PropertyInfo(alias="deviceIds")] + enabled: bool name: str + notify_on_failure: Annotated[bool, PropertyInfo(alias="notifyOnFailure")] + + notify_on_success: Annotated[bool, PropertyInfo(alias="notifyOnSuccess")] + + notify_webhook_id: Annotated[Optional[str], PropertyInfo(alias="notifyWebhookId")] + trigger_id: Annotated[str, PropertyInfo(alias="triggerId")] diff --git a/src/mobilerun_sdk/types/workflows/flows/action_add_params.py b/src/mobilerun_sdk/types/workflows/flows/action_add_params.py index 7d71e72..749fab6 100644 --- a/src/mobilerun_sdk/types/workflows/flows/action_add_params.py +++ b/src/mobilerun_sdk/types/workflows/flows/action_add_params.py @@ -21,8 +21,6 @@ class ActionAddParams(TypedDict, total=False): continue_on_error: Annotated[bool, PropertyInfo(alias="continueOnError")] - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - name_override: Annotated[str, PropertyInfo(alias="nameOverride")] overrides: Optional[FlowActionOverridesParam] diff --git a/src/mobilerun_sdk/types/workflows/flows/action_replace_params.py b/src/mobilerun_sdk/types/workflows/flows/action_replace_params.py index 2ae1e95..359f228 100644 --- a/src/mobilerun_sdk/types/workflows/flows/action_replace_params.py +++ b/src/mobilerun_sdk/types/workflows/flows/action_replace_params.py @@ -25,8 +25,6 @@ class Action(TypedDict, total=False): continue_on_error: Annotated[bool, PropertyInfo(alias="continueOnError")] - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - name_override: Annotated[str, PropertyInfo(alias="nameOverride")] overrides: Optional[FlowActionOverridesParam] diff --git a/src/mobilerun_sdk/types/workflows/flows/flow_action.py b/src/mobilerun_sdk/types/workflows/flows/flow_action.py index cf83cb4..2ab9154 100644 --- a/src/mobilerun_sdk/types/workflows/flows/flow_action.py +++ b/src/mobilerun_sdk/types/workflows/flows/flow_action.py @@ -22,8 +22,6 @@ class FlowAction(BaseModel): created_at: Optional[str] = FieldInfo(alias="createdAt", default=None) - device_id: Optional[str] = FieldInfo(alias="deviceId", default=None) - flow_id: str = FieldInfo(alias="flowId") name_override: Optional[str] = FieldInfo(alias="nameOverride", default=None) diff --git a/src/mobilerun_sdk/types/workflows/secret_create_params.py b/src/mobilerun_sdk/types/workflows/secret_create_params.py deleted file mode 100644 index 88e54de..0000000 --- a/src/mobilerun_sdk/types/workflows/secret_create_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, TypedDict - -__all__ = ["SecretCreateParams"] - - -class SecretCreateParams(TypedDict, total=False): - name: Required[str] - - value: Required[str] - - description: str diff --git a/src/mobilerun_sdk/types/workflows/secret_create_response.py b/src/mobilerun_sdk/types/workflows/secret_create_response.py deleted file mode 100644 index a05805f..0000000 --- a/src/mobilerun_sdk/types/workflows/secret_create_response.py +++ /dev/null @@ -1,10 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from ..._models import BaseModel -from .user_secret import UserSecret - -__all__ = ["SecretCreateResponse"] - - -class SecretCreateResponse(BaseModel): - data: UserSecret diff --git a/src/mobilerun_sdk/types/workflows/secret_delete_response.py b/src/mobilerun_sdk/types/workflows/secret_delete_response.py deleted file mode 100644 index 16ec787..0000000 --- a/src/mobilerun_sdk/types/workflows/secret_delete_response.py +++ /dev/null @@ -1,9 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from ..._models import BaseModel - -__all__ = ["SecretDeleteResponse"] - - -class SecretDeleteResponse(BaseModel): - message: str diff --git a/src/mobilerun_sdk/types/workflows/secret_list_response.py b/src/mobilerun_sdk/types/workflows/secret_list_response.py deleted file mode 100644 index 5e661ee..0000000 --- a/src/mobilerun_sdk/types/workflows/secret_list_response.py +++ /dev/null @@ -1,12 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List - -from ..._models import BaseModel -from .user_secret import UserSecret - -__all__ = ["SecretListResponse"] - - -class SecretListResponse(BaseModel): - data: List[UserSecret] diff --git a/src/mobilerun_sdk/types/workflows/trigger_fire_params.py b/src/mobilerun_sdk/types/workflows/trigger_fire_params.py index 756af49..03847b7 100644 --- a/src/mobilerun_sdk/types/workflows/trigger_fire_params.py +++ b/src/mobilerun_sdk/types/workflows/trigger_fire_params.py @@ -3,9 +3,7 @@ from __future__ import annotations from typing import Dict -from typing_extensions import Required, Annotated, TypedDict - -from ..._utils import PropertyInfo +from typing_extensions import Required, TypedDict __all__ = ["TriggerFireParams"] @@ -17,10 +15,3 @@ class TriggerFireParams(TypedDict, total=False): Validated against the trigger's customPayloadSchema when one is configured; otherwise only "must be a JSON object" is enforced. """ - - device_id: Annotated[str, PropertyInfo(alias="deviceId")] - """Optional device scope. - - When supplied, ownership is verified for the calling user and the value is - passed through to each enqueued execution as the default device context. - """ diff --git a/src/mobilerun_sdk/types/workflows/user_secret.py b/src/mobilerun_sdk/types/workflows/user_secret.py deleted file mode 100644 index a33cade..0000000 --- a/src/mobilerun_sdk/types/workflows/user_secret.py +++ /dev/null @@ -1,21 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional - -from pydantic import Field as FieldInfo - -from ..._models import BaseModel - -__all__ = ["UserSecret"] - - -class UserSecret(BaseModel): - id: str - - created_at: Optional[str] = FieldInfo(alias="createdAt", default=None) - - description: Optional[str] = None - - name: str - - updated_at: Optional[str] = FieldInfo(alias="updatedAt", default=None) diff --git a/tests/api_resources/credentials/packages/credentials/test_fields.py b/tests/api_resources/credentials/packages/credentials/test_fields.py index b16a174..96b940f 100644 --- a/tests/api_resources/credentials/packages/credentials/test_fields.py +++ b/tests/api_resources/credentials/packages/credentials/test_fields.py @@ -25,8 +25,8 @@ class TestFields: @parametrize def test_method_create(self, client: Mobilerun) -> None: field = client.credentials.packages.credentials.fields.create( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", field_type="email", value="x", ) @@ -36,8 +36,8 @@ def test_method_create(self, client: Mobilerun) -> None: @parametrize def test_raw_response_create(self, client: Mobilerun) -> None: response = client.credentials.packages.credentials.fields.with_raw_response.create( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", field_type="email", value="x", ) @@ -51,8 +51,8 @@ def test_raw_response_create(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_create(self, client: Mobilerun) -> None: with client.credentials.packages.credentials.fields.with_streaming_response.create( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", field_type="email", value="x", ) as response: @@ -69,7 +69,7 @@ def test_streaming_response_create(self, client: Mobilerun) -> None: def test_path_params_create(self, client: Mobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `package_name` but received ''"): client.credentials.packages.credentials.fields.with_raw_response.create( - credential_name="credentialName", + credential_name="26f1kl_-n-71", package_name="", field_type="email", value="x", @@ -78,7 +78,7 @@ def test_path_params_create(self, client: Mobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): client.credentials.packages.credentials.fields.with_raw_response.create( credential_name="", - package_name="packageName", + package_name="x", field_type="email", value="x", ) @@ -88,8 +88,8 @@ def test_path_params_create(self, client: Mobilerun) -> None: def test_method_update(self, client: Mobilerun) -> None: field = client.credentials.packages.credentials.fields.update( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", value="x", ) assert_matches_type(FieldUpdateResponse, field, path=["response"]) @@ -99,8 +99,8 @@ def test_method_update(self, client: Mobilerun) -> None: def test_raw_response_update(self, client: Mobilerun) -> None: response = client.credentials.packages.credentials.fields.with_raw_response.update( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", value="x", ) @@ -114,8 +114,8 @@ def test_raw_response_update(self, client: Mobilerun) -> None: def test_streaming_response_update(self, client: Mobilerun) -> None: with client.credentials.packages.credentials.fields.with_streaming_response.update( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", value="x", ) as response: assert not response.is_closed @@ -133,14 +133,14 @@ def test_path_params_update(self, client: Mobilerun) -> None: client.credentials.packages.credentials.fields.with_raw_response.update( field_type="email", package_name="", - credential_name="credentialName", + credential_name="26f1kl_-n-71", value="x", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): client.credentials.packages.credentials.fields.with_raw_response.update( field_type="email", - package_name="packageName", + package_name="x", credential_name="", value="x", ) @@ -150,8 +150,8 @@ def test_path_params_update(self, client: Mobilerun) -> None: def test_method_delete(self, client: Mobilerun) -> None: field = client.credentials.packages.credentials.fields.delete( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", ) assert_matches_type(FieldDeleteResponse, field, path=["response"]) @@ -160,8 +160,8 @@ def test_method_delete(self, client: Mobilerun) -> None: def test_raw_response_delete(self, client: Mobilerun) -> None: response = client.credentials.packages.credentials.fields.with_raw_response.delete( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", ) assert response.is_closed is True @@ -174,8 +174,8 @@ def test_raw_response_delete(self, client: Mobilerun) -> None: def test_streaming_response_delete(self, client: Mobilerun) -> None: with client.credentials.packages.credentials.fields.with_streaming_response.delete( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -192,13 +192,13 @@ def test_path_params_delete(self, client: Mobilerun) -> None: client.credentials.packages.credentials.fields.with_raw_response.delete( field_type="email", package_name="", - credential_name="credentialName", + credential_name="26f1kl_-n-71", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): client.credentials.packages.credentials.fields.with_raw_response.delete( field_type="email", - package_name="packageName", + package_name="x", credential_name="", ) @@ -212,8 +212,8 @@ class TestAsyncFields: @parametrize async def test_method_create(self, async_client: AsyncMobilerun) -> None: field = await async_client.credentials.packages.credentials.fields.create( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", field_type="email", value="x", ) @@ -223,8 +223,8 @@ async def test_method_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.credentials.fields.with_raw_response.create( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", field_type="email", value="x", ) @@ -238,8 +238,8 @@ async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_streaming_response_create(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.credentials.fields.with_streaming_response.create( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", field_type="email", value="x", ) as response: @@ -256,7 +256,7 @@ async def test_streaming_response_create(self, async_client: AsyncMobilerun) -> async def test_path_params_create(self, async_client: AsyncMobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `package_name` but received ''"): await async_client.credentials.packages.credentials.fields.with_raw_response.create( - credential_name="credentialName", + credential_name="26f1kl_-n-71", package_name="", field_type="email", value="x", @@ -265,7 +265,7 @@ async def test_path_params_create(self, async_client: AsyncMobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): await async_client.credentials.packages.credentials.fields.with_raw_response.create( credential_name="", - package_name="packageName", + package_name="x", field_type="email", value="x", ) @@ -275,8 +275,8 @@ async def test_path_params_create(self, async_client: AsyncMobilerun) -> None: async def test_method_update(self, async_client: AsyncMobilerun) -> None: field = await async_client.credentials.packages.credentials.fields.update( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", value="x", ) assert_matches_type(FieldUpdateResponse, field, path=["response"]) @@ -286,8 +286,8 @@ async def test_method_update(self, async_client: AsyncMobilerun) -> None: async def test_raw_response_update(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.credentials.fields.with_raw_response.update( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", value="x", ) @@ -301,8 +301,8 @@ async def test_raw_response_update(self, async_client: AsyncMobilerun) -> None: async def test_streaming_response_update(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.credentials.fields.with_streaming_response.update( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", value="x", ) as response: assert not response.is_closed @@ -320,14 +320,14 @@ async def test_path_params_update(self, async_client: AsyncMobilerun) -> None: await async_client.credentials.packages.credentials.fields.with_raw_response.update( field_type="email", package_name="", - credential_name="credentialName", + credential_name="26f1kl_-n-71", value="x", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): await async_client.credentials.packages.credentials.fields.with_raw_response.update( field_type="email", - package_name="packageName", + package_name="x", credential_name="", value="x", ) @@ -337,8 +337,8 @@ async def test_path_params_update(self, async_client: AsyncMobilerun) -> None: async def test_method_delete(self, async_client: AsyncMobilerun) -> None: field = await async_client.credentials.packages.credentials.fields.delete( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", ) assert_matches_type(FieldDeleteResponse, field, path=["response"]) @@ -347,8 +347,8 @@ async def test_method_delete(self, async_client: AsyncMobilerun) -> None: async def test_raw_response_delete(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.credentials.fields.with_raw_response.delete( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", ) assert response.is_closed is True @@ -361,8 +361,8 @@ async def test_raw_response_delete(self, async_client: AsyncMobilerun) -> None: async def test_streaming_response_delete(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.credentials.fields.with_streaming_response.delete( field_type="email", - package_name="packageName", - credential_name="credentialName", + package_name="x", + credential_name="26f1kl_-n-71", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -379,12 +379,12 @@ async def test_path_params_delete(self, async_client: AsyncMobilerun) -> None: await async_client.credentials.packages.credentials.fields.with_raw_response.delete( field_type="email", package_name="", - credential_name="credentialName", + credential_name="26f1kl_-n-71", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): await async_client.credentials.packages.credentials.fields.with_raw_response.delete( field_type="email", - package_name="packageName", + package_name="x", credential_name="", ) diff --git a/tests/api_resources/credentials/packages/test_credentials.py b/tests/api_resources/credentials/packages/test_credentials.py index 991d557..06dd0e9 100644 --- a/tests/api_resources/credentials/packages/test_credentials.py +++ b/tests/api_resources/credentials/packages/test_credentials.py @@ -25,7 +25,7 @@ class TestCredentials: @parametrize def test_method_create(self, client: Mobilerun) -> None: credential = client.credentials.packages.credentials.create( - package_name="packageName", + package_name="x", credential_name="26f1kl_-n-71", fields=[ { @@ -40,7 +40,7 @@ def test_method_create(self, client: Mobilerun) -> None: @parametrize def test_raw_response_create(self, client: Mobilerun) -> None: response = client.credentials.packages.credentials.with_raw_response.create( - package_name="packageName", + package_name="x", credential_name="26f1kl_-n-71", fields=[ { @@ -59,7 +59,7 @@ def test_raw_response_create(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_create(self, client: Mobilerun) -> None: with client.credentials.packages.credentials.with_streaming_response.create( - package_name="packageName", + package_name="x", credential_name="26f1kl_-n-71", fields=[ { @@ -95,8 +95,8 @@ def test_path_params_create(self, client: Mobilerun) -> None: @parametrize def test_method_retrieve(self, client: Mobilerun) -> None: credential = client.credentials.packages.credentials.retrieve( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert_matches_type(CredentialRetrieveResponse, credential, path=["response"]) @@ -104,8 +104,8 @@ def test_method_retrieve(self, client: Mobilerun) -> None: @parametrize def test_raw_response_retrieve(self, client: Mobilerun) -> None: response = client.credentials.packages.credentials.with_raw_response.retrieve( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert response.is_closed is True @@ -117,8 +117,8 @@ def test_raw_response_retrieve(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_retrieve(self, client: Mobilerun) -> None: with client.credentials.packages.credentials.with_streaming_response.retrieve( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -133,22 +133,22 @@ def test_streaming_response_retrieve(self, client: Mobilerun) -> None: def test_path_params_retrieve(self, client: Mobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `package_name` but received ''"): client.credentials.packages.credentials.with_raw_response.retrieve( - credential_name="credentialName", + credential_name="26f1kl_-n-71", package_name="", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): client.credentials.packages.credentials.with_raw_response.retrieve( credential_name="", - package_name="packageName", + package_name="x", ) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_method_delete(self, client: Mobilerun) -> None: credential = client.credentials.packages.credentials.delete( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert_matches_type(CredentialDeleteResponse, credential, path=["response"]) @@ -156,8 +156,8 @@ def test_method_delete(self, client: Mobilerun) -> None: @parametrize def test_raw_response_delete(self, client: Mobilerun) -> None: response = client.credentials.packages.credentials.with_raw_response.delete( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert response.is_closed is True @@ -169,8 +169,8 @@ def test_raw_response_delete(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_delete(self, client: Mobilerun) -> None: with client.credentials.packages.credentials.with_streaming_response.delete( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -185,14 +185,14 @@ def test_streaming_response_delete(self, client: Mobilerun) -> None: def test_path_params_delete(self, client: Mobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `package_name` but received ''"): client.credentials.packages.credentials.with_raw_response.delete( - credential_name="credentialName", + credential_name="26f1kl_-n-71", package_name="", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): client.credentials.packages.credentials.with_raw_response.delete( credential_name="", - package_name="packageName", + package_name="x", ) @@ -205,7 +205,7 @@ class TestAsyncCredentials: @parametrize async def test_method_create(self, async_client: AsyncMobilerun) -> None: credential = await async_client.credentials.packages.credentials.create( - package_name="packageName", + package_name="x", credential_name="26f1kl_-n-71", fields=[ { @@ -220,7 +220,7 @@ async def test_method_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.credentials.with_raw_response.create( - package_name="packageName", + package_name="x", credential_name="26f1kl_-n-71", fields=[ { @@ -239,7 +239,7 @@ async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_streaming_response_create(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.credentials.with_streaming_response.create( - package_name="packageName", + package_name="x", credential_name="26f1kl_-n-71", fields=[ { @@ -275,8 +275,8 @@ async def test_path_params_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_method_retrieve(self, async_client: AsyncMobilerun) -> None: credential = await async_client.credentials.packages.credentials.retrieve( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert_matches_type(CredentialRetrieveResponse, credential, path=["response"]) @@ -284,8 +284,8 @@ async def test_method_retrieve(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_raw_response_retrieve(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.credentials.with_raw_response.retrieve( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert response.is_closed is True @@ -297,8 +297,8 @@ async def test_raw_response_retrieve(self, async_client: AsyncMobilerun) -> None @parametrize async def test_streaming_response_retrieve(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.credentials.with_streaming_response.retrieve( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -313,22 +313,22 @@ async def test_streaming_response_retrieve(self, async_client: AsyncMobilerun) - async def test_path_params_retrieve(self, async_client: AsyncMobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `package_name` but received ''"): await async_client.credentials.packages.credentials.with_raw_response.retrieve( - credential_name="credentialName", + credential_name="26f1kl_-n-71", package_name="", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): await async_client.credentials.packages.credentials.with_raw_response.retrieve( credential_name="", - package_name="packageName", + package_name="x", ) @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_method_delete(self, async_client: AsyncMobilerun) -> None: credential = await async_client.credentials.packages.credentials.delete( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert_matches_type(CredentialDeleteResponse, credential, path=["response"]) @@ -336,8 +336,8 @@ async def test_method_delete(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_raw_response_delete(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.credentials.with_raw_response.delete( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) assert response.is_closed is True @@ -349,8 +349,8 @@ async def test_raw_response_delete(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_streaming_response_delete(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.credentials.with_streaming_response.delete( - credential_name="credentialName", - package_name="packageName", + credential_name="26f1kl_-n-71", + package_name="x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -365,12 +365,12 @@ async def test_streaming_response_delete(self, async_client: AsyncMobilerun) -> async def test_path_params_delete(self, async_client: AsyncMobilerun) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `package_name` but received ''"): await async_client.credentials.packages.credentials.with_raw_response.delete( - credential_name="credentialName", + credential_name="26f1kl_-n-71", package_name="", ) with pytest.raises(ValueError, match=r"Expected a non-empty value for `credential_name` but received ''"): await async_client.credentials.packages.credentials.with_raw_response.delete( credential_name="", - package_name="packageName", + package_name="x", ) diff --git a/tests/api_resources/credentials/test_packages.py b/tests/api_resources/credentials/test_packages.py index fe14887..9e0b50d 100644 --- a/tests/api_resources/credentials/test_packages.py +++ b/tests/api_resources/credentials/test_packages.py @@ -21,7 +21,7 @@ class TestPackages: @parametrize def test_method_create(self, client: Mobilerun) -> None: package = client.credentials.packages.create( - package_name="packageName", + package_name="x", ) assert_matches_type(PackageCreateResponse, package, path=["response"]) @@ -29,7 +29,7 @@ def test_method_create(self, client: Mobilerun) -> None: @parametrize def test_raw_response_create(self, client: Mobilerun) -> None: response = client.credentials.packages.with_raw_response.create( - package_name="packageName", + package_name="x", ) assert response.is_closed is True @@ -41,7 +41,7 @@ def test_raw_response_create(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_create(self, client: Mobilerun) -> None: with client.credentials.packages.with_streaming_response.create( - package_name="packageName", + package_name="x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -55,7 +55,7 @@ def test_streaming_response_create(self, client: Mobilerun) -> None: @parametrize def test_method_list(self, client: Mobilerun) -> None: package = client.credentials.packages.list( - "packageName", + "x", ) assert_matches_type(PackageListResponse, package, path=["response"]) @@ -63,7 +63,7 @@ def test_method_list(self, client: Mobilerun) -> None: @parametrize def test_raw_response_list(self, client: Mobilerun) -> None: response = client.credentials.packages.with_raw_response.list( - "packageName", + "x", ) assert response.is_closed is True @@ -75,7 +75,7 @@ def test_raw_response_list(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_list(self, client: Mobilerun) -> None: with client.credentials.packages.with_streaming_response.list( - "packageName", + "x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -103,7 +103,7 @@ class TestAsyncPackages: @parametrize async def test_method_create(self, async_client: AsyncMobilerun) -> None: package = await async_client.credentials.packages.create( - package_name="packageName", + package_name="x", ) assert_matches_type(PackageCreateResponse, package, path=["response"]) @@ -111,7 +111,7 @@ async def test_method_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.with_raw_response.create( - package_name="packageName", + package_name="x", ) assert response.is_closed is True @@ -123,7 +123,7 @@ async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_streaming_response_create(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.with_streaming_response.create( - package_name="packageName", + package_name="x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -137,7 +137,7 @@ async def test_streaming_response_create(self, async_client: AsyncMobilerun) -> @parametrize async def test_method_list(self, async_client: AsyncMobilerun) -> None: package = await async_client.credentials.packages.list( - "packageName", + "x", ) assert_matches_type(PackageListResponse, package, path=["response"]) @@ -145,7 +145,7 @@ async def test_method_list(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_raw_response_list(self, async_client: AsyncMobilerun) -> None: response = await async_client.credentials.packages.with_raw_response.list( - "packageName", + "x", ) assert response.is_closed is True @@ -157,7 +157,7 @@ async def test_raw_response_list(self, async_client: AsyncMobilerun) -> None: @parametrize async def test_streaming_response_list(self, async_client: AsyncMobilerun) -> None: async with async_client.credentials.packages.with_streaming_response.list( - "packageName", + "x", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" diff --git a/tests/api_resources/test_apps.py b/tests/api_resources/test_apps.py index 7fd88df..10e3d28 100644 --- a/tests/api_resources/test_apps.py +++ b/tests/api_resources/test_apps.py @@ -197,12 +197,12 @@ def test_path_params_confirm_upload(self, client: Mobilerun) -> None: @parametrize def test_method_create_signed_upload_url(self, client: Mobilerun) -> None: app = client.apps.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", } ], size_bytes=0, @@ -215,12 +215,13 @@ def test_method_create_signed_upload_url(self, client: Mobilerun) -> None: @parametrize def test_method_create_signed_upload_url_with_all_params(self, client: Mobilerun) -> None: app = client.apps.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", + "sha256": "210b9798eb53baa4e69d31c1071cf03d212b8ad0ca30cf321e0ea82e120aac26/i", } ], size_bytes=0, @@ -239,12 +240,12 @@ def test_method_create_signed_upload_url_with_all_params(self, client: Mobilerun @parametrize def test_raw_response_create_signed_upload_url(self, client: Mobilerun) -> None: response = client.apps.with_raw_response.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", } ], size_bytes=0, @@ -261,12 +262,12 @@ def test_raw_response_create_signed_upload_url(self, client: Mobilerun) -> None: @parametrize def test_streaming_response_create_signed_upload_url(self, client: Mobilerun) -> None: with client.apps.with_streaming_response.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", } ], size_bytes=0, @@ -543,12 +544,12 @@ async def test_path_params_confirm_upload(self, async_client: AsyncMobilerun) -> @parametrize async def test_method_create_signed_upload_url(self, async_client: AsyncMobilerun) -> None: app = await async_client.apps.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", } ], size_bytes=0, @@ -561,12 +562,13 @@ async def test_method_create_signed_upload_url(self, async_client: AsyncMobileru @parametrize async def test_method_create_signed_upload_url_with_all_params(self, async_client: AsyncMobilerun) -> None: app = await async_client.apps.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", + "sha256": "210b9798eb53baa4e69d31c1071cf03d212b8ad0ca30cf321e0ea82e120aac26/i", } ], size_bytes=0, @@ -585,12 +587,12 @@ async def test_method_create_signed_upload_url_with_all_params(self, async_clien @parametrize async def test_raw_response_create_signed_upload_url(self, async_client: AsyncMobilerun) -> None: response = await async_client.apps.with_raw_response.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", } ], size_bytes=0, @@ -607,12 +609,12 @@ async def test_raw_response_create_signed_upload_url(self, async_client: AsyncMo @parametrize async def test_streaming_response_create_signed_upload_url(self, async_client: AsyncMobilerun) -> None: async with async_client.apps.with_streaming_response.create_signed_upload_url( - bundle_id="x", + bundle_id="NX0.JB-_-.m-u--_-p.Z1-u_2I.D--_T-_.dzZ-.Wx.L_a8--_.w_D_", display_name="x", files=[ { - "content_type": "x", - "file_name": "x", + "content_type": "application/vnd.android.package-archive", + "file_name": "J!Q0Ok0bzJb7.apk/i", } ], size_bytes=0, diff --git a/tests/api_resources/workflows/flows/test_actions.py b/tests/api_resources/workflows/flows/test_actions.py index 0343316..797f724 100644 --- a/tests/api_resources/workflows/flows/test_actions.py +++ b/tests/api_resources/workflows/flows/test_actions.py @@ -86,13 +86,11 @@ def test_method_add_with_all_params(self, client: Mobilerun) -> None: "action_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "position": 0, "continue_on_error": True, - "device_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "name_override": "x", "overrides": {"params": {"foo": "bar"}}, } ], continue_on_error=True, - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", name_override="x", overrides={"params": {"foo": "bar"}}, parent_flow_action_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", @@ -327,13 +325,11 @@ async def test_method_add_with_all_params(self, async_client: AsyncMobilerun) -> "action_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "position": 0, "continue_on_error": True, - "device_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "name_override": "x", "overrides": {"params": {"foo": "bar"}}, } ], continue_on_error=True, - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", name_override="x", overrides={"params": {"foo": "bar"}}, parent_flow_action_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", diff --git a/tests/api_resources/workflows/test_events.py b/tests/api_resources/workflows/test_events.py index 8ca70fa..687e21b 100644 --- a/tests/api_resources/workflows/test_events.py +++ b/tests/api_resources/workflows/test_events.py @@ -33,7 +33,6 @@ def test_method_dry_run(self, client: Mobilerun) -> None: def test_method_dry_run_with_all_params(self, client: Mobilerun) -> None: event = client.workflows.events.dry_run( event_type="x", - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", payload={"foo": "bar"}, ) assert_matches_type(EventDryRunResponse, event, path=["response"]) @@ -77,7 +76,6 @@ def test_method_ingest(self, client: Mobilerun) -> None: def test_method_ingest_with_all_params(self, client: Mobilerun) -> None: event = client.workflows.events.ingest( event_type="x", - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", payload={"foo": "bar"}, ) assert_matches_type(EventIngestResponse, event, path=["response"]) @@ -127,7 +125,6 @@ async def test_method_dry_run(self, async_client: AsyncMobilerun) -> None: async def test_method_dry_run_with_all_params(self, async_client: AsyncMobilerun) -> None: event = await async_client.workflows.events.dry_run( event_type="x", - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", payload={"foo": "bar"}, ) assert_matches_type(EventDryRunResponse, event, path=["response"]) @@ -171,7 +168,6 @@ async def test_method_ingest(self, async_client: AsyncMobilerun) -> None: async def test_method_ingest_with_all_params(self, async_client: AsyncMobilerun) -> None: event = await async_client.workflows.events.ingest( event_type="x", - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", payload={"foo": "bar"}, ) assert_matches_type(EventIngestResponse, event, path=["response"]) diff --git a/tests/api_resources/workflows/test_flows.py b/tests/api_resources/workflows/test_flows.py index d7640f1..34eb5e5 100644 --- a/tests/api_resources/workflows/test_flows.py +++ b/tests/api_resources/workflows/test_flows.py @@ -53,13 +53,11 @@ def test_method_create_with_all_params(self, client: Mobilerun) -> None: "action_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "position": 0, "continue_on_error": True, - "device_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "name_override": "x", "overrides": {"params": {"foo": "bar"}}, } ], "continue_on_error": True, - "device_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "name_override": "x", "overrides": {"params": {"foo": "bar"}}, } @@ -69,7 +67,11 @@ def test_method_create_with_all_params(self, client: Mobilerun) -> None: cooldown_scope="flow", cooldown_seconds=0, description="description", + device_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], enabled=True, + notify_on_failure=True, + notify_on_success=True, + notify_webhook_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", ) assert_matches_type(FlowCreateResponse, flow, path=["response"]) @@ -171,8 +173,12 @@ def test_method_update_with_all_params(self, client: Mobilerun) -> None: cooldown_scope="flow", cooldown_seconds=0, description="description", + device_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], enabled=True, name="x", + notify_on_failure=True, + notify_on_success=True, + notify_webhook_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", trigger_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", ) assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @@ -309,6 +315,7 @@ def test_method_clone(self, client: Mobilerun) -> None: def test_method_clone_with_all_params(self, client: Mobilerun) -> None: flow = client.workflows.flows.clone( flow_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", + device_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], name="x", ) assert_matches_type(FlowCloneResponse, flow, path=["response"]) @@ -423,13 +430,11 @@ async def test_method_create_with_all_params(self, async_client: AsyncMobilerun) "action_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "position": 0, "continue_on_error": True, - "device_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "name_override": "x", "overrides": {"params": {"foo": "bar"}}, } ], "continue_on_error": True, - "device_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "name_override": "x", "overrides": {"params": {"foo": "bar"}}, } @@ -439,7 +444,11 @@ async def test_method_create_with_all_params(self, async_client: AsyncMobilerun) cooldown_scope="flow", cooldown_seconds=0, description="description", + device_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], enabled=True, + notify_on_failure=True, + notify_on_success=True, + notify_webhook_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", ) assert_matches_type(FlowCreateResponse, flow, path=["response"]) @@ -541,8 +550,12 @@ async def test_method_update_with_all_params(self, async_client: AsyncMobilerun) cooldown_scope="flow", cooldown_seconds=0, description="description", + device_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], enabled=True, name="x", + notify_on_failure=True, + notify_on_success=True, + notify_webhook_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", trigger_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", ) assert_matches_type(FlowUpdateResponse, flow, path=["response"]) @@ -679,6 +692,7 @@ async def test_method_clone(self, async_client: AsyncMobilerun) -> None: async def test_method_clone_with_all_params(self, async_client: AsyncMobilerun) -> None: flow = await async_client.workflows.flows.clone( flow_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", + device_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], name="x", ) assert_matches_type(FlowCloneResponse, flow, path=["response"]) diff --git a/tests/api_resources/workflows/test_secrets.py b/tests/api_resources/workflows/test_secrets.py deleted file mode 100644 index 6d98cae..0000000 --- a/tests/api_resources/workflows/test_secrets.py +++ /dev/null @@ -1,262 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from tests.utils import assert_matches_type -from mobilerun_sdk import Mobilerun, AsyncMobilerun -from mobilerun_sdk.types.workflows import ( - SecretListResponse, - SecretCreateResponse, - SecretDeleteResponse, -) - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestSecrets: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create(self, client: Mobilerun) -> None: - secret = client.workflows.secrets.create( - name="name", - value="x", - ) - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_create_with_all_params(self, client: Mobilerun) -> None: - secret = client.workflows.secrets.create( - name="name", - value="x", - description="description", - ) - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_create(self, client: Mobilerun) -> None: - response = client.workflows.secrets.with_raw_response.create( - name="name", - value="x", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - secret = response.parse() - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_create(self, client: Mobilerun) -> None: - with client.workflows.secrets.with_streaming_response.create( - name="name", - value="x", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - secret = response.parse() - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_list(self, client: Mobilerun) -> None: - secret = client.workflows.secrets.list() - assert_matches_type(SecretListResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_list(self, client: Mobilerun) -> None: - response = client.workflows.secrets.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - secret = response.parse() - assert_matches_type(SecretListResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_list(self, client: Mobilerun) -> None: - with client.workflows.secrets.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - secret = response.parse() - assert_matches_type(SecretListResponse, secret, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_delete(self, client: Mobilerun) -> None: - secret = client.workflows.secrets.delete( - "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) - assert_matches_type(SecretDeleteResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_raw_response_delete(self, client: Mobilerun) -> None: - response = client.workflows.secrets.with_raw_response.delete( - "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - secret = response.parse() - assert_matches_type(SecretDeleteResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_streaming_response_delete(self, client: Mobilerun) -> None: - with client.workflows.secrets.with_streaming_response.delete( - "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - secret = response.parse() - assert_matches_type(SecretDeleteResponse, secret, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_path_params_delete(self, client: Mobilerun) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `secret_id` but received ''"): - client.workflows.secrets.with_raw_response.delete( - "", - ) - - -class TestAsyncSecrets: - parametrize = pytest.mark.parametrize( - "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"] - ) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create(self, async_client: AsyncMobilerun) -> None: - secret = await async_client.workflows.secrets.create( - name="name", - value="x", - ) - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_create_with_all_params(self, async_client: AsyncMobilerun) -> None: - secret = await async_client.workflows.secrets.create( - name="name", - value="x", - description="description", - ) - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_create(self, async_client: AsyncMobilerun) -> None: - response = await async_client.workflows.secrets.with_raw_response.create( - name="name", - value="x", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - secret = await response.parse() - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_create(self, async_client: AsyncMobilerun) -> None: - async with async_client.workflows.secrets.with_streaming_response.create( - name="name", - value="x", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - secret = await response.parse() - assert_matches_type(SecretCreateResponse, secret, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_list(self, async_client: AsyncMobilerun) -> None: - secret = await async_client.workflows.secrets.list() - assert_matches_type(SecretListResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_list(self, async_client: AsyncMobilerun) -> None: - response = await async_client.workflows.secrets.with_raw_response.list() - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - secret = await response.parse() - assert_matches_type(SecretListResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_list(self, async_client: AsyncMobilerun) -> None: - async with async_client.workflows.secrets.with_streaming_response.list() as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - secret = await response.parse() - assert_matches_type(SecretListResponse, secret, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_delete(self, async_client: AsyncMobilerun) -> None: - secret = await async_client.workflows.secrets.delete( - "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) - assert_matches_type(SecretDeleteResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_raw_response_delete(self, async_client: AsyncMobilerun) -> None: - response = await async_client.workflows.secrets.with_raw_response.delete( - "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - secret = await response.parse() - assert_matches_type(SecretDeleteResponse, secret, path=["response"]) - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_streaming_response_delete(self, async_client: AsyncMobilerun) -> None: - async with async_client.workflows.secrets.with_streaming_response.delete( - "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - secret = await response.parse() - assert_matches_type(SecretDeleteResponse, secret, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_path_params_delete(self, async_client: AsyncMobilerun) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `secret_id` but received ''"): - await async_client.workflows.secrets.with_raw_response.delete( - "", - ) diff --git a/tests/api_resources/workflows/test_triggers.py b/tests/api_resources/workflows/test_triggers.py index 9a71326..5f9b669 100644 --- a/tests/api_resources/workflows/test_triggers.py +++ b/tests/api_resources/workflows/test_triggers.py @@ -285,16 +285,6 @@ def test_method_fire(self, client: Mobilerun) -> None: ) assert_matches_type(TriggerFireResponse, trigger, path=["response"]) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - def test_method_fire_with_all_params(self, client: Mobilerun) -> None: - trigger = client.workflows.triggers.fire( - trigger_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - payload={"foo": "bar"}, - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) - assert_matches_type(TriggerFireResponse, trigger, path=["response"]) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize def test_raw_response_fire(self, client: Mobilerun) -> None: @@ -599,16 +589,6 @@ async def test_method_fire(self, async_client: AsyncMobilerun) -> None: ) assert_matches_type(TriggerFireResponse, trigger, path=["response"]) - @pytest.mark.skip(reason="Mock server tests are disabled") - @parametrize - async def test_method_fire_with_all_params(self, async_client: AsyncMobilerun) -> None: - trigger = await async_client.workflows.triggers.fire( - trigger_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - payload={"foo": "bar"}, - device_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", - ) - assert_matches_type(TriggerFireResponse, trigger, path=["response"]) - @pytest.mark.skip(reason="Mock server tests are disabled") @parametrize async def test_raw_response_fire(self, async_client: AsyncMobilerun) -> None: