syllable-sdk 0.41.23__py3-none-any.whl → 0.44.1__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 (81) hide show
  1. syllable_sdk/_version.py +3 -3
  2. syllable_sdk/agents.py +12 -0
  3. syllable_sdk/basesdk.py +6 -0
  4. syllable_sdk/batches.py +18 -0
  5. syllable_sdk/campaigns.py +10 -0
  6. syllable_sdk/channels.py +8 -0
  7. syllable_sdk/conversation_config.py +411 -0
  8. syllable_sdk/conversations.py +2 -0
  9. syllable_sdk/custom_messages.py +10 -0
  10. syllable_sdk/dashboards.py +12 -0
  11. syllable_sdk/data_sources.py +10 -0
  12. syllable_sdk/directory.py +16 -0
  13. syllable_sdk/events.py +2 -0
  14. syllable_sdk/folders.py +16 -0
  15. syllable_sdk/full_summary.py +2 -0
  16. syllable_sdk/incidents.py +12 -0
  17. syllable_sdk/insights_sdk.py +2 -0
  18. syllable_sdk/insights_tools.py +14 -0
  19. syllable_sdk/language_groups.py +12 -0
  20. syllable_sdk/latency.py +2 -0
  21. syllable_sdk/models/__init__.py +449 -8
  22. syllable_sdk/models/bridgephrasesconfig.py +39 -0
  23. syllable_sdk/models/callaction.py +116 -0
  24. syllable_sdk/models/caseexpression.py +17 -0
  25. syllable_sdk/models/celexpression.py +31 -0
  26. syllable_sdk/models/conditionaltext.py +94 -0
  27. syllable_sdk/models/conditionalvalue.py +131 -0
  28. syllable_sdk/models/context.py +112 -0
  29. syllable_sdk/models/contexttaskmetadata.py +55 -0
  30. syllable_sdk/models/contexttoolinfo.py +57 -0
  31. syllable_sdk/models/eventtask.py +98 -0
  32. syllable_sdk/models/eventtaskevents.py +83 -0
  33. syllable_sdk/models/expressiontask.py +150 -0
  34. syllable_sdk/models/expressiontaskevents.py +116 -0
  35. syllable_sdk/models/get_bridge_phrases_configop.py +64 -0
  36. syllable_sdk/models/incrementaction.py +106 -0
  37. syllable_sdk/models/inputparameter.py +106 -0
  38. syllable_sdk/models/jmespathexpression.py +33 -0
  39. syllable_sdk/models/loadtoolfromfiletask.py +112 -0
  40. syllable_sdk/models/nextstep.py +97 -0
  41. syllable_sdk/models/pronunciationoverridesdictionary.py +6 -3
  42. syllable_sdk/models/saveaction.py +103 -0
  43. syllable_sdk/models/sayaction.py +108 -0
  44. syllable_sdk/models/schemas_cortex_v1_bridge_phrases_dictionarymetadata.py +67 -0
  45. syllable_sdk/models/{dictionarymetadata.py → schemas_tts_v1_pronunciations_dictionarymetadata.py} +2 -2
  46. syllable_sdk/models/session.py +7 -0
  47. syllable_sdk/models/setvalueaction.py +140 -0
  48. syllable_sdk/models/step.py +65 -0
  49. syllable_sdk/models/stepeventactions.py +166 -0
  50. syllable_sdk/models/stepstask.py +98 -0
  51. syllable_sdk/models/steptools.py +67 -0
  52. syllable_sdk/models/tooldefinition.py +11 -3
  53. syllable_sdk/models/update_bridge_phrases_configop.py +71 -0
  54. syllable_sdk/models/variable.py +149 -0
  55. syllable_sdk/numbers.py +6 -0
  56. syllable_sdk/organizations.py +8 -0
  57. syllable_sdk/permissions.py +2 -0
  58. syllable_sdk/prompts.py +14 -0
  59. syllable_sdk/pronunciations.py +18 -4
  60. syllable_sdk/roles.py +10 -0
  61. syllable_sdk/sdk.py +6 -0
  62. syllable_sdk/services.py +10 -0
  63. syllable_sdk/session_debug.py +6 -0
  64. syllable_sdk/session_labels.py +6 -0
  65. syllable_sdk/sessions.py +8 -0
  66. syllable_sdk/takeouts.py +6 -0
  67. syllable_sdk/targets.py +10 -0
  68. syllable_sdk/test.py +2 -0
  69. syllable_sdk/tools.py +10 -0
  70. syllable_sdk/transcript.py +2 -0
  71. syllable_sdk/twilio.py +6 -0
  72. syllable_sdk/users.py +14 -0
  73. syllable_sdk/utils/forms.py +21 -10
  74. syllable_sdk/utils/queryparams.py +14 -2
  75. syllable_sdk/utils/retries.py +69 -5
  76. syllable_sdk/v1.py +14 -0
  77. syllable_sdk/voice_groups.py +12 -0
  78. syllable_sdk/workflows.py +16 -0
  79. {syllable_sdk-0.41.23.dist-info → syllable_sdk-0.44.1.dist-info}/METADATA +6 -1
  80. {syllable_sdk-0.41.23.dist-info → syllable_sdk-0.44.1.dist-info}/RECORD +81 -51
  81. {syllable_sdk-0.41.23.dist-info → syllable_sdk-0.44.1.dist-info}/WHEEL +0 -0
