Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.15.0

Adds Push Notification dismissal. Pass a `notification_id` to `notifications.dismiss` to clear a Push Notification you already sent from the Lock Screen and Notification Center. History keeps it. Also adds `metrics.create` to create a Lock Screen Widget metric and set its label and format, such as currency or percent, and `devices.list` to list the iPhones and iPads paired to your account.

## 1.14.0

Adds the ability to replace a Push Notification you already sent with a new one.
Expand Down
42 changes: 41 additions & 1 deletion activitysmith/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
from activitysmith_openapi.api.metrics_api import MetricsApi
from activitysmith_openapi.api.push_notifications_api import PushNotificationsApi
from activitysmith_openapi.api.app_icon_badges_api import AppIconBadgesApi
from activitysmith_openapi.api.devices_api import DevicesApi

from activitysmith_openapi.models.metric_value_update_request import MetricValueUpdateRequest

from .normalization import normalize_live_activity_request, normalize_metric_request

SDK_VERSION = "1.14.0"
SDK_VERSION = "1.15.0"
SDK_HEADER_NAME = "X-ActivitySmith-SDK"
SDK_HEADER_VALUE = f"python-v{SDK_VERSION}"

Expand Down Expand Up @@ -480,6 +481,17 @@ def replace_push_notification(
):
return self.replace(notification_id, push_notification_replace_request, **fields)

def dismiss(self, notification_id: str):
"""Clear a sent Push Notification from the Lock Screen and Notification Center.

Pass the notification_id returned by send(). History keeps the notification.
"""
return self._api.dismiss_push_notification(notification_id=notification_id)

# Generated-style alias.
def dismiss_push_notification(self, notification_id: str):
return self.dismiss(notification_id)


class LiveActivitiesResource:
TYPE_SEGMENTED_PROGRESS = "segmented_progress"
Expand Down Expand Up @@ -870,6 +882,33 @@ def update_metric_value(self, key: str, metric_value_update_request: Any):
)


class DevicesResource:
def __init__(self, api: DevicesApi) -> None:
self._api = api

def list(
self,
limit: int | None = None,
offset: int | None = None,
include_inactive: bool | None = None,
):
"""List the iPhones and iPads paired to the account, active devices first."""
return self._api.list_account_devices(
limit=limit,
offset=offset,
include_inactive=include_inactive,
)

# Generated-style alias.
def list_account_devices(
self,
limit: int | None = None,
offset: int | None = None,
include_inactive: bool | None = None,
):
return self.list(limit=limit, offset=offset, include_inactive=include_inactive)


@dataclass
class ActivitySmith:
api_key: str
Expand All @@ -887,6 +926,7 @@ def __post_init__(self) -> None:
self.notifications = NotificationsResource(PushNotificationsApi(api_client))
self.live_activities = LiveActivitiesResource(LiveActivitiesApi(api_client))
self.metrics = MetricsResource(MetricsApi(api_client))
self.devices = DevicesResource(DevicesApi(api_client))
self._app_icon_badges = AppIconBadgesApi(api_client)

def badge_count(self, value: int, *, channels: Any | None = None):
Expand Down
5 changes: 5 additions & 0 deletions activitysmith_openapi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

# import apis into sdk package
from activitysmith_openapi.api.app_icon_badges_api import AppIconBadgesApi
from activitysmith_openapi.api.devices_api import DevicesApi
from activitysmith_openapi.api.live_activities_api import LiveActivitiesApi
from activitysmith_openapi.api.metrics_api import MetricsApi
from activitysmith_openapi.api.push_notifications_api import PushNotificationsApi
Expand All @@ -34,6 +35,9 @@
from activitysmith_openapi.exceptions import ApiException

# import models into sdk package
from activitysmith_openapi.models.account_device import AccountDevice
from activitysmith_openapi.models.account_device_list_response import AccountDeviceListResponse
from activitysmith_openapi.models.account_device_list_response_meta import AccountDeviceListResponseMeta
from activitysmith_openapi.models.activity_metric import ActivityMetric
from activitysmith_openapi.models.activity_metric_value import ActivityMetricValue
from activitysmith_openapi.models.alert_payload import AlertPayload
Expand Down Expand Up @@ -79,6 +83,7 @@
from activitysmith_openapi.models.push_interruption_level import PushInterruptionLevel
from activitysmith_openapi.models.push_notification_action import PushNotificationAction
from activitysmith_openapi.models.push_notification_action_type import PushNotificationActionType
from activitysmith_openapi.models.push_notification_dismiss_response import PushNotificationDismissResponse
from activitysmith_openapi.models.push_notification_replace_request import PushNotificationReplaceRequest
from activitysmith_openapi.models.push_notification_replace_response import PushNotificationReplaceResponse
from activitysmith_openapi.models.push_notification_request import PushNotificationRequest
Expand Down
1 change: 1 addition & 0 deletions activitysmith_openapi/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

# import apis into api package
from activitysmith_openapi.api.app_icon_badges_api import AppIconBadgesApi
from activitysmith_openapi.api.devices_api import DevicesApi
from activitysmith_openapi.api.live_activities_api import LiveActivitiesApi
from activitysmith_openapi.api.metrics_api import MetricsApi
from activitysmith_openapi.api.push_notifications_api import PushNotificationsApi
Expand Down
Loading
Loading