syllable-sdk 0.36.4__py3-none-any.whl → 0.36.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
syllable_sdk/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "syllable-sdk"
6
- __version__: str = "0.36.4"
6
+ __version__: str = "0.36.10"
7
7
  __openapi_doc_version__: str = "0.0.2"
8
- __gen_version__: str = "2.692.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.36.4 2.692.0 0.0.2 syllable-sdk"
8
+ __gen_version__: str = "2.698.4"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.36.10 2.698.4 0.0.2 syllable-sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -2,12 +2,14 @@
2
2
 
3
3
  import httpx
4
4
  from typing import Optional
5
+ from dataclasses import dataclass
5
6
 
6
7
  from syllable_sdk.errors import SyllableSDKError
7
8
 
8
9
  MAX_MESSAGE_LEN = 10_000
9
10
 
10
11
 
12
+ @dataclass(frozen=True)
11
13
  class APIError(SyllableSDKError):
12
14
  """The fallback error class if no more specific error class is matched."""
13
15
 
@@ -1,6 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from dataclasses import dataclass, field
4
5
  import httpx
5
6
  from syllable_sdk.errors import SyllableSDKError
6
7
  from syllable_sdk.models import validationerror as models_validationerror
@@ -12,8 +13,9 @@ class HTTPValidationErrorData(BaseModel):
12
13
  detail: Optional[List[models_validationerror.ValidationError]] = None
13
14
 
14
15
 
16
+ @dataclass(frozen=True)
15
17
  class HTTPValidationError(SyllableSDKError):
16
- data: HTTPValidationErrorData
18
+ data: HTTPValidationErrorData = field(hash=False)
17
19
 
18
20
  def __init__(
19
21
  self,
@@ -23,4 +25,4 @@ class HTTPValidationError(SyllableSDKError):
23
25
  ):
24
26
  message = body or raw_response.text
25
27
  super().__init__(message, raw_response, body)
26
- self.data = data
28
+ object.__setattr__(self, "data", data)
@@ -1,12 +1,16 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
+ from dataclasses import dataclass
4
+
5
+
6
+ @dataclass(frozen=True)
3
7
  class NoResponseError(Exception):
4
8
  """Error raised when no HTTP response is received from the server."""
5
9
 
6
10
  message: str
7
11
 
8
12
  def __init__(self, message: str = "No response received"):
9
- self.message = message
13
+ object.__setattr__(self, "message", message)
10
14
  super().__init__(message)
11
15
 
12
16
  def __str__(self):
@@ -2,10 +2,12 @@
2
2
 
3
3
  import httpx
4
4
  from typing import Optional
5
+ from dataclasses import dataclass
5
6
 
6
7
  from syllable_sdk.errors import SyllableSDKError
7
8
 
8
9
 
10
+ @dataclass(frozen=True)
9
11
  class ResponseValidationError(SyllableSDKError):
10
12
  """Error raised when there is a type mismatch between the response data and the expected Pydantic model."""
11
13
 
@@ -2,25 +2,29 @@
2
2
 
3
3
  import httpx
4
4
  from typing import Optional
5
+ from dataclasses import dataclass, field
5
6
 
6
7
 
8
+ @dataclass(frozen=True)
7
9
  class SyllableSDKError(Exception):
8
10
  """The base class for all HTTP error responses."""
9
11
 
10
12
  message: str
11
13
  status_code: int
12
14
  body: str
13
- headers: httpx.Headers
14
- raw_response: httpx.Response
15
+ headers: httpx.Headers = field(hash=False)
16
+ raw_response: httpx.Response = field(hash=False)
15
17
 
16
18
  def __init__(
17
19
  self, message: str, raw_response: httpx.Response, body: Optional[str] = None
18
20
  ):
19
- self.message = message
20
- self.status_code = raw_response.status_code
21
- self.body = body if body is not None else raw_response.text
22
- self.headers = raw_response.headers
23
- self.raw_response = raw_response
21
+ object.__setattr__(self, "message", message)
22
+ object.__setattr__(self, "status_code", raw_response.status_code)
23
+ object.__setattr__(
24
+ self, "body", body if body is not None else raw_response.text
25
+ )
26
+ object.__setattr__(self, "headers", raw_response.headers)
27
+ object.__setattr__(self, "raw_response", raw_response)
24
28
 
25
29
  def __str__(self):
26
30
  return self.message
@@ -11,6 +11,7 @@ class CampaignProperties(str, Enum):
11
11
  DAILY_START_TIME = "daily_start_time"
12
12
  DAILY_END_TIME = "daily_end_time"
13
13
  SOURCE = "source"