@@ -27,12 +27,13 @@ from .forms import _populate_form
27
27
  def get_query_params(
28
28
  query_params: Any,
29
29
  gbls: Optional[Any] = None,
30
+ allow_empty_value: Optional[List[str]] = None,
30
31
  ) -> Dict[str, List[str]]:
31
32
  params: Dict[str, List[str]] = {}
32
33
 
33
- globals_already_populated = _populate_query_params(query_params, gbls, params, [])
34
+ globals_already_populated = _populate_query_params(query_params, gbls, params, [], allow_empty_value)
34
35
  if _is_set(gbls):
35
- _populate_query_params(gbls, None, params, globals_already_populated)
36
+ _populate_query_params(gbls, None, params, globals_already_populated, allow_empty_value)
36
37
 
37
38
  return params
38
39
 
@@ -42,6 +43,7 @@ def _populate_query_params(
42
43
  gbls: Any,
43
44
  query_param_values: Dict[str, List[str]],
44
45
  skip_fields: List[str],
46
+ allow_empty_value: Optional[List[str]] = None,
45
47
  ) -> List[str]:
46
48
  globals_already_populated: List[str] = []
47
49
 
@@ -69,6 +71,16 @@ def _populate_query_params(
69
71
  globals_already_populated.append(name)
70
72
 
71
73
  f_name = field.alias if field.alias is not None else name
74
+
75
+ allow_empty_set = set(allow_empty_value or [])
76
+ should_include_empty = f_name in allow_empty_set and (
77
+ value is None or value == [] or value == ""
78
+ )
79
+
80
+ if should_include_empty:
81
+ query_param_values[f_name] = [""]
82
+ continue
83
+
72
84
  serialization = metadata.serialization
73
85
  if serialization is not None:
74
86
  serialized_parms = _get_serialized_params(
@@ -3,7 +3,9 @@
3
3
  import asyncio
4
4
  import random
5
5
  import time
6
- from typing import List
6
+ from datetime import datetime
7
+ from email.utils import parsedate_to_datetime
8
+ from typing import List, Optional
7
9
 
8
10
  import httpx
9
11
 
@@ -51,9 +53,11 @@ class Retries:
51
53
 
52
54
  class TemporaryError(Exception):
53
55
  response: httpx.Response
56
+ retry_after: Optional[int]
54
57
 
55
58
  def __init__(self, response: httpx.Response):
56
59
  self.response = response
60
+ self.retry_after = _parse_retry_after_header(response)
57
61
 
58
62
 
59
63
  class PermanentError(Exception):
@@ -63,6 +67,62 @@ class PermanentError(Exception):
63
67
  self.inner = inner
64
68
 
65
69
 
70
+ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]:
71
+ """Parse Retry-After header from response.
72
+
73
+ Returns:
74
+ Retry interval in milliseconds, or None if header is missing or invalid.
75
+ """
76
+ retry_after_header = response.headers.get("retry-after")
77
+ if not retry_after_header:
78
+ return None
79
+
80
+ try:
81
+ seconds = float(retry_after_header)
82
+ return round(seconds * 1000)
83
+ except ValueError:
84
+ pass
85
+
86
+ try:
87
+ retry_date = parsedate_to_datetime(retry_after_header)
88
+ delta = (retry_date - datetime.now(retry_date.tzinfo)).total_seconds()
89
+ return round(max(0, delta) * 1000)
90
+ except (ValueError, TypeError):
91
+ pass
92
+
93
+ return None
94
+
95
+
96
+ def _get_sleep_interval(
97
+ exception: Exception,
98
+ initial_interval: int,
99
+ max_interval: int,
100
+ exponent: float,
101
+ retries: int,
102
+ ) -> float:
103
+ """Get sleep interval for retry with exponential backoff.
104
+
105
+ Args:
106
+ exception: The exception that triggered the retry.
107
+ initial_interval: Initial retry interval in milliseconds.
108
+ max_interval: Maximum retry interval in milliseconds.
109
+ exponent: Base for exponential backoff calculation.
110
+ retries: Current retry attempt count.
111
+
112
+ Returns:
113
+ Sleep interval in seconds.
114
+ """
115
+ if (
116
+ isinstance(exception, TemporaryError)
117
+ and exception.retry_after is not None
118
+ and exception.retry_after > 0
119
+ ):
120
+ return exception.retry_after / 1000
121
+
122
+ sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
123
+ return min(sleep, max_interval / 1000)
124
+
125
+
66
126
  def retry(func, retries: Retries):
67
127
  if retries.config.strategy == "backoff":
68
128
 
@@ -183,8 +243,10 @@ def retry_with_backoff(
183
243
  return exception.response
184
244
 
185
245
  raise
186
- sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
187
- sleep = min(sleep, max_interval / 1000)
246
+
247
+ sleep = _get_sleep_interval(
248
+ exception, initial_interval, max_interval, exponent, retries
249
+ )
188
250
  time.sleep(sleep)
189
251
  retries += 1
190
252
 
@@ -211,7 +273,9 @@ async def retry_with_backoff_async(
211
273
  return exception.response
212
274
 
213
275
  raise
214
- sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
215
- sleep = min(sleep, max_interval / 1000)
276
+
277
+ sleep = _get_sleep_interval(
278
+ exception, initial_interval, max_interval, exponent, retries
279
+ )
216
280
  await asyncio.sleep(sleep)
217
281
  retries += 1
syllable_sdk/v1.py CHANGED
@@ -80,6 +80,7 @@ class V1(BaseSDK):
80
80
  accept_header_value="application/json",
81
81
  http_headers=http_headers,
82
82
  security=self.sdk_configuration.security,
83
+ allow_empty_value=None,
83
84
  timeout_ms=timeout_ms,
84
85
  )
85
86
 
@@ -193,6 +194,7 @@ class V1(BaseSDK):
193
194
  accept_header_value="application/json",
194
195
  http_headers=http_headers,
195
196
  security=self.sdk_configuration.security,
197
+ allow_empty_value=None,
196
198
  timeout_ms=timeout_ms,
197
199
  )
198
200
 
@@ -285,6 +287,7 @@ class V1(BaseSDK):
285
287
  get_serialized_body=lambda: utils.serialize_request_body(
286
288
  request, False, False, "json", models.UserCreateRequest
287
289
  ),
290
+ allow_empty_value=None,
288
291
  timeout_ms=timeout_ms,
289
292
  )
