Skip to content

Commit 298934d

Browse files
author
stlc-bot
committed
Realign the Config With the Current Spec: Campaigns Models and Three Missing Endpoints
Stainless-Generated-From: 963c80bfc3e70cab92a46fa63d5378c0dc4b2678
1 parent 6c5357e commit 298934d

37 files changed

Lines changed: 1237 additions & 475 deletions

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
configured_endpoints: 40
1+
configured_endpoints: 43

api.md

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ Types:
5555
```python
5656
from sent_dm.types import (
5757
APIResponseTemplate,
58-
SentDmServicesCommonContractsPocOsAuthenticationConfig,
59-
SentDmServicesCommonContractsPocOsTemplateBody,
60-
SentDmServicesCommonContractsPocOsTemplateButton,
61-
SentDmServicesCommonContractsPocOsTemplateButtonProps,
62-
SentDmServicesCommonContractsPocOsTemplateFooter,
63-
SentDmServicesCommonContractsPocOsTemplateHeader,
58+
AuthenticationConfig,
6459
Template,
60+
TemplateBody,
6561
TemplateBodyContent,
62+
TemplateButton,
63+
TemplateButtonProps,
6664
TemplateDefinition,
65+
TemplateFooter,
66+
TemplateHeader,
6767
TemplateVariable,
6868
TemplateListResponse,
6969
)
@@ -85,13 +85,13 @@ Types:
8585
from sent_dm.types import (
8686
APIResponseOfProfileDetail,
8787
BillingContactInfo,
88+
BrandBusinessInfo,
89+
BrandComplianceInfo,
90+
BrandContactInfo,
8891
BrandsBrandData,
8992
DestinationCountry,
9093
PaymentDetails,
9194
ProfileDetail,
92-
SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandBusinessInfo,
93-
SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandComplianceInfo,
94-
SentDmServicesEndpointsCustomerApIv3ContractsRequestsBrandsBrandContactInfo,
9595
TcrBrandRelationship,
9696
TcrVertical,
9797
ProfileListResponse,
@@ -114,20 +114,21 @@ Types:
114114

115115
```python
116116
from sent_dm.types.profiles import (
117+
APIResponseOfBrandCampaign,
118+
APIResponseOfListOfBrandCampaign,
119+
BrandCampaign,
117120
CampaignData,
121+
CampaignUseCase,
122+
CampaignUseCaseData,
118123
MessagingUseCaseUs,
119-
SentDmServicesEndpointsCustomerApIv3ContractsRequestsCampaignsCampaignUseCaseData,
120-
CampaignCreateResponse,
121-
CampaignUpdateResponse,
122-
CampaignListResponse,
123124
)
124125
```
125126

126127
Methods:
127128

128-
- <code title="post /v3/profiles/{profileId}/campaigns">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">create</a>(profile_id, \*\*<a href="src/sent_dm/types/profiles/campaign_create_params.py">params</a>) -> <a href="./src/sent_dm/types/profiles/campaign_create_response.py">CampaignCreateResponse</a></code>
129-
- <code title="put /v3/profiles/{profileId}/campaigns/{campaignId}">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">update</a>(campaign_id, \*, profile_id, \*\*<a href="src/sent_dm/types/profiles/campaign_update_params.py">params</a>) -> <a href="./src/sent_dm/types/profiles/campaign_update_response.py">CampaignUpdateResponse</a></code>
130-
- <code title="get /v3/profiles/{profileId}/campaigns">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">list</a>(profile_id) -> <a href="./src/sent_dm/types/profiles/campaign_list_response.py">CampaignListResponse</a></code>
129+
- <code title="post /v3/profiles/{profileId}/campaigns">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">create</a>(profile_id, \*\*<a href="src/sent_dm/types/profiles/campaign_create_params.py">params</a>) -> <a href="./src/sent_dm/types/profiles/api_response_of_brand_campaign.py">APIResponseOfBrandCampaign</a></code>
130+
- <code title="put /v3/profiles/{profileId}/campaigns/{campaignId}">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">update</a>(campaign_id, \*, profile_id, \*\*<a href="src/sent_dm/types/profiles/campaign_update_params.py">params</a>) -> <a href="./src/sent_dm/types/profiles/api_response_of_brand_campaign.py">APIResponseOfBrandCampaign</a></code>
131+
- <code title="get /v3/profiles/{profileId}/campaigns">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">list</a>(profile_id) -> <a href="./src/sent_dm/types/profiles/api_response_of_list_of_brand_campaign.py">APIResponseOfListOfBrandCampaign</a></code>
131132
- <code title="delete /v3/profiles/{profileId}/campaigns/{campaignId}">client.profiles.campaigns.<a href="./src/sent_dm/resources/profiles/campaigns.py">delete</a>(campaign_id, \*, profile_id, \*\*<a href="src/sent_dm/types/profiles/campaign_delete_params.py">params</a>) -> None</code>
132133

133134
# Numbers
@@ -165,7 +166,13 @@ Methods:
165166
Types:
166167

167168
```python
168-
from sent_dm.types import APIResponseOfContact, ContactResponse, ContactListResponse
169+
from sent_dm.types import (
170+
APIResponseOfContact,
171+
APIResponseOfContactMessageSummary,
172+
ContactMessageSummary,
173+
ContactResponse,
174+
ContactListResponse,
175+
)
169176
```
170177

171178
Methods:
@@ -175,6 +182,20 @@ Methods:
175182
- <code title="patch /v3/contacts/{id}">client.contacts.<a href="./src/sent_dm/resources/contacts.py">update</a>(id, \*\*<a href="src/sent_dm/types/contact_update_params.py">params</a>) -> <a href="./src/sent_dm/types/api_response_of_contact.py">APIResponseOfContact</a></code>
176183
- <code title="get /v3/contacts">client.contacts.<a href="./src/sent_dm/resources/contacts.py">list</a>(\*\*<a href="src/sent_dm/types/contact_list_params.py">params</a>) -> <a href="./src/sent_dm/types/contact_list_response.py">ContactListResponse</a></code>
177184
- <code title="delete /v3/contacts/{id}">client.contacts.<a href="./src/sent_dm/resources/contacts.py">delete</a>(id, \*\*<a href="src/sent_dm/types/contact_delete_params.py">params</a>) -> None</code>
185+
- <code title="get /v3/contacts/{contactId}/message-summary">client.contacts.<a href="./src/sent_dm/resources/contacts.py">retrieve_message_summary</a>(contact_id) -> <a href="./src/sent_dm/types/api_response_of_contact_message_summary.py">APIResponseOfContactMessageSummary</a></code>
186+
187+
# Conversations
188+
189+
Types:
190+
191+
```python
192+
from sent_dm.types import APIResponseOfConversationMessagesList, ConversationMessagesList
193+
```
194+
195+
Methods:
196+
197+
- <code title="get /v3/conversations">client.conversations.<a href="./src/sent_dm/resources/conversations.py">list</a>(\*\*<a href="src/sent_dm/types/conversation_list_params.py">params</a>) -> <a href="./src/sent_dm/types/api_response_of_conversation_messages_list.py">APIResponseOfConversationMessagesList</a></code>
198+
- <code title="get /v3/conversations/{id}">client.conversations.<a href="./src/sent_dm/resources/conversations.py">list_messages</a>(id, \*\*<a href="src/sent_dm/types/conversation_list_messages_params.py">params</a>) -> <a href="./src/sent_dm/types/api_response_of_conversation_messages_list.py">APIResponseOfConversationMessagesList</a></code>
178199

179200
# Me
180201

src/sent_dm/_client.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,15 @@
3636
)
3737

3838
if TYPE_CHECKING:
39-
from .resources import me, users, numbers, contacts, messages, profiles, webhooks, templates
39+
from .resources import me, users, numbers, contacts, messages, profiles, webhooks, templates, conversations
4040
from .resources.me import MeResource, AsyncMeResource
4141
from .resources.users import UsersResource, AsyncUsersResource
4242
from .resources.numbers import NumbersResource, AsyncNumbersResource
4343
from .resources.contacts import ContactsResource, AsyncContactsResource
4444
from .resources.messages import MessagesResource, AsyncMessagesResource
4545
from .resources.webhooks import WebhooksResource, AsyncWebhooksResource
4646
from .resources.templates import TemplatesResource, AsyncTemplatesResource
47+
from .resources.conversations import ConversationsResource, AsyncConversationsResource
4748
from .resources.profiles.profiles import ProfilesResource, AsyncProfilesResource
4849

4950
__all__ = ["Timeout", "Transport", "ProxiesTypes", "RequestOptions", "Sent", "AsyncSent", "Client", "AsyncClient"]
@@ -162,6 +163,12 @@ def contacts(self) -> ContactsResource:
162163

163164
return ContactsResource(self)
164165

166+
@cached_property
167+
def conversations(self) -> ConversationsResource:
168+
from .resources.conversations import ConversationsResource
169+
170+
return ConversationsResource(self)
171+
165172
@cached_property
166173
def me(self) -> MeResource:
167174
"""Retrieve account details"""
@@ -402,6 +409,12 @@ def contacts(self) -> AsyncContactsResource:
402409

403410
return AsyncContactsResource(self)
404411

412+
@cached_property
413+
def conversations(self) -> AsyncConversationsResource:
414+
from .resources.conversations import AsyncConversationsResource
415+
416+
return AsyncConversationsResource(self)
417+
405418
@cached_property
406419
def me(self) -> AsyncMeResource:
407420
"""Retrieve account details"""
@@ -584,6 +597,12 @@ def contacts(self) -> contacts.ContactsResourceWithRawResponse:
584597

585598
return ContactsResourceWithRawResponse(self._client.contacts)
586599

600+
@cached_property
601+
def conversations(self) -> conversations.ConversationsResourceWithRawResponse:
602+
from .resources.conversations import ConversationsResourceWithRawResponse
603+
604+
return ConversationsResourceWithRawResponse(self._client.conversations)
605+
587606
@cached_property
588607
def me(self) -> me.MeResourceWithRawResponse:
589608
"""Retrieve account details"""
@@ -647,6 +666,12 @@ def contacts(self) -> contacts.AsyncContactsResourceWithRawResponse:
647666

648667
return AsyncContactsResourceWithRawResponse(self._client.contacts)
649668

669+
@cached_property
670+
def conversations(self) -> conversations.AsyncConversationsResourceWithRawResponse:
671+
from .resources.conversations import AsyncConversationsResourceWithRawResponse
672+
673+
return AsyncConversationsResourceWithRawResponse(self._client.conversations)
674+
650675
@cached_property
651676
def me(self) -> me.AsyncMeResourceWithRawResponse:
652677
"""Retrieve account details"""
@@ -710,6 +735,12 @@ def contacts(self) -> contacts.ContactsResourceWithStreamingResponse:
710735

711736
return ContactsResourceWithStreamingResponse(self._client.contacts)
712737

738+
@cached_property
739+
def conversations(self) -> conversations.ConversationsResourceWithStreamingResponse:
740+
from .resources.conversations import ConversationsResourceWithStreamingResponse
741+
742+
return ConversationsResourceWithStreamingResponse(self._client.conversations)
743+
713744
@cached_property
714745
def me(self) -> me.MeResourceWithStreamingResponse:
715746
"""Retrieve account details"""
@@ -773,6 +804,12 @@ def contacts(self) -> contacts.AsyncContactsResourceWithStreamingResponse:
773804

774805
return AsyncContactsResourceWithStreamingResponse(self._client.contacts)
775806

807+
@cached_property
808+
def conversations(self) -> conversations.AsyncConversationsResourceWithStreamingResponse:
809+
from .resources.conversations import AsyncConversationsResourceWithStreamingResponse
810+
811+
return AsyncConversationsResourceWithStreamingResponse(self._client.conversations)
812+
776813
@cached_property
777814
def me(self) -> me.AsyncMeResourceWithStreamingResponse:
778815
"""Retrieve account details"""

src/sent_dm/resources/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@
6464
TemplatesResourceWithStreamingResponse,
6565
AsyncTemplatesResourceWithStreamingResponse,
6666
)
67+
from .conversations import (
68+
ConversationsResource,
69+
AsyncConversationsResource,
70+
ConversationsResourceWithRawResponse,
71+
AsyncConversationsResourceWithRawResponse,
72+
ConversationsResourceWithStreamingResponse,
73+
AsyncConversationsResourceWithStreamingResponse,
74+
)
6775

6876
__all__ = [
6977
"WebhooksResource",
@@ -108,6 +116,12 @@
108116
"AsyncContactsResourceWithRawResponse",
109117
"ContactsResourceWithStreamingResponse",
110118
"AsyncContactsResourceWithStreamingResponse",
119+
"ConversationsResource",
120+
"AsyncConversationsResource",
121+
"ConversationsResourceWithRawResponse",
122+
"AsyncConversationsResourceWithRawResponse",
123+
"ConversationsResourceWithStreamingResponse",
124+
"AsyncConversationsResourceWithStreamingResponse",
111125
"MeResource",
112126
"AsyncMeResource",
113127
"MeResourceWithRawResponse",

src/sent_dm/resources/contacts.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .._base_client import make_request_options
2121
from ..types.contact_list_response import ContactListResponse
2222
from ..types.api_response_of_contact import APIResponseOfContact
23+
from ..types.api_response_of_contact_message_summary import APIResponseOfContactMessageSummary
2324

2425
__all__ = ["ContactsResource", "AsyncContactsResource"]
2526

@@ -310,6 +311,44 @@ def delete(
310311
cast_to=NoneType,
311312
)
312313

314+
def retrieve_message_summary(
315+
self,
316+
contact_id: str,
317+
*,
318+
x_profile_id: str | Omit = omit,
319+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
320+
# The extra values given here take precedence over values defined on the client or passed to this method.
321+
extra_headers: Headers | None = None,
322+
extra_query: Query | None = None,
323+
extra_body: Body | None = None,
324+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
325+
) -> APIResponseOfContactMessageSummary:
326+
"""
327+
Returns aggregate message counts, time bounds, channels used, and per-channel
328+
success/fail scores (each as a percentage 0-100 of messages on that channel) for
329+
one of your contacts. Successful terminal states: SENT/DELIVERED/READ for
330+
outbound, RECEIVED for inbound. Fail: FAILED.
331+
332+
Args:
333+
extra_headers: Send extra headers
334+
335+
extra_query: Add additional query parameters to the request
336+
337+
extra_body: Add additional JSON properties to the request
338+
339+
timeout: Override the client-level default timeout for this request, in seconds
340+
"""
341+
if not contact_id:
342+
raise ValueError(f"Expected a non-empty value for `contact_id` but received {contact_id!r}")
343+
extra_headers = {**strip_not_given({"x-profile-id": x_profile_id}), **(extra_headers or {})}
344+
return self._get(
345+
path_template("/v3/contacts/{contact_id}/message-summary", contact_id=contact_id),
346+
options=make_request_options(
347+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
348+
),
349+
cast_to=APIResponseOfContactMessageSummary,
350+
)
351+
313352

314353
class AsyncContactsResource(AsyncAPIResource):
315354
"""Create, update, and manage customer contact lists"""
@@ -597,6 +636,44 @@ async def delete(
597636
cast_to=NoneType,
598637
)
599638

639+
async def retrieve_message_summary(
640+
self,
641+
contact_id: str,
642+
*,
643+
x_profile_id: str | Omit = omit,
644+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
645+
# The extra values given here take precedence over values defined on the client or passed to this method.
646+
extra_headers: Headers | None = None,
647+
extra_query: Query | None = None,
648+
extra_body: Body | None = None,
649+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
650+
) -> APIResponseOfContactMessageSummary:
651+
"""
652+
Returns aggregate message counts, time bounds, channels used, and per-channel
653+
success/fail scores (each as a percentage 0-100 of messages on that channel) for
654+
one of your contacts. Successful terminal states: SENT/DELIVERED/READ for
655+
outbound, RECEIVED for inbound. Fail: FAILED.
656+
657+
Args:
658+
extra_headers: Send extra headers
659+
660+
extra_query: Add additional query parameters to the request
661+
662+
extra_body: Add additional JSON properties to the request
663+
664+
timeout: Override the client-level default timeout for this request, in seconds
665+
"""
666+
if not contact_id:
667+
raise ValueError(f"Expected a non-empty value for `contact_id` but received {contact_id!r}")
668+
extra_headers = {**strip_not_given({"x-profile-id": x_profile_id}), **(extra_headers or {})}
669+
return await self._get(
670+
path_template("/v3/contacts/{contact_id}/message-summary", contact_id=contact_id),
671+
options=make_request_options(
672+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
673+
),
674+
cast_to=APIResponseOfContactMessageSummary,
675+
)
676+
600677

601678
class ContactsResourceWithRawResponse:
602679
def __init__(self, contacts: ContactsResource) -> None:
@@ -617,6 +694,9 @@ def __init__(self, contacts: ContactsResource) -> None:
617694
self.delete = to_raw_response_wrapper(
618695
contacts.delete,
619696
)
697+
self.retrieve_message_summary = to_raw_response_wrapper(
698+
contacts.retrieve_message_summary,
699+
)
620700

621701

622702
class AsyncContactsResourceWithRawResponse:
@@ -638,6 +718,9 @@ def __init__(self, contacts: AsyncContactsResource) -> None:
638718
self.delete = async_to_raw_response_wrapper(
639719
contacts.delete,
640720
)
721+
self.retrieve_message_summary = async_to_raw_response_wrapper(
722+
contacts.retrieve_message_summary,
723+
)
641724

642725

643726
class ContactsResourceWithStreamingResponse:
@@ -659,6 +742,9 @@ def __init__(self, contacts: ContactsResource) -> None:
659742
self.delete = to_streamed_response_wrapper(
660743
contacts.delete,
661744
)
745+
self.retrieve_message_summary = to_streamed_response_wrapper(
746+
contacts.retrieve_message_summary,
747+
)
662748

663749

664750
class AsyncContactsResourceWithStreamingResponse:
@@ -680,3 +766,6 @@ def __init__(self, contacts: AsyncContactsResource) -> None:
680766
self.delete = async_to_streamed_response_wrapper(
681767
contacts.delete,
682768
)
769+
self.retrieve_message_summary = async_to_streamed_response_wrapper(
770+
contacts.retrieve_message_summary,
771+
)

0 commit comments

Comments
 (0)