14
+ MODE = "mode"
14
15
  CALLER_ID = "caller_id"
15
16
  UPDATED_AT = "updated_at"
16
17
  LABEL = "label"
@@ -31,6 +31,10 @@ class OutboundCampaignTypedDict(TypedDict):
31
31
  r"""Email of user who last updated campaign"""
32
32
  description: NotRequired[Nullable[str]]
33
33
  r"""Description of campaign"""
34
+ mode: NotRequired[Nullable[str]]
35
+ r"""Mode of the campaign (e.g. voice, sms)"""
36
+ sms_session_ttl: NotRequired[Nullable[int]]
37
+ r"""Time to live for SMS session in minutes"""
34
38
  label: NotRequired[Nullable[str]]
35
39
  r"""Label for campaign (DEPRECATED - use labels instead)"""
36
40
  labels: NotRequired[Nullable[List[str]]]
@@ -77,6 +81,12 @@ class OutboundCampaign(BaseModel):
77
81
  description: OptionalNullable[str] = UNSET
78
82
  r"""Description of campaign"""
79
83
 
84
+ mode: OptionalNullable[str] = UNSET
85
+ r"""Mode of the campaign (e.g. voice, sms)"""
86
+
87
+ sms_session_ttl: OptionalNullable[int] = UNSET
88
+ r"""Time to live for SMS session in minutes"""
89
+
80
90
  label: Annotated[
81
91
  OptionalNullable[str],
82
92
  pydantic.Field(
@@ -119,6 +129,8 @@ class OutboundCampaign(BaseModel):
119
129
  def serialize_model(self, handler):
120
130
  optional_fields = [
121
131
  "description",
132
+ "mode",
133
+ "sms_session_ttl",
122
134
  "label",
123
135
  "labels",
124
136
  "daily_start_time",
@@ -133,6 +145,8 @@ class OutboundCampaign(BaseModel):
133
145
  ]
134
146
  nullable_fields = [
135
147
  "description",
148
+ "mode",
149
+ "sms_session_ttl",
136
150
  "label",
137
151
  "labels",
138
152
  "daily_start_time",
@@ -26,6 +26,10 @@ class OutboundCampaignInputTypedDict(TypedDict):
26
26
  r"""Days of the week when campaign is active"""
27
27
  description: NotRequired[Nullable[str]]
28
28
  r"""Description of campaign"""
29
+ mode: NotRequired[Nullable[str]]
30
+ r"""Mode of the campaign (e.g. voice, sms)"""
31
+ sms_session_ttl: NotRequired[Nullable[int]]
32
+ r"""Time to live for SMS session in minutes"""
29
33
  label: NotRequired[Nullable[str]]
30
34
  r"""Label for campaign (DEPRECATED - use labels instead)"""
31
35
  labels: NotRequired[Nullable[List[str]]]
@@ -60,6 +64,12 @@ class OutboundCampaignInput(BaseModel):
60
64
  description: OptionalNullable[str] = UNSET
61
65
  r"""Description of campaign"""
62
66
 
67
+ mode: OptionalNullable[str] = UNSET
68
+ r"""Mode of the campaign (e.g. voice, sms)"""
69
+
70
+ sms_session_ttl: OptionalNullable[int] = UNSET
71
+ r"""Time to live for SMS session in minutes"""
72
+
63
73
  label: Annotated[
64
74
  OptionalNullable[str],
65
75
  pydantic.Field(
@@ -93,6 +103,8 @@ class OutboundCampaignInput(BaseModel):
93
103
  def serialize_model(self, handler):
94
104
  optional_fields = [
95
105
  "description",
106
+ "mode",
107
+ "sms_session_ttl",
96
108
  "label",
97
109
  "labels",
98
110
  "daily_start_time",
@@ -104,6 +116,8 @@ class OutboundCampaignInput(BaseModel):
104
116
  ]
105
117
  nullable_fields = [
106
118
  "description",
119
+ "mode",
120
+ "sms_session_ttl",
107
121
  "label",
108
122
  "labels",
109
123
  "daily_start_time",
@@ -23,6 +23,12 @@ class TelephonyConfigurationsTypedDict(TypedDict):
23
23
  r"""Total input timeout"""
24
24
  output_padding: NotRequired[Nullable[float]]
25
25
  r"""Number of seconds to start listening to user input before assistant speech ends"""
26
+ interruptibility: NotRequired[Nullable[str]]
27
+ r"""Interruptibility setting for user input.Valid values: none, dtmf_only, speech_only, all"""
28
+ passive_speech_input_enabled: NotRequired[Nullable[bool]]
29
+ r"""Whether passive speech input is enabled (input while assistant is speaking)"""
30
+ passive_input_start: NotRequired[Nullable[float]]
31
+ r"""Waiting time to start passive input (in seconds) after start of assistant speech"""
26
32
 
27
33
 
28
34
  class TelephonyConfigurations(BaseModel):
@@ -41,6 +47,15 @@ class TelephonyConfigurations(BaseModel):
41
47
  output_padding: OptionalNullable[float] = UNSET
42
48
  r"""Number of seconds to start listening to user input before assistant speech ends"""
43
49
 
50
+ interruptibility: OptionalNullable[str] = UNSET
51
+ r"""Interruptibility setting for user input.Valid values: none, dtmf_only, speech_only, all"""
52
+
53
+ passive_speech_input_enabled: OptionalNullable[bool] = UNSET
54
+ r"""Whether passive speech input is enabled (input while assistant is speaking)"""
55
+
56
+ passive_input_start: OptionalNullable[float] = UNSET
57
+ r"""Waiting time to start passive input (in seconds) after start of assistant speech"""
58
+
44
59
  @model_serializer(mode="wrap")
45
60
  def serialize_model(self, handler):
46
61
  optional_fields = [
@@ -49,6 +64,9 @@ class TelephonyConfigurations(BaseModel):
49
64
  "post_dtmf_input_timeout",
50
65
  "overall_input_timeout",
51
66
  "output_padding",
67
+ "interruptibility",
68
+ "passive_speech_input_enabled",
69
+ "passive_input_start",
52
70
  ]
53
71
  nullable_fields = [
54
72
  "pre_input_timeout",
@@ -56,6 +74,9 @@ class TelephonyConfigurations(BaseModel):
56
74
  "post_dtmf_input_timeout",
57
75
  "overall_input_timeout",
58
76
  "output_padding",
77
+ "interruptibility",
78
+ "passive_speech_input_enabled",
79
+ "passive_input_start",
59
80
  ]
60
81
  null_default_fields = []
61
82
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: syllable-sdk
3
- Version: 0.36.4
3
+ Version: 0.36.10
4
4
  Summary: Python Client SDK Generated by Speakeasy.
5
5
  Author: Syllable
6
6
  Requires-Python: >=3.9.2
@@ -9,6 +9,7 @@ Classifier: Programming Language :: Python :: 3.10
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
12
13
  Requires-Dist: httpcore (>=1.0.9)
13
14
  Requires-Dist: httpx (>=0.28.1)
14
15
  Requires-Dist: pydantic (>=2.11.2)
@@ -3,7 +3,7 @@ syllable_sdk/_hooks/__init__.py,sha256=9_7W5jAYw8rcO8Kfc-Ty-lB82BHfksAJJpVFb_UeU
3
3
  syllable_sdk/_hooks/registration.py,sha256=1QZB41w6If7I9dXiOSQx6dhSc6BPWrnI5Q5bMOr4iVA,624
4
4
  syllable_sdk/_hooks/sdkhooks.py,sha256=aRu2TMpxilLKDrG6EIy6uQd6IrBH7kaHOoVkd7GIcus,2562
5
5
  syllable_sdk/_hooks/types.py,sha256=uwJkn18g4_rLZhVtKdE6Ed5YcCjGWSqVgN9-PWqV7Ho,3053
6
- syllable_sdk/_version.py,sha256=EfVKM6VJx0vLuslF6bRyUT2UBG19eF5AVJXh_Y7vPAk,468
6
+ syllable_sdk/_version.py,sha256=6lpKcLqOtgR4Iz2EFCA2FrLHSKf4rR1JXT8Otg-1KcE,470
7
7
  syllable_sdk/agents.py,sha256=8Mi55XEKRofGeW9iS5haXK-7wEd7Yo5M2ROH_x5sepQ,46796
8
8
  syllable_sdk/basesdk.py,sha256=PCXez-bS_sOzXpRo7awDMzW4zqGJtktHytrlQfG1HNw,12211
9
9
  syllable_sdk/batches.py,sha256=qgI5PRkdgLdaJl4DPfs4mBJrB0OY_CCDePYntyjleSs,73059
@@ -14,11 +14,11 @@ syllable_sdk/custom_messages.py,sha256=xM3Sy-bdXPYX-qUJUl_CfgjR0HtEpN32u1uXqc1X9
14
14
  syllable_sdk/dashboards.py,sha256=qvzxTiPnzJTmip02EPyGP-qaCgBtpZ4OPYJa2IGH1nw,45442
15
15
  syllable_sdk/data_sources.py,sha256=ReOnnz4OYQupXW6aS7iHNJgK84aJEWN7vnuqn1eCYAs,40909
16
16
  syllable_sdk/errors/__init__.py,sha256=b7YCOOsKA0VcV2bgdwU0w8lITftThPQ5QHX8sTisILk,2098
17
- syllable_sdk/errors/apierror.py,sha256=CM3pZTIA9QnXmav_lDlcGgwyYLJ4pmMtni4Ck-iwFow,1234
18
- syllable_sdk/errors/httpvalidationerror.py,sha256=wBTQY0G7zOW5nGyKkZDkEDc51htoMJTVBXO1mVYFh-4,794
19
- syllable_sdk/errors/no_response_error.py,sha256=FQG44Lq6uF7uUlzbUYfM3dJon6sbqXzJ0Ri6YrDdsEs,380
20
- syllable_sdk/errors/responsevalidationerror.py,sha256=yjbGMdguC5CxzL9DOykZYl-EF7ogz7V-fbWdttSYf4E,701
21
- syllable_sdk/errors/syllablesdkerror.py,sha256=KM5G7mkzhdFyax1X6fj5sIjRGP-bxLanyccRMKbhqcE,718
17
+ syllable_sdk/errors/apierror.py,sha256=qamXjFSUPb1_Zrgi9QlyjcMqyft-Akfn31SH_o8qaII,1292
18
+ syllable_sdk/errors/httpvalidationerror.py,sha256=HHZfn92D089-C4bGqjRoWN6And75WdRqOMOnrhBZMY0,901
19
+ syllable_sdk/errors/no_response_error.py,sha256=Kb7hmMtDo72KrLSjUEDNeQxvzZiVxUjOZym8TPdZp5Y,462
20
+ syllable_sdk/errors/responsevalidationerror.py,sha256=tcvvc4TD_cHRydZVlODuEnJOdG03ynnGGczbf2a8JSM,759
21
+ syllable_sdk/errors/syllablesdkerror.py,sha256=3XR2fsR8p2S7jwhawZW9ly_kzH5Ikf8kr0iCMZBcAO0,955
22
22
  syllable_sdk/events.py,sha256=POKcChr-8dU3XjIcMwlEqAn4BmtBZRzDplMe2r-hI3I,10604
23
23
  syllable_sdk/folders.py,sha256=Yf8zZ3TY38nIWx8HEjmC13KciWxFYHCTUBOzRYAEdZ8,69452
24
24
  syllable_sdk/full_summary.py,sha256=OMOJu6wE6IdiI54w72ljqKYvDbxzXvPu8lgfQhbniz0,7487
@@ -58,7 +58,7 @@ syllable_sdk/models/body_organizations_delete.py,sha256=-ooSAYXKGB45bRpcTJrKJhyL
58
58
  syllable_sdk/models/body_organizations_update.py,sha256=hwiy1OqKWjA-eN1FJc3tybqePUgrp7Y1ysGIk_rYUCI,3702
59
59
  syllable_sdk/models/body_outbound_batch_delete.py,sha256=c-3MzefgLGTnZiYtLKb28AkOMwtCImkMLJg932g5PLY,425
60
60
  syllable_sdk/models/body_outbound_batch_upload.py,sha256=_W1aXZOpZX1KO1GaUJhMAkjEgV1v9nLQazyWcQ6AjYY,1313
61
- syllable_sdk/models/campaignproperties.py,sha256=06sF5NzEiwmyQ6WLgHxSccErd2EnmpYge5FI7CFe4hI,467
61
+ syllable_sdk/models/campaignproperties.py,sha256=WLVZr50vP5YDKhRCexMcMR_pCpeKqV1N--PFgy3qgrY,485
62
62
  syllable_sdk/models/channel.py,sha256=qdavKRBPraONuozprbVC84BJwfg0vtOAa7Laqyuw_oE,2724
63
63
  syllable_sdk/models/channel_targets_createop.py,sha256=YmOseJWuOWtE9AApMqju7dGO-I-zEHq0NQ_wGvIl6Ck,877
64
64
  syllable_sdk/models/channel_targets_deleteop.py,sha256=AzJzm--VepFhuGZ7p7zysc-h9u7HXzQ4EctxH-mbI0c,657
@@ -223,8 +223,8 @@ syllable_sdk/models/outbound_campaign_deleteop.py,sha256=jSRM2gNWDel8UFFXMRXYR81
223
223
  syllable_sdk/models/outbound_campaign_get_by_idop.py,sha256=4O1j5lDl2cgXwXYK9fH-EkeOQxujfNCQRT9g8gQCfWA,512
224
224
  syllable_sdk/models/outbound_campaign_listop.py,sha256=yGQnD8Ne8s7qUttiJ1RTWq1ldsnuu5DiJhIf0wD3BJA,5053
225
225
  syllable_sdk/models/outbound_campaign_updateop.py,sha256=-smpMJnsTeGzzPTfBg9CTM7uL7RJct8U2Ve3qMPJPj0,833
226
- syllable_sdk/models/outboundcampaign.py,sha256=WK7wVemC-BOAiRr3zAkEhwHWF9Nxw-9vwYrd72jPoU8,5102
227
- syllable_sdk/models/outboundcampaigninput.py,sha256=iq2ZoDoieZj3jUI6A2P0ISYfXKj5NHcSnwxU6kVco5E,4236
226
+ syllable_sdk/models/outboundcampaign.py,sha256=Zy54OPWC8NF8HOTejM8WpN228uZKDzpSAW24B5VU5ok,5584
227
+ syllable_sdk/models/outboundcampaigninput.py,sha256=lp5UyG7KhxdxILJgecyeZJd7JzmDtW3KndypcD_tsZw,4718
228
228
  syllable_sdk/models/permissiongroupresponse.py,sha256=-2y4Mm5p7k8A-oOrqEVrm-XeHVdwjYWl1nbsstkmaVg,965
229
229
  syllable_sdk/models/permissionresponse.py,sha256=UieyRpT5ubQ-08bx3DMdIkGi9KYbJaLe4EOxdg15bVQ,1808
230
230
  syllable_sdk/models/post_get_dashboardop.py,sha256=hJgtyzQsZ9Qyc5mqpfULcwHqXyAM8JucU5qRq6_VJ9g,504
@@ -286,7 +286,7 @@ syllable_sdk/models/takeouts_get_by_job_idop.py,sha256=vFpjQ3wUfS3UeD3pkX6S07AJw
286
286
  syllable_sdk/models/takeouts_get_fileop.py,sha256=x_BGUgt6co6HOHFPOsSIOxpZ8D4KVIjBv7ZifL0l0YQ,620
287
287
  syllable_sdk/models/takeoutstatusresponse.py,sha256=U83D5jjff7LMEdFg7PAPfO-RSDW094TiXhTsnrAHUPs,1766
288
288
  syllable_sdk/models/targetmodes.py,sha256=dR2veCCcFJRRwz1tUqq41d5JvChpcamnUQXpEx1dEnw,309
289
- syllable_sdk/models/telephonyconfigurations.py,sha256=EStakiggOEZFftOBRCd_rHX7OAqAPuLbwCm-7yPl4KU,2842
289
+ syllable_sdk/models/telephonyconfigurations.py,sha256=0ZmpJMaCYs4B0njs0zh63WuI1LZ_Kv6HmJNQlzLq_Ew,3962
290
290
  syllable_sdk/models/testmessage.py,sha256=e3kHJe_E78zGcNKZ5azTTcZjQxtQUsf3F8GPyUDCIPA,3365
291
291
  syllable_sdk/models/testmessageresponse.py,sha256=Ya7G0PtfNzz3B5CSILrarNclcoEqkwmSE-Qi5ioRAfo,2335
292
292
  syllable_sdk/models/tool_deleteop.py,sha256=M_vEFwiOgFbgrqnKRypbrObtU8EIavsOR9hPvVq_Ups,629
@@ -373,6 +373,6 @@ syllable_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,525
373
373
  syllable_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
374
374
  syllable_sdk/v1.py,sha256=zMPQz7GtZxDuziCcmhKk2IS7EfiaW9WfiSIqAGbb-o4,53448
375
375
  syllable_sdk/workflows.py,sha256=kQPJzssdldotkipoWzu1ddas4IKbpFdXkGFDwDkWt1M,64777
376
- syllable_sdk-0.36.4.dist-info/METADATA,sha256=RrvKj4RNQaw2LHjEoDvVBWAjL-71Njo_xhM1fBkrsSs,46165
377
- syllable_sdk-0.36.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
378
- syllable_sdk-0.36.4.dist-info/RECORD,,
376
+ syllable_sdk-0.36.10.dist-info/METADATA,sha256=XYux7pSwfXEGmAbBmvkqkkpYw8bO4x5EkwOdQv6Czq4,46217
377
+ syllable_sdk-0.36.10.dist-info/WHEEL,sha256=M5asmiAlL6HEcOq52Yi5mmk9KmTVjY2RDPtO4p9DMrc,88
378
+ syllable_sdk-0.36.10.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
2
+ Generator: poetry-core 2.2.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any