290
293
 
@@ -377,6 +380,7 @@ class V1(BaseSDK):
377
380
  get_serialized_body=lambda: utils.serialize_request_body(
378
381
  request, False, False, "json", models.UserCreateRequest
379
382
  ),
383
+ allow_empty_value=None,
380
384
  timeout_ms=timeout_ms,
381
385
  )
382
386
 
@@ -469,6 +473,7 @@ class V1(BaseSDK):
469
473
  get_serialized_body=lambda: utils.serialize_request_body(
470
474
  request, False, False, "json", models.UserUpdateRequest
471
475
  ),
476
+ allow_empty_value=None,
472
477
  timeout_ms=timeout_ms,
473
478
  )
474
479
 
@@ -561,6 +566,7 @@ class V1(BaseSDK):
561
566
  get_serialized_body=lambda: utils.serialize_request_body(
562
567
  request, False, False, "json", models.UserUpdateRequest
563
568
  ),
569
+ allow_empty_value=None,
564
570
  timeout_ms=timeout_ms,
565
571
  )
566
572
 
@@ -653,6 +659,7 @@ class V1(BaseSDK):
653
659
  get_serialized_body=lambda: utils.serialize_request_body(
654
660
  request, False, False, "json", models.UserDeleteRequest
655
661
  ),
662
+ allow_empty_value=None,
656
663
  timeout_ms=timeout_ms,
657
664
  )
658
665
 
