diff --git a/activitysmith_openapi/__init__.py b/activitysmith_openapi/__init__.py
index 5a7b0c5..241c589 100644
--- a/activitysmith_openapi/__init__.py
+++ b/activitysmith_openapi/__init__.py
@@ -14,7 +14,7 @@
""" # noqa: E501
-__version__ = "1.13.0"
+__version__ = "1.14.0"
# import apis into sdk package
from activitysmith_openapi.api.app_icon_badges_api import AppIconBadgesApi
diff --git a/activitysmith_openapi/api_client.py b/activitysmith_openapi/api_client.py
index ce1b024..5b296db 100644
--- a/activitysmith_openapi/api_client.py
+++ b/activitysmith_openapi/api_client.py
@@ -88,7 +88,7 @@ def __init__(
self.default_headers[header_name] = header_value
self.cookie = cookie
# Set default User-Agent.
- self.user_agent = 'OpenAPI-Generator/1.13.0/python'
+ self.user_agent = 'OpenAPI-Generator/1.14.0/python'
self.client_side_validation = configuration.client_side_validation
def __enter__(self):
diff --git a/activitysmith_openapi/configuration.py b/activitysmith_openapi/configuration.py
index 4ea33f8..c2d4661 100644
--- a/activitysmith_openapi/configuration.py
+++ b/activitysmith_openapi/configuration.py
@@ -400,7 +400,7 @@ def to_debug_report(self):
"OS: {env}\n"\
"Python Version: {pyversion}\n"\
"Version of the API: 1.0.0\n"\
- "SDK Package Version: 1.13.0".\
+ "SDK Package Version: 1.14.0".\
format(env=sys.platform, pyversion=sys.version)
def get_host_settings(self):
diff --git a/activitysmith_openapi/docs/LiveActivitiesApi.md b/activitysmith_openapi/docs/LiveActivitiesApi.md
index bac4b47..6cc0b7f 100644
--- a/activitysmith_openapi/docs/LiveActivitiesApi.md
+++ b/activitysmith_openapi/docs/LiveActivitiesApi.md
@@ -257,7 +257,7 @@ Name | Type | Description | Notes
**400** | Bad request (invalid stream_key, payload, action, or channel targeting input) | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
**402** | Trial expired, trial allowance exhausted, or paid usage cap reached | - |
**403** | Forbidden (API key scope or channel assignment violation) | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
-**422** | No recipients found for effective channel target | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
+**422** | No paired devices on the account, or no devices matched the effective channel target | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
**429** | Rate limit exceeded | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
* Retry-After - Seconds to wait before retrying after a request-rate 429. Live Activity capacity errors are separate and require freeing device capacity; they do not provide a timed retry guarantee.
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
@@ -341,7 +341,7 @@ Name | Type | Description | Notes
**400** | Bad request (invalid payload or channel targeting input) | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
**402** | Billing access required | - |
**403** | Forbidden (API key scope or channel assignment violation) | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
-**422** | No recipients found for effective channel target | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
+**422** | No paired devices on the account, or no devices matched the effective channel target | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
**429** | Rate limit exceeded | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
* Retry-After - Seconds to wait before retrying after a request-rate 429. Live Activity capacity errors are separate and require freeing device capacity; they do not provide a timed retry guarantee.
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/activitysmith_openapi/docs/LiveActivityStreamDeleteResponse.md b/activitysmith_openapi/docs/LiveActivityStreamDeleteResponse.md
index 5b6bf37..5b56c1d 100644
--- a/activitysmith_openapi/docs/LiveActivityStreamDeleteResponse.md
+++ b/activitysmith_openapi/docs/LiveActivityStreamDeleteResponse.md
@@ -16,7 +16,8 @@ Name | Type | Description | Notes
**ignored** | **bool** | True when the stream was already ended and the request had no effect. | [optional]
**message** | **str** | | [optional]
**forced_completion** | **bool** | | [optional]
-**warning** | **str** | | [optional]
+**delivered** | **bool** | Present when the stream had a current Live Activity. True when the end was sent to at least one device, or queued for a device that has not registered yet. False when no device received it, so the Live Activity may stay on the Lock Screen until iOS removes it or someone dismisses it. | [optional]
+**warning** | **str** | Explains why the end may not have removed the Live Activity, for example because iOS had already ended a Live Activity that started more than 8 hours ago. | [optional]
**errors** | **List[str]** | Per-device delivery errors when some devices could not be reached. | [optional]
## Example
diff --git a/activitysmith_openapi/docs/NoRecipientsError.md b/activitysmith_openapi/docs/NoRecipientsError.md
index 6de3dab..1d73da4 100644
--- a/activitysmith_openapi/docs/NoRecipientsError.md
+++ b/activitysmith_openapi/docs/NoRecipientsError.md
@@ -6,7 +6,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**error** | **str** | |
+**code** | **str** | Machine-readable reason. no_paired_devices: the account has no active paired iOS devices; pair an iPhone with the ActivitySmith app. no_recipients_found: devices are paired, but none matched the targeted channels. Treat unknown values as a generic no-delivery error. | [optional]
**message** | **str** | |
+**app_store_url** | **str** | ActivitySmith App Store link. Present when code is no_paired_devices. | [optional]
**effective_channel_slugs** | **List[str]** | | [optional]
## Example
diff --git a/activitysmith_openapi/docs/PushNotificationsApi.md b/activitysmith_openapi/docs/PushNotificationsApi.md
index 13de2ab..b1452ec 100644
--- a/activitysmith_openapi/docs/PushNotificationsApi.md
+++ b/activitysmith_openapi/docs/PushNotificationsApi.md
@@ -175,7 +175,7 @@ Name | Type | Description | Notes
**400** | Bad request (invalid payload or channel targeting input) | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
**402** | Billing access required | - |
**403** | Forbidden (API key scope or channel assignment violation) | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
-**422** | No recipients found for effective channel target | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
+**422** | No paired devices on the account, or no devices matched the effective channel target | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
|
**429** | Rate limit exceeded | * RateLimit - Current request quotas using IETF draft-8 structured fields. Each named policy includes r (remaining requests) and t (seconds until reset). Multiple policies may apply.
* RateLimit-Policy - Each named policy includes q (request quota) and w (window in seconds). Each feature has an independent IP limit of 600 requests per 60 seconds. Independent account limits per 60 seconds are: Push Notifications 60, badges 60, Live Activities 300, and metric updates 300.
* Retry-After - Seconds to wait before retrying after a request-rate 429. Live Activity capacity errors are separate and require freeing device capacity; they do not provide a timed retry guarantee.
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/activitysmith_openapi/docs/UpdateAppIconBadgeCount422Response.md b/activitysmith_openapi/docs/UpdateAppIconBadgeCount422Response.md
index f7cbbfe..1f2a244 100644
--- a/activitysmith_openapi/docs/UpdateAppIconBadgeCount422Response.md
+++ b/activitysmith_openapi/docs/UpdateAppIconBadgeCount422Response.md
@@ -6,9 +6,10 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**error** | **str** | |
+**code** | **str** | |
**message** | **str** | |
+**app_store_url** | **str** | ActivitySmith App Store link. Present when code is no_paired_devices. | [optional]
**effective_channel_slugs** | **List[str]** | | [optional]
-**code** | **str** | |
**badge** | **int** | |
**devices_targeted** | **int** | | [optional]
**devices_updated** | **int** | |
diff --git a/activitysmith_openapi/models/live_activity_stream_delete_response.py b/activitysmith_openapi/models/live_activity_stream_delete_response.py
index 42d3475..072664a 100644
--- a/activitysmith_openapi/models/live_activity_stream_delete_response.py
+++ b/activitysmith_openapi/models/live_activity_stream_delete_response.py
@@ -37,9 +37,10 @@ class LiveActivityStreamDeleteResponse(BaseModel):
ignored: Optional[StrictBool] = Field(default=None, description="True when the stream was already ended and the request had no effect.")
message: Optional[StrictStr] = None
forced_completion: Optional[StrictBool] = None
- warning: Optional[StrictStr] = None
+ delivered: Optional[StrictBool] = Field(default=None, description="Present when the stream had a current Live Activity. True when the end was sent to at least one device, or queued for a device that has not registered yet. False when no device received it, so the Live Activity may stay on the Lock Screen until iOS removes it or someone dismisses it.")
+ warning: Optional[StrictStr] = Field(default=None, description="Explains why the end may not have removed the Live Activity, for example because iOS had already ended a Live Activity that started more than 8 hours ago.")
errors: Optional[List[StrictStr]] = Field(default=None, description="Per-device delivery errors when some devices could not be reached.")
- __properties: ClassVar[List[str]] = ["success", "operation", "stream_key", "activity_id", "devices_queued", "devices_notified", "timestamp", "ignored", "message", "forced_completion", "warning", "errors"]
+ __properties: ClassVar[List[str]] = ["success", "operation", "stream_key", "activity_id", "devices_queued", "devices_notified", "timestamp", "ignored", "message", "forced_completion", "delivered", "warning", "errors"]
@field_validator('operation')
def operation_validate_enum(cls, value):
@@ -114,6 +115,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"ignored": obj.get("ignored"),
"message": obj.get("message"),
"forced_completion": obj.get("forced_completion"),
+ "delivered": obj.get("delivered"),
"warning": obj.get("warning"),
"errors": obj.get("errors")
})
diff --git a/activitysmith_openapi/models/no_recipients_error.py b/activitysmith_openapi/models/no_recipients_error.py
index 42ba7ed..106adcc 100644
--- a/activitysmith_openapi/models/no_recipients_error.py
+++ b/activitysmith_openapi/models/no_recipients_error.py
@@ -17,7 +17,7 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, StrictStr
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from typing import Optional, Set
from typing_extensions import Self
@@ -27,9 +27,11 @@ class NoRecipientsError(BaseModel):
NoRecipientsError
""" # noqa: E501
error: StrictStr
+ code: Optional[StrictStr] = Field(default=None, description="Machine-readable reason. no_paired_devices: the account has no active paired iOS devices; pair an iPhone with the ActivitySmith app. no_recipients_found: devices are paired, but none matched the targeted channels. Treat unknown values as a generic no-delivery error.")
message: StrictStr
+ app_store_url: Optional[StrictStr] = Field(default=None, description="ActivitySmith App Store link. Present when code is no_paired_devices.")
effective_channel_slugs: Optional[List[StrictStr]] = None
- __properties: ClassVar[List[str]] = ["error", "message", "effective_channel_slugs"]
+ __properties: ClassVar[List[str]] = ["error", "code", "message", "app_store_url", "effective_channel_slugs"]
model_config = ConfigDict(
populate_by_name=True,
@@ -83,7 +85,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"error": obj.get("error"),
+ "code": obj.get("code"),
"message": obj.get("message"),
+ "app_store_url": obj.get("app_store_url"),
"effective_channel_slugs": obj.get("effective_channel_slugs")
})
return _obj
diff --git a/activitysmith_openapi/openapi-source.json b/activitysmith_openapi/openapi-source.json
index 28e1d47..8c9c874 100644
--- a/activitysmith_openapi/openapi-source.json
+++ b/activitysmith_openapi/openapi-source.json
@@ -1,6 +1,6 @@
{
"repository": "ActivitySmithHQ/activitysmith-backend",
- "commit": "dd6757c5defa3d1e6524faef789b6829184fb852",
+ "commit": "ab7064d65ad2097e3b57dc435c10b4f80a0ee27e",
"path": "openapi.json",
- "sha256": "24dae2d064095351d5e5cf800228e64a2d23c40b1e31a9754503081ddf31c5d8"
+ "sha256": "f0548e423e06f90169dae8d935b08f78291e9dbf95d4ae591e6d10d8eb269448"
}
diff --git a/activitysmith_openapi/test/test_live_activity_stream_delete_response.py b/activitysmith_openapi/test/test_live_activity_stream_delete_response.py
index 1a4461f..92c3212 100644
--- a/activitysmith_openapi/test/test_live_activity_stream_delete_response.py
+++ b/activitysmith_openapi/test/test_live_activity_stream_delete_response.py
@@ -45,6 +45,7 @@ def make_instance(self, include_optional) -> LiveActivityStreamDeleteResponse:
ignored = True,
message = '',
forced_completion = True,
+ delivered = True,
warning = '',
errors = [
''
diff --git a/activitysmith_openapi/test/test_no_recipients_error.py b/activitysmith_openapi/test/test_no_recipients_error.py
index 6b3ae70..ce8709f 100644
--- a/activitysmith_openapi/test/test_no_recipients_error.py
+++ b/activitysmith_openapi/test/test_no_recipients_error.py
@@ -36,7 +36,9 @@ def make_instance(self, include_optional) -> NoRecipientsError:
if include_optional:
return NoRecipientsError(
error = '',
+ code = '',
message = '',
+ app_store_url = '',
effective_channel_slugs = [
''
]
diff --git a/activitysmith_openapi/test/test_update_app_icon_badge_count422_response.py b/activitysmith_openapi/test/test_update_app_icon_badge_count422_response.py
index 23bea2e..241a983 100644
--- a/activitysmith_openapi/test/test_update_app_icon_badge_count422_response.py
+++ b/activitysmith_openapi/test/test_update_app_icon_badge_count422_response.py
@@ -36,11 +36,12 @@ def make_instance(self, include_optional) -> UpdateAppIconBadgeCount422Response:
if include_optional:
return UpdateAppIconBadgeCount422Response(
error = '',
+ code = 'badge_device_disconnected',
message = '',
+ app_store_url = '',
effective_channel_slugs = [
''
],
- code = 'badge_device_disconnected',
badge = 0,
devices_targeted = 56,
devices_updated = 56,
@@ -50,8 +51,8 @@ def make_instance(self, include_optional) -> UpdateAppIconBadgeCount422Response:
else:
return UpdateAppIconBadgeCount422Response(
error = '',
- message = '',
code = 'badge_device_disconnected',
+ message = '',
badge = 0,
devices_updated = 56,
)