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
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "7.22.0"
".": "7.23.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 136
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-47bd7f89519b4aa68b039b9a03888b689fac9d6ee763d26be0b267bbb0b2ddaa.yml
openapi_spec_hash: 67ff63b23cbfb19beac58d6e471836d3
config_hash: b30c4b3086cd9f3da06a63b256d8c189
configured_endpoints: 147
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-ca32540df5bca42c8113de4004e7751b74bb440e3d73267e7cbad84dd3c3e82a.yml
openapi_spec_hash: 5576c8cf8e5be1f250b5dd1eb6d30571
config_hash: c6cefb51165221f01d442a42ac4a13b9
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 7.23.0 (2026-07-29)

Full Changelog: [v7.22.0...v7.23.0](https://github.com/trycourier/courier-python/compare/v7.22.0...v7.23.0)

### Features

* **broadcasts:** document Broadcasts CRUD REST API ([#170](https://github.com/trycourier/courier-python/issues/170)) ([8e63975](https://github.com/trycourier/courier-python/commit/8e639757661144e35f43d31923a7d6190874253e))

## 7.22.0 (2026-07-29)

Full Changelog: [v7.21.0...v7.22.0](https://github.com/trycourier/courier-python/compare/v7.21.0...v7.22.0)
Expand Down
30 changes: 30 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,36 @@ Methods:
- <code title="put /journeys/{templateId}/templates/{notificationId}">client.journeys.templates.<a href="./src/courier/resources/journeys/templates.py">replace</a>(notification_id, \*, template_id, \*\*<a href="src/courier/types/journeys/template_replace_params.py">params</a>) -> <a href="./src/courier/types/journey_template_get_response.py">JourneyTemplateGetResponse</a></code>
- <code title="get /journeys/{templateId}/templates/{notificationId}/content">client.journeys.templates.<a href="./src/courier/resources/journeys/templates.py">retrieve_content</a>(notification_id, \*, template_id, \*\*<a href="src/courier/types/journeys/template_retrieve_content_params.py">params</a>) -> <a href="./src/courier/types/notification_content_get_response.py">NotificationContentGetResponse</a></code>

# Broadcasts

Types:

```python
from courier.types import (
Broadcast,
BroadcastListResponse,
BroadcastSchedule,
CreateBroadcastRequest,
ScheduleBroadcastRequest,
SendBroadcastRequest,
UpdateBroadcastRequest,
)
```

Methods:

- <code title="post /broadcasts">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">create</a>(\*\*<a href="src/courier/types/broadcast_create_params.py">params</a>) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="get /broadcasts/{broadcastId}">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">retrieve</a>(broadcast_id) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="put /broadcasts/{broadcastId}">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">update</a>(broadcast_id, \*\*<a href="src/courier/types/broadcast_update_params.py">params</a>) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="get /broadcasts">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">list</a>(\*\*<a href="src/courier/types/broadcast_list_params.py">params</a>) -> <a href="./src/courier/types/broadcast_list_response.py">BroadcastListResponse</a></code>
- <code title="delete /broadcasts/{broadcastId}">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">archive</a>(broadcast_id) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="post /broadcasts/{broadcastId}/cancel">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">cancel</a>(broadcast_id) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="post /broadcasts/{broadcastId}/duplicate">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">duplicate</a>(broadcast_id) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="put /broadcasts/{broadcastId}/content">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">put_content</a>(broadcast_id, \*\*<a href="src/courier/types/broadcast_put_content_params.py">params</a>) -> <a href="./src/courier/types/notification_content_mutation_response.py">NotificationContentMutationResponse</a></code>
- <code title="get /broadcasts/{broadcastId}/content">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">retrieve_content</a>(broadcast_id, \*\*<a href="src/courier/types/broadcast_retrieve_content_params.py">params</a>) -> <a href="./src/courier/types/notification_content_get_response.py">NotificationContentGetResponse</a></code>
- <code title="post /broadcasts/{broadcastId}/schedule">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">schedule</a>(broadcast_id, \*\*<a href="src/courier/types/broadcast_schedule_params.py">params</a>) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>
- <code title="post /broadcasts/{broadcastId}/send">client.broadcasts.<a href="./src/courier/resources/broadcasts.py">send</a>(broadcast_id, \*\*<a href="src/courier/types/broadcast_send_params.py">params</a>) -> <a href="./src/courier/types/broadcast.py">Broadcast</a></code>

# Brands

Types:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "trycourier"
version = "7.22.0"
version = "7.23.0"
description = "The official Python library for the Courier API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
38 changes: 38 additions & 0 deletions src/courier/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
requests,
audiences,
providers,
broadcasts,
automations,
audit_events,
translations,
Expand All @@ -65,6 +66,7 @@
from .resources.messages import MessagesResource, AsyncMessagesResource
from .resources.requests import RequestsResource, AsyncRequestsResource
from .resources.audiences import AudiencesResource, AsyncAudiencesResource
from .resources.broadcasts import BroadcastsResource, AsyncBroadcastsResource
from .resources.inbox.inbox import InboxResource, AsyncInboxResource
from .resources.lists.lists import ListsResource, AsyncListsResource
from .resources.users.users import UsersResource, AsyncUsersResource
Expand Down Expand Up @@ -211,6 +213,12 @@ def journeys(self) -> JourneysResource:

return JourneysResource(self)

@cached_property
def broadcasts(self) -> BroadcastsResource:
from .resources.broadcasts import BroadcastsResource

return BroadcastsResource(self)

@cached_property
def brands(self) -> BrandsResource:
"""
Expand Down Expand Up @@ -566,6 +574,12 @@ def journeys(self) -> AsyncJourneysResource:

return AsyncJourneysResource(self)

@cached_property
def broadcasts(self) -> AsyncBroadcastsResource:
from .resources.broadcasts import AsyncBroadcastsResource

return AsyncBroadcastsResource(self)

@cached_property
def brands(self) -> AsyncBrandsResource:
"""
Expand Down Expand Up @@ -863,6 +877,12 @@ def journeys(self) -> journeys.JourneysResourceWithRawResponse:

return JourneysResourceWithRawResponse(self._client.journeys)

@cached_property
def broadcasts(self) -> broadcasts.BroadcastsResourceWithRawResponse:
from .resources.broadcasts import BroadcastsResourceWithRawResponse

return BroadcastsResourceWithRawResponse(self._client.broadcasts)

@cached_property
def brands(self) -> brands.BrandsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -1048,6 +1068,12 @@ def journeys(self) -> journeys.AsyncJourneysResourceWithRawResponse:

return AsyncJourneysResourceWithRawResponse(self._client.journeys)

@cached_property
def broadcasts(self) -> broadcasts.AsyncBroadcastsResourceWithRawResponse:
from .resources.broadcasts import AsyncBroadcastsResourceWithRawResponse

return AsyncBroadcastsResourceWithRawResponse(self._client.broadcasts)

@cached_property
def brands(self) -> brands.AsyncBrandsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -1233,6 +1259,12 @@ def journeys(self) -> journeys.JourneysResourceWithStreamingResponse:

return JourneysResourceWithStreamingResponse(self._client.journeys)

@cached_property
def broadcasts(self) -> broadcasts.BroadcastsResourceWithStreamingResponse:
from .resources.broadcasts import BroadcastsResourceWithStreamingResponse

return BroadcastsResourceWithStreamingResponse(self._client.broadcasts)

@cached_property
def brands(self) -> brands.BrandsResourceWithStreamingResponse:
"""
Expand Down Expand Up @@ -1418,6 +1450,12 @@ def journeys(self) -> journeys.AsyncJourneysResourceWithStreamingResponse:

return AsyncJourneysResourceWithStreamingResponse(self._client.journeys)

@cached_property
def broadcasts(self) -> broadcasts.AsyncBroadcastsResourceWithStreamingResponse:
from .resources.broadcasts import AsyncBroadcastsResourceWithStreamingResponse

return AsyncBroadcastsResourceWithStreamingResponse(self._client.broadcasts)

@cached_property
def brands(self) -> brands.AsyncBrandsResourceWithStreamingResponse:
"""
Expand Down
2 changes: 1 addition & 1 deletion src/courier/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "courier"
__version__ = "7.22.0" # x-release-please-version
__version__ = "7.23.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/courier/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,14 @@
ProvidersResourceWithStreamingResponse,
AsyncProvidersResourceWithStreamingResponse,
)
from .broadcasts import (
BroadcastsResource,
AsyncBroadcastsResource,
BroadcastsResourceWithRawResponse,
AsyncBroadcastsResourceWithRawResponse,
BroadcastsResourceWithStreamingResponse,
AsyncBroadcastsResourceWithStreamingResponse,
)
from .automations import (
AutomationsResource,
AsyncAutomationsResource,
Expand Down Expand Up @@ -212,6 +220,12 @@
"AsyncJourneysResourceWithRawResponse",
"JourneysResourceWithStreamingResponse",
"AsyncJourneysResourceWithStreamingResponse",
"BroadcastsResource",
"AsyncBroadcastsResource",
"BroadcastsResourceWithRawResponse",
"AsyncBroadcastsResourceWithRawResponse",
"BroadcastsResourceWithStreamingResponse",
"AsyncBroadcastsResourceWithStreamingResponse",
"BrandsResource",
"AsyncBrandsResource",
"BrandsResourceWithRawResponse",
Expand Down
Loading