@@ -745,6 +752,7 @@ class V1(BaseSDK):
745
752
  get_serialized_body=lambda: utils.serialize_request_body(
746
753
  request, False, False, "json", models.UserDeleteRequest
747
754
  ),
755
+ allow_empty_value=None,
748
756
  timeout_ms=timeout_ms,
749
757
  )
750
758
 
@@ -834,6 +842,7 @@ class V1(BaseSDK):
834
842
  accept_header_value="application/json",
835
843
  http_headers=http_headers,
836
844
  security=self.sdk_configuration.security,
845
+ allow_empty_value=None,
837
846
  timeout_ms=timeout_ms,
838
847
  )
839
848
 
@@ -923,6 +932,7 @@ class V1(BaseSDK):
923
932
  accept_header_value="application/json",
924
933
  http_headers=http_headers,
925
934
  security=self.sdk_configuration.security,
935
+ allow_empty_value=None,
926
936
  timeout_ms=timeout_ms,
927
937
  )
928
938
 
@@ -1015,6 +1025,7 @@ class V1(BaseSDK):
1015
1025
  accept_header_value="application/json",
1016
1026
  http_headers=http_headers,
1017
1027
  security=self.sdk_configuration.security,
1028
+ allow_empty_value=None,
1018
1029
  timeout_ms=timeout_ms,
1019
1030
  )
1020
1031
 
@@ -1107,6 +1118,7 @@ class V1(BaseSDK):
1107
1118
  accept_header_value="application/json",
1108
1119
  http_headers=http_headers,
1109
1120
  security=self.sdk_configuration.security,
1121
+ allow_empty_value=None,
1110
1122
  timeout_ms=timeout_ms,
1111
1123
  )
1112
1124
 
@@ -1190,6 +1202,7 @@ class V1(BaseSDK):
1190
1202
  accept_header_value="application/json",
1191
1203
  http_headers=http_headers,
1192
1204
  security=self.sdk_configuration.security,
1205
+ allow_empty_value=None,
1193
1206
  timeout_ms=timeout_ms,
1194
1207
  )
1195
1208
 
@@ -1267,6 +1280,7 @@ class V1(BaseSDK):
1267
1280
  accept_header_value="application/json",
1268
1281
  http_headers=http_headers,
1269
1282
  security=self.sdk_configuration.security,
1283
+ allow_empty_value=None,
1270
1284
  timeout_ms=timeout_ms,
1271
1285
  )
1272
1286
 
@@ -81,6 +81,7 @@ class VoiceGroups(BaseSDK):
81
81
  accept_header_value="application/json",
82
82
  http_headers=http_headers,
83
83
  security=self.sdk_configuration.security,
84
+ allow_empty_value=None,
84
85
  timeout_ms=timeout_ms,
85
86
  )
86
87
 
@@ -196,6 +197,7 @@ class VoiceGroups(BaseSDK):
196
197
  accept_header_value="application/json",
197
198
  http_headers=http_headers,
198
199
  security=self.sdk_configuration.security,
200
+ allow_empty_value=None,
199
201
  timeout_ms=timeout_ms,
200
202
  )
201
203
 
@@ -292,6 +294,7 @@ class VoiceGroups(BaseSDK):
292
294
  get_serialized_body=lambda: utils.serialize_request_body(
293
295
  request, False, False, "json", models.VoiceGroupCreateRequest
294
296
  ),
297
+ allow_empty_value=None,
295
298
  timeout_ms=timeout_ms,
296
299
  )
297
300
 
@@ -386,6 +389,7 @@ class VoiceGroups(BaseSDK):
386
389
  get_serialized_body=lambda: utils.serialize_request_body(
387
390
  request, False, False, "json", models.VoiceGroupCreateRequest
388
391
  ),
392
+ allow_empty_value=None,
389
393
  timeout_ms=timeout_ms,
390
394
  )
391
395
 
@@ -480,6 +484,7 @@ class VoiceGroups(BaseSDK):
480
484
  get_serialized_body=lambda: utils.serialize_request_body(
481
485
  request, False, False, "json", models.VoiceGroupUpdateRequest
482
486
  ),
487
+ allow_empty_value=None,
483
488
  timeout_ms=timeout_ms,
484
489
  )
485
490
 
@@ -574,6 +579,7 @@ class VoiceGroups(BaseSDK):
574
579
  get_serialized_body=lambda: utils.serialize_request_body(
575
580
  request, False, False, "json", models.VoiceGroupUpdateRequest
576
581
  ),
