syllable-sdk 0.37.5__py3-none-any.whl → 0.38.16__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.
Files changed (63) hide show
  1. syllable_sdk/_version.py +3 -3
  2. syllable_sdk/agents.py +12 -12
  3. syllable_sdk/batches.py +18 -18
  4. syllable_sdk/campaigns.py +10 -10
  5. syllable_sdk/channels.py +8 -8
  6. syllable_sdk/conversations.py +2 -2
  7. syllable_sdk/custom_messages.py +10 -10
  8. syllable_sdk/dashboards.py +12 -12
  9. syllable_sdk/data_sources.py +10 -10
  10. syllable_sdk/errors/apierror.py +1 -1
  11. syllable_sdk/errors/httpvalidationerror.py +1 -1
  12. syllable_sdk/errors/no_response_error.py +1 -1
  13. syllable_sdk/errors/responsevalidationerror.py +1 -1
  14. syllable_sdk/errors/syllablesdkerror.py +1 -1
  15. syllable_sdk/events.py +2 -2
  16. syllable_sdk/folders.py +16 -16
  17. syllable_sdk/full_summary.py +2 -2
  18. syllable_sdk/incidents.py +12 -12
  19. syllable_sdk/insights_sdk.py +2 -2
  20. syllable_sdk/insights_tools.py +14 -14
  21. syllable_sdk/language_groups.py +12 -12
  22. syllable_sdk/latency.py +2 -2
  23. syllable_sdk/models/__init__.py +59 -0
  24. syllable_sdk/models/body_pronunciations_upload_csv.py +46 -0
  25. syllable_sdk/models/campaignproperties.py +1 -0
  26. syllable_sdk/models/dictionarymetadata.py +24 -0
  27. syllable_sdk/models/incidentcreaterequest.py +10 -4
  28. syllable_sdk/models/incidentresponse.py +10 -4
  29. syllable_sdk/models/incidentupdaterequest.py +12 -28
  30. syllable_sdk/models/matchtype.py +11 -0
  31. syllable_sdk/models/outboundcampaign.py +7 -0
  32. syllable_sdk/models/outboundcampaigninput.py +7 -0
  33. syllable_sdk/models/promptcreaterequest.py +7 -1
  34. syllable_sdk/models/pronunciationoverride.py +45 -0
  35. syllable_sdk/models/pronunciationoverridesdictionary.py +70 -0
  36. syllable_sdk/models/pronunciations_download_csvop.py +18 -0
  37. syllable_sdk/models/pronunciationscsvuploadresponse.py +31 -0
  38. syllable_sdk/models/toolproperties.py +1 -1
  39. syllable_sdk/models/voicedisplayinfo.py +20 -0
  40. syllable_sdk/models/voicesamplecreaterequest.py +17 -1
  41. syllable_sdk/numbers.py +6 -6
  42. syllable_sdk/organizations.py +8 -8
  43. syllable_sdk/permissions.py +2 -2
  44. syllable_sdk/prompts.py +14 -14
  45. syllable_sdk/pronunciations.py +805 -0
  46. syllable_sdk/roles.py +10 -10
  47. syllable_sdk/sdk.py +3 -0
  48. syllable_sdk/services.py +10 -10
  49. syllable_sdk/session_debug.py +6 -6
  50. syllable_sdk/session_labels.py +6 -6
  51. syllable_sdk/sessions.py +8 -8
  52. syllable_sdk/takeouts.py +6 -6
  53. syllable_sdk/targets.py +10 -10
  54. syllable_sdk/test.py +2 -2
  55. syllable_sdk/tools.py +10 -10
  56. syllable_sdk/transcript.py +2 -2
  57. syllable_sdk/twilio.py +6 -6
  58. syllable_sdk/users.py +14 -14
  59. syllable_sdk/v1.py +14 -14
  60. syllable_sdk/workflows.py +16 -16
  61. {syllable_sdk-0.37.5.dist-info → syllable_sdk-0.38.16.dist-info}/METADATA +9 -5
  62. {syllable_sdk-0.37.5.dist-info → syllable_sdk-0.38.16.dist-info}/RECORD +63 -54
  63. {syllable_sdk-0.37.5.dist-info → syllable_sdk-0.38.16.dist-info}/WHEEL +0 -0
syllable_sdk/latency.py CHANGED
@@ -70,7 +70,7 @@ class Latency(BaseSDK):
70
70
  config=self.sdk_configuration,
