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 @@
{
".": "0.18.3"
".": "0.19.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 40
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sent%2Fsent-dm-2981838429a7115dde77b47f776e620afcaa1c87bedc38ea53bf94d03b0a5349.yml
openapi_spec_hash: f55688cee43db3be0973588b9c217b10
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sent%2Fsent-dm-f35f1b37bbee180194767c8644de479a1ce7166e863c4cc22f76115a7adac08f.yml
openapi_spec_hash: b62ddef06e729720dbae93de3efa0898
config_hash: 405ade725d72d542c60de821a127411b
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.19.0 (2026-04-20)

Full Changelog: [v0.18.3...v0.19.0](https://github.com/sentdm/sent-dm-python/compare/v0.18.3...v0.19.0)

### Features

* **api:** api update ([0346524](https://github.com/sentdm/sent-dm-python/commit/0346524d6ff95911a85783f0b42e0f626f199e75))

## 0.18.3 (2026-04-20)

Full Changelog: [v0.18.2...v0.18.3](https://github.com/sentdm/sent-dm-python/compare/v0.18.2...v0.18.3)
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 = "sentdm"
version = "0.18.3"
version = "0.19.0"
description = "The official Python library for the Sent API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/sent_dm/_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__ = "sent_dm"
__version__ = "0.18.3" # x-release-please-version
__version__ = "0.19.0" # x-release-please-version
10 changes: 9 additions & 1 deletion src/sent_dm/resources/webhooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from __future__ import annotations

from typing import Optional
from typing import Dict, Optional

import httpx

Expand Down Expand Up @@ -63,6 +63,7 @@ def create(
*,
display_name: str | Omit = omit,
endpoint_url: str | Omit = omit,
event_filters: Optional[Dict[str, SequenceNotStr[str]]] | Omit = omit,
event_types: SequenceNotStr[str] | Omit = omit,
retry_count: int | Omit = omit,
sandbox: bool | Omit = omit,
Expand Down Expand Up @@ -106,6 +107,7 @@ def create(
{
"display_name": display_name,
"endpoint_url": endpoint_url,
"event_filters": event_filters,
"event_types": event_types,
"retry_count": retry_count,
"sandbox": sandbox,
Expand Down Expand Up @@ -160,6 +162,7 @@ def update(
*,
display_name: str | Omit = omit,
endpoint_url: str | Omit = omit,
event_filters: Optional[Dict[str, SequenceNotStr[str]]] | Omit = omit,
event_types: SequenceNotStr[str] | Omit = omit,
retry_count: int | Omit = omit,
sandbox: bool | Omit = omit,
Expand Down Expand Up @@ -205,6 +208,7 @@ def update(
{
"display_name": display_name,
"endpoint_url": endpoint_url,
"event_filters": event_filters,
"event_types": event_types,
"retry_count": retry_count,
"sandbox": sandbox,
Expand Down Expand Up @@ -571,6 +575,7 @@ async def create(
*,
display_name: str | Omit = omit,
endpoint_url: str | Omit = omit,
event_filters: Optional[Dict[str, SequenceNotStr[str]]] | Omit = omit,
event_types: SequenceNotStr[str] | Omit = omit,
retry_count: int | Omit = omit,
sandbox: bool | Omit = omit,
Expand Down Expand Up @@ -614,6 +619,7 @@ async def create(
{
"display_name": display_name,
"endpoint_url": endpoint_url,
"event_filters": event_filters,
"event_types": event_types,
"retry_count": retry_count,
"sandbox": sandbox,
Expand Down Expand Up @@ -668,6 +674,7 @@ async def update(
*,
display_name: str | Omit = omit,
endpoint_url: str | Omit = omit,
event_filters: Optional[Dict[str, SequenceNotStr[str]]] | Omit = omit,
event_types: SequenceNotStr[str] | Omit = omit,
retry_count: int | Omit = omit,
sandbox: bool | Omit = omit,
Expand Down Expand Up @@ -713,6 +720,7 @@ async def update(
{
"display_name": display_name,
"endpoint_url": endpoint_url,
"event_filters": event_filters,
"event_types": event_types,
"retry_count": retry_count,
"sandbox": sandbox,
Expand Down
9 changes: 9 additions & 0 deletions src/sent_dm/types/message_retrieve_activities_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
from typing import List, Optional
from datetime import datetime

from pydantic import Field as FieldInfo

from .._models import BaseModel
from .api_meta import APIMeta
from .error_detail import ErrorDetail
Expand All @@ -22,6 +24,13 @@ class DataActivity(BaseModel):
description: Optional[str] = None
"""Human-readable description of the activity"""

from_: Optional[str] = FieldInfo(alias="from", default=None)
"""
Sender phone number for this activity (the customer's sending number for
outbound, the external sender for inbound). Null when not reported by the
provider.
"""

price: Optional[str] = None
"""
Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
Expand Down
3 changes: 3 additions & 0 deletions src/sent_dm/types/webhook_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from __future__ import annotations

from typing import Dict, Optional
from typing_extensions import Annotated, TypedDict

from .._types import SequenceNotStr
Expand All @@ -15,6 +16,8 @@ class WebhookCreateParams(TypedDict, total=False):

endpoint_url: str

event_filters: Optional[Dict[str, SequenceNotStr[str]]]

event_types: SequenceNotStr[str]

retry_count: int
Expand Down
4 changes: 4 additions & 0 deletions src/sent_dm/types/webhook_list_event_types_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@ class DataEventType(BaseModel):

display_name: Optional[str] = None

event_type: Optional[str] = None

is_active: Optional[bool] = None

name: Optional[str] = None

sub_types: Optional[List[object]] = None


class Data(BaseModel):
"""The response data (null if error)"""
Expand Down
4 changes: 3 additions & 1 deletion src/sent_dm/types/webhook_response.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import List, Optional
from typing import Dict, List, Optional
from datetime import datetime

from .._models import BaseModel
Expand All @@ -19,6 +19,8 @@ class WebhookResponse(BaseModel):

endpoint_url: Optional[str] = None

event_filters: Optional[Dict[str, List[str]]] = None

event_types: Optional[List[str]] = None

is_active: Optional[bool] = None
Expand Down
3 changes: 3 additions & 0 deletions src/sent_dm/types/webhook_update_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from __future__ import annotations

from typing import Dict, Optional
from typing_extensions import Annotated, TypedDict

from .._types import SequenceNotStr
Expand All @@ -15,6 +16,8 @@ class WebhookUpdateParams(TypedDict, total=False):

endpoint_url: str

event_filters: Optional[Dict[str, SequenceNotStr[str]]]

event_types: SequenceNotStr[str]

retry_count: int
Expand Down
12 changes: 8 additions & 4 deletions tests/api_resources/test_webhooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ def test_method_create_with_all_params(self, client: Sent) -> None:
webhook = client.webhooks.create(
display_name="Order Notifications",
endpoint_url="https://example.com/webhooks/orders",
event_types=["messages", "templates"],
event_filters={"message": ["delivered", "failed"]},
event_types=["message", "templates"],
retry_count=3,
sandbox=False,
timeout_seconds=30,
Expand Down Expand Up @@ -133,7 +134,8 @@ def test_method_update_with_all_params(self, client: Sent) -> None:
id="d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
display_name="Updated Order Notifications",
endpoint_url="https://example.com/webhooks/orders-v2",
event_types=["messages", "templates"],
event_filters={"message": ["delivered", "failed"]},
event_types=["message", "templates"],
retry_count=5,
sandbox=False,
timeout_seconds=60,
Expand Down Expand Up @@ -557,7 +559,8 @@ async def test_method_create_with_all_params(self, async_client: AsyncSent) -> N
webhook = await async_client.webhooks.create(
display_name="Order Notifications",
endpoint_url="https://example.com/webhooks/orders",
event_types=["messages", "templates"],
event_filters={"message": ["delivered", "failed"]},
event_types=["message", "templates"],
retry_count=3,
sandbox=False,
timeout_seconds=30,
Expand Down Expand Up @@ -654,7 +657,8 @@ async def test_method_update_with_all_params(self, async_client: AsyncSent) -> N
id="d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
display_name="Updated Order Notifications",
endpoint_url="https://example.com/webhooks/orders-v2",
event_types=["messages", "templates"],
event_filters={"message": ["delivered", "failed"]},
event_types=["message", "templates"],
retry_count=5,
sandbox=False,
timeout_seconds=60,
Expand Down
Loading