582
+ allow_empty_value=None,
577
583
  timeout_ms=timeout_ms,
578
584
  )
579
585
 
@@ -663,6 +669,7 @@ class VoiceGroups(BaseSDK):
663
669
  accept_header_value="application/json",
664
670
  http_headers=http_headers,
665
671
  security=self.sdk_configuration.security,
672
+ allow_empty_value=None,
666
673
  timeout_ms=timeout_ms,
667
674
  )
668
675
 
@@ -752,6 +759,7 @@ class VoiceGroups(BaseSDK):
752
759
  accept_header_value="application/json",
753
760
  http_headers=http_headers,
754
761
  security=self.sdk_configuration.security,
762
+ allow_empty_value=None,
755
763
  timeout_ms=timeout_ms,
756
764
  )
757
765
 
@@ -844,6 +852,7 @@ class VoiceGroups(BaseSDK):
844
852
  accept_header_value="application/json",
845
853
  http_headers=http_headers,
846
854
  security=self.sdk_configuration.security,
855
+ allow_empty_value=None,
847
856
  timeout_ms=timeout_ms,
848
857
  )
849
858
 
@@ -936,6 +945,7 @@ class VoiceGroups(BaseSDK):
936
945
  accept_header_value="application/json",
937
946
  http_headers=http_headers,
938
947
  security=self.sdk_configuration.security,
948
+ allow_empty_value=None,
939
949
  timeout_ms=timeout_ms,
940
950
  )
941
951
 
@@ -1030,6 +1040,7 @@ class VoiceGroups(BaseSDK):
1030
1040
  get_serialized_body=lambda: utils.serialize_request_body(
1031
1041
  request, False, False, "json", models.VoiceSampleCreateRequest
1032
1042
  ),
1043
+ allow_empty_value=None,
1033
1044
  timeout_ms=timeout_ms,
1034
1045
  )
1035
1046
 
@@ -1127,6 +1138,7 @@ class VoiceGroups(BaseSDK):
1127
1138
  get_serialized_body=lambda: utils.serialize_request_body(
1128
1139
  request, False, False, "json", models.VoiceSampleCreateRequest
1129
1140
  ),
1141
+ allow_empty_value=None,
1130
1142
  timeout_ms=timeout_ms,
1131
1143
  )
1132
1144
 
syllable_sdk/workflows.py CHANGED
@@ -82,6 +82,7 @@ class Workflows(BaseSDK):
82
82
  accept_header_value="application/json",
83
83
  http_headers=http_headers,
84
84
  security=self.sdk_configuration.security,
85
+ allow_empty_value=None,
85
86
  timeout_ms=timeout_ms,
86
87
  )
87
88
 
@@ -197,6 +198,7 @@ class Workflows(BaseSDK):
197
198
  accept_header_value="application/json",
198
199
  http_headers=http_headers,
199
200
  security=self.sdk_configuration.security,
201
+ allow_empty_value=None,
200
202
  timeout_ms=timeout_ms,
201
203
  )
202
204
 
@@ -293,6 +295,7 @@ class Workflows(BaseSDK):
293
295
  get_serialized_body=lambda: utils.serialize_request_body(
294
296
  request, False, False, "json", models.InsightWorkflowInput
295
297
  ),
298
+ allow_empty_value=None,
296
299
  timeout_ms=timeout_ms,
297
300
  )
298
301
 
@@ -387,6 +390,7 @@ class Workflows(BaseSDK):
387
390
  get_serialized_body=lambda: utils.serialize_request_body(
388
391
  request, False, False, "json", models.InsightWorkflowInput
389
392
  ),
393
+ allow_empty_value=None,
390
394
  timeout_ms=timeout_ms,
391
395
  )
392
396
 
@@ -476,6 +480,7 @@ class Workflows(BaseSDK):
476
480
  accept_header_value="application/json",
477
481
  http_headers=http_headers,
478
482
  security=self.sdk_configuration.security,
483
+ allow_empty_value=None,
479
484
  timeout_ms=timeout_ms,
480
485
  )
481
486
 
@@ -565,6 +570,7 @@ class Workflows(BaseSDK):
565
570
  accept_header_value="application/json",
566
571
  http_headers=http_headers,
567
572
  security=self.sdk_configuration.security,
573
+ allow_empty_value=None,
568
574
  timeout_ms=timeout_ms,
569
575
  )
570
576
 