71
71
  base_url=base_url or "",
72
72
  operation_id="session_latency_get_by_id",
73
- oauth2_scopes=[],
73
+ oauth2_scopes=None,
74
74
  security_source=get_security_from_env(
75
75
  self.sdk_configuration.security, models.Security
76
76
  ),
@@ -157,7 +157,7 @@ class Latency(BaseSDK):
157
157
  config=self.sdk_configuration,
158
158
  base_url=base_url or "",
159
159
  operation_id="session_latency_get_by_id",
160
- oauth2_scopes=[],
160
+ oauth2_scopes=None,
161
161
  security_source=get_security_from_env(
162
162
  self.sdk_configuration.security, models.Security
163
163
  ),
@@ -68,6 +68,12 @@ if TYPE_CHECKING:
68
68
  BodyOutboundBatchUploadFileTypedDict,
69
69
  BodyOutboundBatchUploadTypedDict,
70
70
  )
71
+ from .body_pronunciations_upload_csv import (
72
+ BodyPronunciationsUploadCsv,
73
+ BodyPronunciationsUploadCsvFile,
74
+ BodyPronunciationsUploadCsvFileTypedDict,
75
+ BodyPronunciationsUploadCsvTypedDict,
76
+ )
71
77
  from .campaignproperties import CampaignProperties
72
78
  from .channel import Channel, ChannelTypedDict
73
79
  from .channel_targets_createop import (
@@ -215,6 +221,7 @@ if TYPE_CHECKING:
215
221
  from .dialogmessage import DialogMessage, DialogMessageTypedDict
216
222
  from .dialogrole import DialogRole
217
223
  from .dialogtoolcall import DialogToolCall, DialogToolCallTypedDict
224
+ from .dictionarymetadata import DictionaryMetadata, DictionaryMetadataTypedDict
218
225
  from .event import Attributes, AttributesTypedDict, Event, EventTypedDict
219
226
  from .eventproperties import EventProperties
220
227
  from .events_listop import EventsListRequest, EventsListRequestTypedDict
@@ -521,6 +528,7 @@ if TYPE_CHECKING:
521
528
  ListResponseUserResponseTypedDict,
522
529
  )
523
530
  from .logintype import LoginType
531
+ from .matchtype import MatchType
524
532
  from .orderbydirection import OrderByDirection
525
533
  from .organizationchannelconfig import (
526
534
  OrganizationChannelConfig,
@@ -622,6 +630,22 @@ if TYPE_CHECKING:
622
630
  from .prompts_historyop import PromptsHistoryRequest, PromptsHistoryRequestTypedDict
623
631
  from .prompts_listop import PromptsListRequest, PromptsListRequestTypedDict
624
632
  from .promptupdaterequest import PromptUpdateRequest, PromptUpdateRequestTypedDict
633
+ from .pronunciationoverride import (
634
+ PronunciationOverride,
635
+ PronunciationOverrideTypedDict,
636
+ )
637
+ from .pronunciationoverridesdictionary import (
638
+ PronunciationOverridesDictionary,
639
+ PronunciationOverridesDictionaryTypedDict,
640
+ )
641
+ from .pronunciations_download_csvop import (
642
+ PronunciationsDownloadCsvResponse,
643
+ PronunciationsDownloadCsvResponseTypedDict,
644
+ )
645
+ from .pronunciationscsvuploadresponse import (
646
+ PronunciationsCsvUploadResponse,
647
+ PronunciationsCsvUploadResponseTypedDict,
648
+ )
625
649
  from .requeststatus import RequestStatus
626
650
  from .rolecreaterequest import RoleCreateRequest, RoleCreateRequestTypedDict
627
651
  from .roleproperties import RoleProperties
@@ -817,6 +841,7 @@ if TYPE_CHECKING:
817
841
  ValidationError,
818
842
  ValidationErrorTypedDict,
819
843
  )
