diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7ed8b9a2e..554e34bbe 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.29.1" + ".": "0.30.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index cd23aeae2..1609d1935 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 40 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sent/sent-dm-ed2d25d8fc35788cd5a487e5041365c3d269407578e74930a2bab21152dcd082.yml -openapi_spec_hash: f2858e2f82502940c623e8705564ac83 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sent/sent-dm-aaa1e926cc5197acf2f9ea1d957bf3d3eae95dbeffda2968d9bcb55a56b65332.yml +openapi_spec_hash: 950356265774a5813826bd518d469da3 config_hash: 32929c7d4b1344f5bbf67df044a518af diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e54b6b34..da26669ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.30.0 (2026-06-30) + +Full Changelog: [v0.29.1...v0.30.0](https://github.com/sentdm/sent-dm-python/compare/v0.29.1...v0.30.0) + +### Features + +* **api:** api update ([7c3e73e](https://github.com/sentdm/sent-dm-python/commit/7c3e73e74218fa28df02f7b8837f340d3026967f)) +* **api:** api update ([95ca22b](https://github.com/sentdm/sent-dm-python/commit/95ca22b5f4be88c2e6e7d37e594a4a4572127046)) + ## 0.29.1 (2026-06-18) Full Changelog: [v0.29.0...v0.29.1](https://github.com/sentdm/sent-dm-python/compare/v0.29.0...v0.29.1) diff --git a/pyproject.toml b/pyproject.toml index d7cbf2712..073f718c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sentdm" -version = "0.29.1" +version = "0.30.0" description = "The official Python library for the Sent API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/sent_dm/_version.py b/src/sent_dm/_version.py index aa2daf29b..9c298a5f2 100644 --- a/src/sent_dm/_version.py +++ b/src/sent_dm/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "sent_dm" -__version__ = "0.29.1" # x-release-please-version +__version__ = "0.30.0" # x-release-please-version diff --git a/src/sent_dm/resources/messages.py b/src/sent_dm/resources/messages.py index 89a6faf68..94317d606 100644 --- a/src/sent_dm/resources/messages.py +++ b/src/sent_dm/resources/messages.py @@ -126,7 +126,8 @@ def send( *, channel: Optional[SequenceNotStr[str]] | Omit = omit, sandbox: bool | Omit = omit, - template: message_send_params.Template | Omit = omit, + template: Optional[message_send_params.Template] | Omit = omit, + text: Optional[str] | Omit = omit, to: SequenceNotStr[str] | Omit = omit, idempotency_key: str | Omit = omit, x_profile_id: str | Omit = omit, @@ -156,6 +157,8 @@ def send( template: SDK-style template reference: resolve by ID or by name, with optional parameters. + text: Plain-text (free-form) message body. Provide either Template or this. + to: List of recipient phone numbers in E.164 format (multi-recipient fan-out) extra_headers: Send extra headers @@ -182,6 +185,7 @@ def send( "channel": channel, "sandbox": sandbox, "template": template, + "text": text, "to": to, }, message_send_params.MessageSendParams, @@ -294,7 +298,8 @@ async def send( *, channel: Optional[SequenceNotStr[str]] | Omit = omit, sandbox: bool | Omit = omit, - template: message_send_params.Template | Omit = omit, + template: Optional[message_send_params.Template] | Omit = omit, + text: Optional[str] | Omit = omit, to: SequenceNotStr[str] | Omit = omit, idempotency_key: str | Omit = omit, x_profile_id: str | Omit = omit, @@ -324,6 +329,8 @@ async def send( template: SDK-style template reference: resolve by ID or by name, with optional parameters. + text: Plain-text (free-form) message body. Provide either Template or this. + to: List of recipient phone numbers in E.164 format (multi-recipient fan-out) extra_headers: Send extra headers @@ -350,6 +357,7 @@ async def send( "channel": channel, "sandbox": sandbox, "template": template, + "text": text, "to": to, }, message_send_params.MessageSendParams, diff --git a/src/sent_dm/types/message_send_params.py b/src/sent_dm/types/message_send_params.py index c5edc9936..9b31cd3d5 100644 --- a/src/sent_dm/types/message_send_params.py +++ b/src/sent_dm/types/message_send_params.py @@ -25,12 +25,15 @@ class MessageSendParams(TypedDict, total=False): for testing integrations without actual execution """ - template: Template + template: Optional[Template] """ SDK-style template reference: resolve by ID or by name, with optional parameters. """ + text: Optional[str] + """Plain-text (free-form) message body. Provide either Template or this.""" + to: SequenceNotStr[str] """List of recipient phone numbers in E.164 format (multi-recipient fan-out)""" diff --git a/src/sent_dm/types/profiles/tcr_campaign_with_use_cases.py b/src/sent_dm/types/profiles/tcr_campaign_with_use_cases.py index 6b22907e9..bdb5bdddf 100644 --- a/src/sent_dm/types/profiles/tcr_campaign_with_use_cases.py +++ b/src/sent_dm/types/profiles/tcr_campaign_with_use_cases.py @@ -39,6 +39,13 @@ class TcrCampaignWithUseCases(BaseDto): description: Optional[str] = None + has_submission_transaction: Optional[bool] = FieldInfo(alias="hasSubmissionTransaction", default=None) + """ + True when this campaign already has a billing transaction of reference type + TCR_CAMPAIGN_SUBMISSION (the one-time submission fee was charged). Populated + only by the campaigns-list path; defaults false on other responses. + """ + help_keywords: Optional[str] = FieldInfo(alias="helpKeywords", default=None) help_message: Optional[str] = FieldInfo(alias="helpMessage", default=None) diff --git a/tests/api_resources/test_messages.py b/tests/api_resources/test_messages.py index 3180dbd56..ef5bad6a0 100644 --- a/tests/api_resources/test_messages.py +++ b/tests/api_resources/test_messages.py @@ -143,6 +143,7 @@ def test_method_send_with_all_params(self, client: Sent) -> None: "order_id": "12345", }, }, + text=None, to=["+14155551234", "+14155555678"], idempotency_key="req_abc123_retry1", x_profile_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", @@ -299,6 +300,7 @@ async def test_method_send_with_all_params(self, async_client: AsyncSent) -> Non "order_id": "12345", }, }, + text=None, to=["+14155551234", "+14155555678"], idempotency_key="req_abc123_retry1", x_profile_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",