@@ -668,6 +674,7 @@ class Workflows(BaseSDK):
668
674
  "json",
669
675
  models.InsightWorkflowInput,
670
676
  ),
677
+ allow_empty_value=None,
671
678
  timeout_ms=timeout_ms,
672
679
  )
673
680
 
@@ -771,6 +778,7 @@ class Workflows(BaseSDK):
771
778
  "json",
772
779
  models.InsightWorkflowInput,
773
780
  ),
781
+ allow_empty_value=None,
774
782
  timeout_ms=timeout_ms,
775
783
  )
776
784
 
@@ -860,6 +868,7 @@ class Workflows(BaseSDK):
860
868
  accept_header_value="application/json",
861
869
  http_headers=http_headers,
862
870
  security=self.sdk_configuration.security,
871
+ allow_empty_value=None,
863
872
  timeout_ms=timeout_ms,
864
873
  )
865
874
 
@@ -949,6 +958,7 @@ class Workflows(BaseSDK):
949
958
  accept_header_value="application/json",
950
959
  http_headers=http_headers,
951
960
  security=self.sdk_configuration.security,
961
+ allow_empty_value=None,
952
962
  timeout_ms=timeout_ms,
953
963
  )
954
964
 
@@ -1038,6 +1048,7 @@ class Workflows(BaseSDK):
1038
1048
  accept_header_value="application/json",
1039
1049
  http_headers=http_headers,
1040
1050
  security=self.sdk_configuration.security,
1051
+ allow_empty_value=None,
1041
1052
  timeout_ms=timeout_ms,
1042
1053
  )
1043
1054
 
@@ -1127,6 +1138,7 @@ class Workflows(BaseSDK):
1127
1138
  accept_header_value="application/json",
1128
1139
  http_headers=http_headers,
1129
1140
  security=self.sdk_configuration.security,
1141
+ allow_empty_value=None,
1130
1142
  timeout_ms=timeout_ms,
1131
1143
  )
1132
1144
 
@@ -1230,6 +1242,7 @@ class Workflows(BaseSDK):
1230
1242
  "json",
1231
1243
  models.InsightWorkflowActivate,
1232
1244
  ),
1245
+ allow_empty_value=None,
1233
1246
  timeout_ms=timeout_ms,
1234
1247
  )
1235
1248
 
@@ -1333,6 +1346,7 @@ class Workflows(BaseSDK):
1333
1346
  "json",
1334
1347
  models.InsightWorkflowActivate,
1335
1348
  ),
1349
+ allow_empty_value=None,
1336
1350
  timeout_ms=timeout_ms,
1337
1351
  )
1338
1352
 
@@ -1428,6 +1442,7 @@ class Workflows(BaseSDK):
1428
1442
  get_serialized_body=lambda: utils.serialize_request_body(
1429
1443
  request, False, False, "json", models.InsightsWorkflowQueueSession
1430
1444
  ),
1445
+ allow_empty_value=None,
1431
1446
  timeout_ms=timeout_ms,
1432
1447
  )
1433
1448
 
@@ -1523,6 +1538,7 @@ class Workflows(BaseSDK):
1523
1538
  get_serialized_body=lambda: utils.serialize_request_body(
1524
1539
  request, False, False, "json", models.InsightsWorkflowQueueSession
1525
1540
  ),
1541
+ allow_empty_value=None,
1526
1542
  timeout_ms=timeout_ms,
1527
1543
  )
1528
1544
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: syllable-sdk
3
- Version: 0.41.23
3
+ Version: 0.44.1
4
4
  Summary: Python Client SDK Generated by Speakeasy.
5
5
  Author: Syllable
6
6
  Requires-Python: >=3.9.2
@@ -287,6 +287,11 @@ with SyllableSDK(
287
287
  * [update](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/numbers/README.md#update) - Update Twilio Number
288
288
  * [list](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/numbers/README.md#list) - List Twilio Phone Numbers
289
289
 
290
+ ### [conversation_config](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/conversationconfig/README.md)
291
+
292
+ * [get_bridge_phrases_config](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/conversationconfig/README.md#get_bridge_phrases_config) - Get Bridge Phrases Config
293
+ * [update_bridge_phrases_config](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/conversationconfig/README.md#update_bridge_phrases_config) - Update Bridge Phrases Config
294
+
290
295
  ### [conversations](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/conversations/README.md)
291
296
 
292
297
  * [list](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/conversations/README.md#list) - Conversations List