844
+ from .voicedisplayinfo import VoiceDisplayInfo, VoiceDisplayInfoTypedDict
820
845
  from .voicesamplecreaterequest import (
821
846
  VoiceSampleCreateRequest,
822
847
  VoiceSampleCreateRequestTypedDict,
@@ -887,6 +912,10 @@ __all__ = [
887
912
  "BodyOutboundBatchUploadFile",
888
913
  "BodyOutboundBatchUploadFileTypedDict",
889
914
  "BodyOutboundBatchUploadTypedDict",
915
+ "BodyPronunciationsUploadCsv",
916
+ "BodyPronunciationsUploadCsvFile",
917
+ "BodyPronunciationsUploadCsvFileTypedDict",
918
+ "BodyPronunciationsUploadCsvTypedDict",
890
919
  "CampaignProperties",
891
920
  "Channel",
892
921
  "ChannelConfigView",
@@ -984,6 +1013,8 @@ __all__ = [
984
1013
  "DialogRole",
985
1014
  "DialogToolCall",
986
1015
  "DialogToolCallTypedDict",
1016
+ "DictionaryMetadata",
1017
+ "DictionaryMetadataTypedDict",
987
1018
  "Event",
988
1019
  "EventProperties",
989
1020
  "EventTypedDict",
@@ -1170,6 +1201,7 @@ __all__ = [
1170
1201
  "Loc",
1171
1202
  "LocTypedDict",
1172
1203
  "LoginType",
1204
+ "MatchType",
1173
1205
  "Metadata",
1174
1206
  "MetadataTypedDict",
1175
1207
  "OrderByDirection",
@@ -1239,6 +1271,14 @@ __all__ = [
1239
1271
  "PromptsHistoryRequestTypedDict",
1240
1272
  "PromptsListRequest",
1241
1273
  "PromptsListRequestTypedDict",
1274
+ "PronunciationOverride",
1275
+ "PronunciationOverrideTypedDict",
1276
+ "PronunciationOverridesDictionary",
1277
+ "PronunciationOverridesDictionaryTypedDict",
1278
+ "PronunciationsCsvUploadResponse",
1279
+ "PronunciationsCsvUploadResponseTypedDict",
1280
+ "PronunciationsDownloadCsvResponse",
1281
+ "PronunciationsDownloadCsvResponseTypedDict",
1242
1282
  "RequestStatus",
1243
1283
  "RoleCreateRequest",
1244
1284
  "RoleCreateRequestTypedDict",
@@ -1407,6 +1447,8 @@ __all__ = [
1407
1447
  "UsersSendEmailRequestTypedDict",
1408
1448
  "ValidationError",
1409
1449
  "ValidationErrorTypedDict",
1450
+ "VoiceDisplayInfo",
1451
+ "VoiceDisplayInfoTypedDict",
1410
1452
  "VoiceSampleCreateRequest",
1411
1453
  "VoiceSampleCreateRequestTypedDict",
1412
1454
  ]
@@ -1466,6 +1508,10 @@ _dynamic_imports: dict[str, str] = {
1466
1508
  "BodyOutboundBatchUploadFile": ".body_outbound_batch_upload",
1467
1509
  "BodyOutboundBatchUploadFileTypedDict": ".body_outbound_batch_upload",
1468
1510
  "BodyOutboundBatchUploadTypedDict": ".body_outbound_batch_upload",
1511
+ "BodyPronunciationsUploadCsv": ".body_pronunciations_upload_csv",
1512
+ "BodyPronunciationsUploadCsvFile": ".body_pronunciations_upload_csv",
1513
+ "BodyPronunciationsUploadCsvFileTypedDict": ".body_pronunciations_upload_csv",
1514
+ "BodyPronunciationsUploadCsvTypedDict": ".body_pronunciations_upload_csv",
1469
1515
  "CampaignProperties": ".campaignproperties",
1470
1516
  "Channel": ".channel",
1471
1517
  "ChannelTypedDict": ".channel",
@@ -1561,6 +1607,8 @@ _dynamic_imports: dict[str, str] = {
1561
1607
  "DialogRole": ".dialogrole",
1562
1608
  "DialogToolCall": ".dialogtoolcall",
1563
1609
  "DialogToolCallTypedDict": ".dialogtoolcall",
1610
+ "DictionaryMetadata": ".dictionarymetadata",
1611
+ "DictionaryMetadataTypedDict": ".dictionarymetadata",
1564
1612
  "Attributes": ".event",
1565
1613
  "AttributesTypedDict": ".event",
1566
1614
  "Event": ".event",
@@ -1751,6 +1799,7 @@ _dynamic_imports: dict[str, str] = {
1751
1799
  "ListResponseUserResponse": ".listresponse_userresponse_",
1752
1800
  "ListResponseUserResponseTypedDict": ".listresponse_userresponse_",
1753
1801
  "LoginType": ".logintype",
1802
+ "MatchType": ".matchtype",
1754
1803
  "OrderByDirection": ".orderbydirection",
1755
1804
  "OrganizationChannelConfig": ".organizationchannelconfig",
1756
1805
  "OrganizationChannelConfigTypedDict": ".organizationchannelconfig",
@@ -1818,6 +1867,14 @@ _dynamic_imports: dict[str, str] = {
1818
1867
  "PromptsListRequestTypedDict": ".prompts_listop",
1819
1868
  "PromptUpdateRequest": ".promptupdaterequest",
1820
1869
  "PromptUpdateRequestTypedDict": ".promptupdaterequest",
1870
+ "PronunciationOverride": ".pronunciationoverride",
1871
+ "PronunciationOverrideTypedDict": ".pronunciationoverride",
1872
+ "PronunciationOverridesDictionary": ".pronunciationoverridesdictionary",
1873
+ "PronunciationOverridesDictionaryTypedDict": ".pronunciationoverridesdictionary",
1874
+ "PronunciationsDownloadCsvResponse": ".pronunciations_download_csvop",
1875
+ "PronunciationsDownloadCsvResponseTypedDict": ".pronunciations_download_csvop",
1876
+ "PronunciationsCsvUploadResponse": ".pronunciationscsvuploadresponse",
1877
+ "PronunciationsCsvUploadResponseTypedDict": ".pronunciationscsvuploadresponse",
1821
1878
  "RequestStatus": ".requeststatus",
1822
1879
  "RoleCreateRequest": ".rolecreaterequest",
1823
1880
  "RoleCreateRequestTypedDict": ".rolecreaterequest",
@@ -1989,6 +2046,8 @@ _dynamic_imports: dict[str, str] = {
1989
2046
  "LocTypedDict": ".validationerror",
1990
2047
  "ValidationError": ".validationerror",
1991
2048
  "ValidationErrorTypedDict": ".validationerror",
2049
+ "VoiceDisplayInfo": ".voicedisplayinfo",
2050
+ "VoiceDisplayInfoTypedDict": ".voicedisplayinfo",
1992
2051
  "VoiceSampleCreateRequest": ".voicesamplecreaterequest",
1993
2052
  "VoiceSampleCreateRequestTypedDict": ".voicesamplecreaterequest",
1994
2053
  }
@@ -0,0 +1,46 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import io
5
+ import pydantic
6
+ from syllable_sdk.types import BaseModel
7
+ from syllable_sdk.utils import FieldMetadata, MultipartFormMetadata
8
+ from typing import IO, Optional, Union
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class BodyPronunciationsUploadCsvFileTypedDict(TypedDict):
13
+ file_name: str
14
+ content: Union[bytes, IO[bytes], io.BufferedReader]
15
+ content_type: NotRequired[str]
16
+
17
+
18
+ class BodyPronunciationsUploadCsvFile(BaseModel):
19
+ file_name: Annotated[
20
+ str, pydantic.Field(alias="fileName"), FieldMetadata(multipart=True)
21
+ ]
22
+
23
+ content: Annotated[
24
+ Union[bytes, IO[bytes], io.BufferedReader],
25
+ pydantic.Field(alias=""),
26
+ FieldMetadata(multipart=MultipartFormMetadata(content=True)),
27
+ ]
28
+
29
+ content_type: Annotated[
30
+ Optional[str],
31
+ pydantic.Field(alias="Content-Type"),
32
+ FieldMetadata(multipart=True),
33
+ ] = None
34
+
35
+
36
+ class BodyPronunciationsUploadCsvTypedDict(TypedDict):
37
+ file: BodyPronunciationsUploadCsvFileTypedDict
38
+ r"""CSV file containing pronunciation overrides"""
39
+
40
+
41
+ class BodyPronunciationsUploadCsv(BaseModel):
42
+ file: Annotated[
43
+ BodyPronunciationsUploadCsvFile,
44
+ FieldMetadata(multipart=MultipartFormMetadata(file=True)),
45
+ ]
46
+ r"""CSV file containing pronunciation overrides"""
@@ -16,3 +16,4 @@ class CampaignProperties(str, Enum):
16
16
  UPDATED_AT = "updated_at"
17
17
  LABEL = "label"
18
18
  LABELS = "labels"
19
+ VOICEMAIL_DETECTION = "voicemail_detection"
@@ -0,0 +1,24 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from syllable_sdk.types import BaseModel
5
+ from typing import Optional
6
+ from typing_extensions import NotRequired, TypedDict
7
+
8
+
9
+ class DictionaryMetadataTypedDict(TypedDict):
10
+ r"""Audit metadata associated with a dictionary."""
11
+
12
+ entries: int
13
+ hash: str
14
+ source: NotRequired[str]
15
+
16
+
17
+ class DictionaryMetadata(BaseModel):
18
+ r"""Audit metadata associated with a dictionary."""
19
+
20
+ entries: int
21
+
22
+ hash: str
23
+
24
+ source: Optional[str] = ""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from datetime import datetime
5
+ import pydantic
5
6
  from pydantic import model_serializer
6
7
  from syllable_sdk.types import (
7
8
  BaseModel,
@@ -10,7 +11,7 @@ from syllable_sdk.types import (
10
11
  UNSET,
11
12
  UNSET_SENTINEL,
12
13
  )
13
- from typing_extensions import NotRequired, TypedDict
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
15
 
15
16
 
16
17
  class IncidentCreateRequestTypedDict(TypedDict):
@@ -33,7 +34,7 @@ class IncidentCreateRequestTypedDict(TypedDict):
33
34
  sub_organization_id: NotRequired[Nullable[int]]
34
35
  r"""The ID of the sub-organization"""
35
36
  sub_organization: NotRequired[Nullable[str]]
36
- r"""The name of the sub-organization"""
37
+ r"""The name of the sub-organization (DEPRECATED)"""
37
38
 
38
39
 
39
40
  class IncidentCreateRequest(BaseModel):
@@ -63,8 +64,13 @@ class IncidentCreateRequest(BaseModel):
63
64
  sub_organization_id: OptionalNullable[int] = UNSET
64
65
  r"""The ID of the sub-organization"""
65
66
 
66
- sub_organization: OptionalNullable[str] = UNSET
67
- r"""The name of the sub-organization"""
67
+ sub_organization: Annotated[
68
+ OptionalNullable[str],
69
+ pydantic.Field(
70
+ deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible."
71
+ ),
72
+ ] = UNSET
73
+ r"""The name of the sub-organization (DEPRECATED)"""
68
74
 
69
75
  @model_serializer(mode="wrap")
70
76
  def serialize_model(self, handler):
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from datetime import datetime
5
+ import pydantic
5
6
  from pydantic import model_serializer
6
7
  from syllable_sdk.types import (
7
8
  BaseModel,
@@ -10,7 +11,7 @@ from syllable_sdk.types import (
10
11
  UNSET,
11
12
  UNSET_SENTINEL,
12
13
  )
13
- from typing_extensions import NotRequired, TypedDict
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
15
 
15
16
 
16
17
  class IncidentResponseTypedDict(TypedDict):
@@ -37,7 +38,7 @@ class IncidentResponseTypedDict(TypedDict):
37
38
  sub_organization_id: NotRequired[Nullable[int]]
38
39
  r"""The ID of the sub-organization"""
39
40
  sub_organization: NotRequired[Nullable[str]]
40
- r"""The name of the sub-organization"""
41
+ r"""The name of the sub-organization (DEPRECATED)"""
41
42
  created_at: NotRequired[Nullable[datetime]]
42
43
  r"""Creation time of the incident"""
43
44
  updated_at: NotRequired[Nullable[datetime]]
@@ -77,8 +78,13 @@ class IncidentResponse(BaseModel):
77
78
  sub_organization_id: OptionalNullable[int] = UNSET
78
79
  r"""The ID of the sub-organization"""
79
80
 
80
- sub_organization: OptionalNullable[str] = UNSET
81
- r"""The name of the sub-organization"""
81
+ sub_organization: Annotated[
82
+ OptionalNullable[str],
83
+ pydantic.Field(
84
+ deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible."
85
+ ),
86
+ ] = UNSET
87
+ r"""The name of the sub-organization (DEPRECATED)"""
82
88
 
83
89
  created_at: OptionalNullable[datetime] = UNSET
84
90
  r"""Creation time of the incident"""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from datetime import datetime
5
+ import pydantic
5
6
  from pydantic import model_serializer
6
7
  from syllable_sdk.types import (
7
8
  BaseModel,
@@ -10,7 +11,7 @@ from syllable_sdk.types import (
10
11
  UNSET,
11
12
  UNSET_SENTINEL,
12
13
  )
13
- from typing_extensions import NotRequired, TypedDict
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
15
 
15
16
 
16
17
  class IncidentUpdateRequestTypedDict(TypedDict):
@@ -35,11 +36,7 @@ class IncidentUpdateRequestTypedDict(TypedDict):
35
36
  sub_organization_id: NotRequired[Nullable[int]]
36
37
  r"""The ID of the sub-organization"""
37
38
  sub_organization: NotRequired[Nullable[str]]
38
- r"""The name of the sub-organization"""
39
- created_at: NotRequired[Nullable[datetime]]
40
- r"""Creation time of the incident"""
41
- updated_at: NotRequired[Nullable[datetime]]
42
- r"""Last update time of the incident"""
39
+ r"""The name of the sub-organization (DEPRECATED)"""
43
40
 
44
41
 
45
42
  class IncidentUpdateRequest(BaseModel):
@@ -72,31 +69,18 @@ class IncidentUpdateRequest(BaseModel):
72
69
  sub_organization_id: OptionalNullable[int] = UNSET
73
70
  r"""The ID of the sub-organization"""
74
71
 
75
- sub_organization: OptionalNullable[str] = UNSET
76
- r"""The name of the sub-organization"""
77
-
78
- created_at: OptionalNullable[datetime] = UNSET
79
- r"""Creation time of the incident"""
80
-
81
- updated_at: OptionalNullable[datetime] = UNSET
82
- r"""Last update time of the incident"""
72
+ sub_organization: Annotated[
73
+ OptionalNullable[str],
74
+ pydantic.Field(
75
+ deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible."
76
+ ),
77
+ ] = UNSET
78
+ r"""The name of the sub-organization (DEPRECATED)"""
83
79
 
84
80
  @model_serializer(mode="wrap")
85
81
  def serialize_model(self, handler):
86
- optional_fields = [
87
- "organization_id",
88
- "sub_organization_id",
89
- "sub_organization",
90
- "created_at",
91
- "updated_at",
92
- ]
93
- nullable_fields = [
94
- "organization_id",
95
- "sub_organization_id",
96
- "sub_organization",
97
- "created_at",
98
- "updated_at",
99
- ]
82
+ optional_fields = ["organization_id", "sub_organization_id", "sub_organization"]
83
+ nullable_fields = ["organization_id", "sub_organization_id", "sub_organization"]
100
84
  null_default_fields = []
101
85
 
102
86
  serialized = handler(self)
@@ -0,0 +1,11 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from enum import Enum
5
+
6
+
7
+ class MatchType(str, Enum):
8
+ r"""Matching strategy for override text."""
9
+
10
+ EXACT = "exact"
11
+ SUBSTRING = "substring"
@@ -51,6 +51,8 @@ class OutboundCampaignTypedDict(TypedDict):
51
51
  r"""Number of retries per target"""
52
52
  retry_interval: NotRequired[Nullable[str]]
53
53
  r"""How long to wait before retrying"""
54
+ voicemail_detection: NotRequired[Nullable[Dict[str, float]]]
55
+ r"""Config for voicemail detection for voice campaigns"""
54
56
  agent_id: NotRequired[Nullable[int]]
55
57
  r"""ID of agent assigned to campaign"""
56
58
  created_at: NotRequired[datetime]
@@ -116,6 +118,9 @@ class OutboundCampaign(BaseModel):
116
118
  retry_interval: OptionalNullable[str] = UNSET
117
119
  r"""How long to wait before retrying"""
118
120
 
121
+ voicemail_detection: OptionalNullable[Dict[str, float]] = UNSET
122
+ r"""Config for voicemail detection for voice campaigns"""
123
+
119
124
  agent_id: OptionalNullable[int] = UNSET
120
125
  r"""ID of agent assigned to campaign"""
121
126
 
@@ -139,6 +144,7 @@ class OutboundCampaign(BaseModel):
139
144
  "hourly_rate",
140
145
  "retry_count",
141
146
  "retry_interval",
147
+ "voicemail_detection",
142
148
  "agent_id",
143
149
  "created_at",
144
150
  "updated_at",
@@ -154,6 +160,7 @@ class OutboundCampaign(BaseModel):
154
160
  "source",
155
161
  "caller_id",
156
162
  "retry_interval",
163
+ "voicemail_detection",
157
164
  "agent_id",
158
165
  ]
159
166
  null_default_fields = []
@@ -46,6 +46,8 @@ class OutboundCampaignInputTypedDict(TypedDict):
46
46
  r"""Number of retries per target"""
47
47
  retry_interval: NotRequired[Nullable[str]]
48
48
  r"""How long to wait before retrying"""
49
+ voicemail_detection: NotRequired[Nullable[Dict[str, float]]]
50
+ r"""Config for voicemail detection for voice campaigns"""
49
51
 
50
52
 
51
53
  class OutboundCampaignInput(BaseModel):
@@ -99,6 +101,9 @@ class OutboundCampaignInput(BaseModel):
99
101
  retry_interval: OptionalNullable[str] = UNSET
100
102
  r"""How long to wait before retrying"""
101
103
 
104
+ voicemail_detection: OptionalNullable[Dict[str, float]] = UNSET
105
+ r"""Config for voicemail detection for voice campaigns"""
106
+
102
107
  @model_serializer(mode="wrap")
103
108
  def serialize_model(self, handler):
104
109
  optional_fields = [
@@ -113,6 +118,7 @@ class OutboundCampaignInput(BaseModel):
113
118
  "hourly_rate",
114
119
  "retry_count",
115
120
  "retry_interval",
121
+ "voicemail_detection",
116
122
  ]
117
123
  nullable_fields = [
118
124
  "description",
@@ -125,6 +131,7 @@ class OutboundCampaignInput(BaseModel):
125
131
  "source",
126
132
  "caller_id",
127
133
  "retry_interval",
134
+ "voicemail_detection",
128
135
  ]
129
136
  null_default_fields = []
130
137
 
@@ -31,6 +31,8 @@ class PromptCreateRequestTypedDict(TypedDict):
31
31
  r"""Names of tools to which the prompt has access"""
32
32
  session_end_enabled: NotRequired[bool]
33
33
  r"""Whether session end functionality is enabled for this prompt"""
34
+ edit_comments: NotRequired[Nullable[str]]
35
+ r"""The comments for the most recent edit to the prompt"""
34
36
  include_default_tools: NotRequired[bool]
35
37
  r"""Whether to include the default tools (`hangup`) in the list of tools for the prompt. If you disable this during creation, you might want to disable it during updates as well, otherwise the default tools will be added when updating the prompt."""
36
38
 
@@ -59,6 +61,9 @@ class PromptCreateRequest(BaseModel):
59
61
  session_end_enabled: Optional[bool] = False
60
62
  r"""Whether session end functionality is enabled for this prompt"""
61
63
 
64
+ edit_comments: OptionalNullable[str] = UNSET
65
+ r"""The comments for the most recent edit to the prompt"""
66
+
62
67
  include_default_tools: Optional[bool] = True
63
68
  r"""Whether to include the default tools (`hangup`) in the list of tools for the prompt. If you disable this during creation, you might want to disable it during updates as well, otherwise the default tools will be added when updating the prompt."""
64
69
 
@@ -69,9 +74,10 @@ class PromptCreateRequest(BaseModel):
69
74
  "context",
70
75
  "tools",
71
76
  "session_end_enabled",
77
+ "edit_comments",
72
78
  "include_default_tools",
73
79
  ]
74
- nullable_fields = ["description", "context"]
80
+ nullable_fields = ["description", "context", "edit_comments"]
75
81
  null_default_fields = []
76
82
 
77
83
  serialized = handler(self)
@@ -0,0 +1,45 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .matchtype import MatchType
5
+ from syllable_sdk.types import BaseModel
6
+ from typing import List, Optional
7
+ from typing_extensions import NotRequired, TypedDict
8
+
9
+
10
+ class PronunciationOverrideTypedDict(TypedDict):
11
+ r"""A single text replacement rule."""
12
+
13
+ text: str
14
+ replacement: str
15
+ languages: NotRequired[List[str]]
16
+ provider: NotRequired[str]
17
+ voice: NotRequired[str]
18
+ match_type: NotRequired[MatchType]
19
+ r"""Matching strategy for override text."""
20
+ match_options: NotRequired[List[str]]
21
+ enabled: NotRequired[bool]
22
+ notes: NotRequired[str]
23
+
24
+
25
+ class PronunciationOverride(BaseModel):
26
+ r"""A single text replacement rule."""
27
+
28
+ text: str
29
+
30
+ replacement: str
31
+
32
+ languages: Optional[List[str]] = None
33
+
34
+ provider: Optional[str] = ""
35
+
36
+ voice: Optional[str] = ""
37
+
38
+ match_type: Optional[MatchType] = None
39
+ r"""Matching strategy for override text."""
40
+
41
+ match_options: Optional[List[str]] = None
42
+
43
+ enabled: Optional[bool] = True
44
+
45
+ notes: Optional[str] = ""
@@ -0,0 +1,70 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .dictionarymetadata import DictionaryMetadata, DictionaryMetadataTypedDict
5
+ from .pronunciationoverride import PronunciationOverride, PronunciationOverrideTypedDict
6
+ from .voicedisplayinfo import VoiceDisplayInfo, VoiceDisplayInfoTypedDict
7
+ from syllable_sdk.types import BaseModel
8
+ from typing import Dict, List, Optional
9
+ from typing_extensions import NotRequired, TypedDict
10
+
11
+
12
+ class PronunciationOverridesDictionaryTypedDict(TypedDict):
13
+ r"""Container for all TTS pronunciation overrides belonging to the sub-organisation.
14
+
15
+ Stored in the `config_values` table via ConfigDao. The Syllable API persists uploaded CSV
16
+ pronunciation rules, and Bubblegum's PronunciationOverridesPlugin reads them to apply text
17
+ replacements before TTS processing.
18
+
19
+ Example:
20
+ dao = ConfigDao(db_session)
21
+ await dao.register_model('tts.pronunciations', PronunciationOverridesDictionary)
22
+
23
+ pod = PronunciationOverridesDictionary(
24
+ pronunciations=[...],
25
+ metadata=DictionaryMetadata(entries=10, hash='sha256:...'),
26
+ )
27
+ result = await dao.upsert('pronunciations_v1', pod)
28
+
29
+ record = await dao.get('pronunciations_v1', PronunciationOverridesDictionary)
30
+ if record:
31
+ pronunciations = record.value.pronunciations
32
+ """
33
+
34
+ pronunciations: List[PronunciationOverrideTypedDict]
35
+ metadata: DictionaryMetadataTypedDict
36
+ r"""Audit metadata associated with a dictionary."""
37
+ type: NotRequired[str]
38
+ voices: NotRequired[Dict[str, VoiceDisplayInfoTypedDict]]
39
+
40
+
41
+ class PronunciationOverridesDictionary(BaseModel):
42
+ r"""Container for all TTS pronunciation overrides belonging to the sub-organisation.
43
+
44
+ Stored in the `config_values` table via ConfigDao. The Syllable API persists uploaded CSV
45
+ pronunciation rules, and Bubblegum's PronunciationOverridesPlugin reads them to apply text
46
+ replacements before TTS processing.
47
+
48
+ Example:
49
+ dao = ConfigDao(db_session)
50
+ await dao.register_model('tts.pronunciations', PronunciationOverridesDictionary)
51
+
52
+ pod = PronunciationOverridesDictionary(
53
+ pronunciations=[...],
54
+ metadata=DictionaryMetadata(entries=10, hash='sha256:...'),
55
+ )
56
+ result = await dao.upsert('pronunciations_v1', pod)
57
+
58
+ record = await dao.get('pronunciations_v1', PronunciationOverridesDictionary)
59
+ if record:
60
+ pronunciations = record.value.pronunciations
61
+ """
62
+
63
+ pronunciations: List[PronunciationOverride]
64
+
65
+ metadata: DictionaryMetadata
66
+ r"""Audit metadata associated with a dictionary."""
67
+
68
+ type: Optional[str] = "pronunciations_v1"
69
+
70
+ voices: Optional[Dict[str, VoiceDisplayInfo]] = None
@@ -0,0 +1,18 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import httpx
5
+ from syllable_sdk.types import BaseModel
6
+ from typing import Dict, List
7
+ from typing_extensions import TypedDict
8
+
9
+
10
+ class PronunciationsDownloadCsvResponseTypedDict(TypedDict):
11
+ headers: Dict[str, List[str]]
12
+ result: httpx.Response
13
+
14
+
15
+ class PronunciationsDownloadCsvResponse(BaseModel):
16
+ headers: Dict[str, List[str]]
17
+
18
+ result: httpx.Response