syllable-sdk 0.44.4__py3-none-any.whl → 0.44.17__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 (31) hide show
  1. syllable_sdk/_version.py +4 -4
  2. syllable_sdk/directory.py +96 -34
  3. syllable_sdk/models/__init__.py +62 -19
  4. syllable_sdk/models/agentcreate.py +7 -5
  5. syllable_sdk/models/agentresponse.py +7 -5
  6. syllable_sdk/models/agentsttprovider.py +1 -0
  7. syllable_sdk/models/agentupdate.py +7 -5
  8. syllable_sdk/models/bridgephrasesconfig.py +0 -9
  9. syllable_sdk/models/custommessagecreaterequest.py +7 -2
  10. syllable_sdk/models/custommessageresponse.py +7 -2
  11. syllable_sdk/models/custommessageupdaterequest.py +7 -2
  12. syllable_sdk/models/{schemas_tts_v1_pronunciations_dictionarymetadata.py → dictionarymetadata.py} +2 -2
  13. syllable_sdk/models/directory_member_createop.py +28 -0
  14. syllable_sdk/models/directory_member_downloadop.py +21 -0
  15. syllable_sdk/models/directory_member_get_by_idop.py +12 -2
  16. syllable_sdk/models/directory_member_listop.py +28 -18
  17. syllable_sdk/models/directory_member_updateop.py +17 -2
  18. syllable_sdk/models/directoryresponseformat.py +11 -0
  19. syllable_sdk/models/eventtaskevents.py +1 -4
  20. syllable_sdk/models/expressiontask.py +2 -2
  21. syllable_sdk/models/expressiontaskevents.py +4 -6
  22. syllable_sdk/models/getvalueaction.py +151 -0
  23. syllable_sdk/models/pronunciationoverridesdictionary.py +3 -6
  24. syllable_sdk/models/stepeventactions.py +14 -7
  25. syllable_sdk/models/toolparametertransform.py +5 -3
  26. syllable_sdk/pronunciations.py +4 -8
  27. syllable_sdk/types/basemodel.py +41 -3
  28. {syllable_sdk-0.44.4.dist-info → syllable_sdk-0.44.17.dist-info}/METADATA +39 -39
  29. {syllable_sdk-0.44.4.dist-info → syllable_sdk-0.44.17.dist-info}/RECORD +30 -27
  30. syllable_sdk/models/schemas_cortex_v1_bridge_phrases_dictionarymetadata.py +0 -67
  31. {syllable_sdk-0.44.4.dist-info → syllable_sdk-0.44.17.dist-info}/WHEEL +0 -0
@@ -40,8 +40,6 @@ class AgentResponseTypedDict(TypedDict):
40
40
  r"""The agent type. Must be \"ca_v1\" currently."""
41
41
  prompt_id: int
42
42
  r"""ID of the prompt associated with the agent"""
43
- custom_message_id: int
44
- r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
45
43
  timezone: str
46
44
  r"""The time zone in which the agent operates"""
47
45
  variables: Dict[str, str]
@@ -60,6 +58,8 @@ class AgentResponseTypedDict(TypedDict):
60
58
  r"""The agent label (DEPRECATED - use labels instead.)"""
61
59
  labels: NotRequired[Nullable[List[str]]]
62
60
  r"""The agent labels"""
61
+ custom_message_id: NotRequired[Nullable[int]]
62
+ r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
63
63
  language_group_id: NotRequired[Nullable[int]]
64
64
  r"""Internal ID of the language group associated with the agent"""
65
65
  prompt_tool_defaults: NotRequired[List[AgentToolDefaultsTypedDict]]
@@ -101,9 +101,6 @@ class AgentResponse(BaseModel):
101
101
  prompt_id: int
102
102
  r"""ID of the prompt associated with the agent"""
103
103
 
104
- custom_message_id: int
105
- r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
106
-
107
104
  timezone: str
108
105
  r"""The time zone in which the agent operates"""
109
106
 
@@ -136,6 +133,9 @@ class AgentResponse(BaseModel):
136
133
  labels: OptionalNullable[List[str]] = UNSET
137
134
  r"""The agent labels"""
138
135
 
136
+ custom_message_id: OptionalNullable[int] = UNSET
137
+ r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
138
+
139
139
  language_group_id: OptionalNullable[int] = UNSET
140
140
  r"""Internal ID of the language group associated with the agent"""
141
141
 
@@ -180,6 +180,7 @@ class AgentResponse(BaseModel):
180
180
  "description",
181
181
  "label",
182
182
  "labels",
183
+ "custom_message_id",
183
184
  "language_group_id",
184
185
  "prompt_tool_defaults",
185
186
  "languages",
@@ -196,6 +197,7 @@ class AgentResponse(BaseModel):
196
197
  "description",
197
198
  "label",
198
199
  "labels",
200
+ "custom_message_id",
199
201
  "language_group_id",
200
202
  "tool_headers",
201
203
  "stt_provider",
@@ -8,6 +8,7 @@ class AgentSttProvider(str, Enum):
8
8
  r"""Speech-to-text providers supported by agents."""
9
9
 
10
10
  GOOGLE_STT_V2_CHIRP_2_ = "Google STT V2 (Chirp 2)"
11
+ DEEPGRAM_NOVA_3_ON_PREM_ = "Deepgram Nova 3 (On-Prem)"
11
12
  DEEPGRAM_NOVA_3 = "Deepgram Nova 3"
12
13
  GOOGLE_STT_V2 = "Google STT V2"
13
14
  GOOGLE_STT_V1 = "Google STT V1"
@@ -26,8 +26,6 @@ class AgentUpdateTypedDict(TypedDict):
26
26
  r"""The agent type. Must be \"ca_v1\" currently."""
27
27
  prompt_id: int
28
28
  r"""ID of the prompt associated with the agent"""
29
- custom_message_id: int
30
- r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
31
29
  timezone: str
32
30
  r"""The time zone in which the agent operates"""
33
31
  variables: Dict[str, str]
@@ -42,6 +40,8 @@ class AgentUpdateTypedDict(TypedDict):
42
40
  r"""The agent label (DEPRECATED - use labels instead.)"""
43
41
  labels: NotRequired[Nullable[List[str]]]
44
42
  r"""The agent labels"""
43
+ custom_message_id: NotRequired[Nullable[int]]
44
+ r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
45
45
  language_group_id: NotRequired[Nullable[int]]
46
46
  r"""Internal ID of the language group associated with the agent"""
47
47
  prompt_tool_defaults: NotRequired[List[AgentToolDefaultsTypedDict]]
@@ -68,9 +68,6 @@ class AgentUpdate(BaseModel):
68
68
  prompt_id: int
69
69
  r"""ID of the prompt associated with the agent"""
70
70
 
71
- custom_message_id: int
72
- r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
73
-
74
71
  timezone: str
75
72
  r"""The time zone in which the agent operates"""
76
73
 
@@ -97,6 +94,9 @@ class AgentUpdate(BaseModel):
97
94
  labels: OptionalNullable[List[str]] = UNSET
98
95
  r"""The agent labels"""
99
96
 
97
+ custom_message_id: OptionalNullable[int] = UNSET
98
+ r"""Internal ID of the custom message that should be delivered at the beginning of a conversation with the agent"""
99
+
100
100
  language_group_id: OptionalNullable[int] = UNSET
101
101
  r"""Internal ID of the language group associated with the agent"""
102
102
 
@@ -126,6 +126,7 @@ class AgentUpdate(BaseModel):
126
126
  "description",
127
127
  "label",
128
128
  "labels",
129
+ "custom_message_id",
129
130
  "language_group_id",
130
131
  "prompt_tool_defaults",
131
132
  "languages",
@@ -137,6 +138,7 @@ class AgentUpdate(BaseModel):
137
138
  "description",
138
139
  "label",
139
140
  "labels",
141
+ "custom_message_id",
140
142
  "language_group_id",
141
143
  "tool_headers",
142
144
  "stt_provider",
@@ -1,10 +1,6 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .schemas_cortex_v1_bridge_phrases_dictionarymetadata import (
5
- SchemasCortexV1BridgePhrasesDictionaryMetadata,
6
- SchemasCortexV1BridgePhrasesDictionaryMetadataTypedDict,
7
- )
8
4
  from syllable_sdk.types import BaseModel
9
5
  from typing import List, Optional
10
6
  from typing_extensions import NotRequired, TypedDict
@@ -19,8 +15,6 @@ class BridgePhrasesConfigTypedDict(TypedDict):
19
15
  r"""Messages to say when the agent is significantly delayed."""
20
16
  tool_responses: NotRequired[List[str]]
21
17
  r"""Messages to say when a tool call is in progress."""
22
- metadata: NotRequired[SchemasCortexV1BridgePhrasesDictionaryMetadataTypedDict]
23
- r"""Metadata for the bridge phrases dictionary."""
24
18
 
25
19
 
26
20
  class BridgePhrasesConfig(BaseModel):
@@ -34,6 +28,3 @@ class BridgePhrasesConfig(BaseModel):
34
28
 
35
29
  tool_responses: Optional[List[str]] = None
36
30
  r"""Messages to say when a tool call is in progress."""
37
-
38
- metadata: Optional[SchemasCortexV1BridgePhrasesDictionaryMetadata] = None
39
- r"""Metadata for the bridge phrases dictionary."""
@@ -21,6 +21,8 @@ class CustomMessageCreateRequestTypedDict(TypedDict):
21
21
  r"""The name of the custom message"""
22
22
  text: str
23
23
  r"""The default message that the agent will deliver if no rules are set or no rules match the current timestamp."""
24
+ preamble: NotRequired[Nullable[str]]
25
+ r"""An optional preamble that will be delivered before the main message, regardless of whether the current time and date match a rule or the system uses the default message. Cannot contain the \"{{ language.mode }}\" tag. In the case of a voice conversation, the user will not be able to interrupt the preamble. Can be used for e.g. legal disclaimers that the user must always see/hear."""
24
26
  label: NotRequired[Nullable[str]]
25
27
  r"""The label of the custom message"""
26
28
  rules: NotRequired[List[CustomMessageRuleTypedDict]]
@@ -38,6 +40,9 @@ class CustomMessageCreateRequest(BaseModel):
38
40
  text: str
39
41
  r"""The default message that the agent will deliver if no rules are set or no rules match the current timestamp."""
40
42
 
43
+ preamble: OptionalNullable[str] = UNSET
44
+ r"""An optional preamble that will be delivered before the main message, regardless of whether the current time and date match a rule or the system uses the default message. Cannot contain the \"{{ language.mode }}\" tag. In the case of a voice conversation, the user will not be able to interrupt the preamble. Can be used for e.g. legal disclaimers that the user must always see/hear."""
45
+
41
46
  label: OptionalNullable[str] = UNSET
42
47
  r"""The label of the custom message"""
43
48
 
@@ -49,8 +54,8 @@ class CustomMessageCreateRequest(BaseModel):
49
54
 
50
55
  @model_serializer(mode="wrap")
51
56
  def serialize_model(self, handler):
52
- optional_fields = ["label", "rules", "type"]
53
- nullable_fields = ["label"]
57
+ optional_fields = ["preamble", "label", "rules", "type"]
58
+ nullable_fields = ["preamble", "label"]
54
59
  null_default_fields = []
55
60
 
56
61
  serialized = handler(self)
@@ -34,6 +34,8 @@ class CustomMessageResponseTypedDict(TypedDict):
34
34
  r"""Timestamp of the most recent update to the custom message"""
35
35
  last_updated_by: str
36
36
  r"""The email address of the user who most recently updated the custom message"""
37
+ preamble: NotRequired[Nullable[str]]
38
+ r"""An optional preamble that will be delivered before the main message, regardless of whether the current time and date match a rule or the system uses the default message. Cannot contain the \"{{ language.mode }}\" tag. In the case of a voice conversation, the user will not be able to interrupt the preamble. Can be used for e.g. legal disclaimers that the user must always see/hear."""
37
39
  label: NotRequired[Nullable[str]]
38
40
  r"""The label of the custom message"""
39
41
  rules: NotRequired[List[CustomMessageRuleTypedDict]]
@@ -68,6 +70,9 @@ class CustomMessageResponse(BaseModel):
68
70
  last_updated_by: str
69
71
  r"""The email address of the user who most recently updated the custom message"""
70
72
 
73
+ preamble: OptionalNullable[str] = UNSET
74
+ r"""An optional preamble that will be delivered before the main message, regardless of whether the current time and date match a rule or the system uses the default message. Cannot contain the \"{{ language.mode }}\" tag. In the case of a voice conversation, the user will not be able to interrupt the preamble. Can be used for e.g. legal disclaimers that the user must always see/hear."""
75
+
71
76
  label: OptionalNullable[str] = UNSET
72
77
  r"""The label of the custom message"""
73
78
 
@@ -82,8 +87,8 @@ class CustomMessageResponse(BaseModel):
82
87
 
83
88
  @model_serializer(mode="wrap")
84
89
  def serialize_model(self, handler):
85
- optional_fields = ["label", "rules", "agent_count", "type"]
86
- nullable_fields = ["label", "agent_count"]
90
+ optional_fields = ["preamble", "label", "rules", "agent_count", "type"]
91
+ nullable_fields = ["preamble", "label", "agent_count"]
87
92
  null_default_fields = []
88
93
 
89
94
  serialized = handler(self)
@@ -23,6 +23,8 @@ class CustomMessageUpdateRequestTypedDict(TypedDict):
23
23
  r"""The default message that the agent will deliver if no rules are set or no rules match the current timestamp."""
24
24
  id: int
25
25
  r"""The ID of the custom message"""
26
+ preamble: NotRequired[Nullable[str]]
27
+ r"""An optional preamble that will be delivered before the main message, regardless of whether the current time and date match a rule or the system uses the default message. Cannot contain the \"{{ language.mode }}\" tag. In the case of a voice conversation, the user will not be able to interrupt the preamble. Can be used for e.g. legal disclaimers that the user must always see/hear."""
26
28
  label: NotRequired[Nullable[str]]
27
29
  r"""The label of the custom message"""
28
30
  rules: NotRequired[List[CustomMessageRuleTypedDict]]
@@ -43,6 +45,9 @@ class CustomMessageUpdateRequest(BaseModel):
43
45
  id: int
44
46
  r"""The ID of the custom message"""
45
47
 
48
+ preamble: OptionalNullable[str] = UNSET
49
+ r"""An optional preamble that will be delivered before the main message, regardless of whether the current time and date match a rule or the system uses the default message. Cannot contain the \"{{ language.mode }}\" tag. In the case of a voice conversation, the user will not be able to interrupt the preamble. Can be used for e.g. legal disclaimers that the user must always see/hear."""
50
+
46
51
  label: OptionalNullable[str] = UNSET
47
52
  r"""The label of the custom message"""
48
53
 
@@ -54,8 +59,8 @@ class CustomMessageUpdateRequest(BaseModel):
54
59
 
55
60
  @model_serializer(mode="wrap")
56
61
  def serialize_model(self, handler):
57
- optional_fields = ["label", "rules", "type"]
58
- nullable_fields = ["label"]
62
+ optional_fields = ["preamble", "label", "rules", "type"]
63
+ nullable_fields = ["preamble", "label"]
59
64
  null_default_fields = []
60
65
 
61
66
  serialized = handler(self)
@@ -6,7 +6,7 @@ from typing import Optional
6
6
  from typing_extensions import NotRequired, TypedDict
7
7
 
8
8
 
9
- class SchemasTtsV1PronunciationsDictionaryMetadataTypedDict(TypedDict):
9
+ class DictionaryMetadataTypedDict(TypedDict):
10
10
  r"""Audit metadata associated with a dictionary."""
11
11
 
12
12
  entries: int
@@ -14,7 +14,7 @@ class SchemasTtsV1PronunciationsDictionaryMetadataTypedDict(TypedDict):
14
14
  source: NotRequired[str]
15
15
 
16
16
 
17
- class SchemasTtsV1PronunciationsDictionaryMetadata(BaseModel):
17
+ class DictionaryMetadata(BaseModel):
18
18
  r"""Audit metadata associated with a dictionary."""
19
19
 
20
20
  entries: int
@@ -0,0 +1,28 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .directorymembercreate import DirectoryMemberCreate, DirectoryMemberCreateTypedDict
5
+ from .directoryresponseformat import DirectoryResponseFormat
6
+ from syllable_sdk.types import BaseModel
7
+ from syllable_sdk.utils import FieldMetadata, QueryParamMetadata, RequestMetadata
8
+ from typing import Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class DirectoryMemberCreateRequestTypedDict(TypedDict):
13
+ directory_member_create: DirectoryMemberCreateTypedDict
14
+ response_format: NotRequired[DirectoryResponseFormat]
15
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
16
+
17
+
18
+ class DirectoryMemberCreateRequest(BaseModel):
19
+ directory_member_create: Annotated[
20
+ DirectoryMemberCreate,
21
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
+ ]
23
+
24
+ response_format: Annotated[
25
+ Optional[DirectoryResponseFormat],
26
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
27
+ ] = None
28
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
@@ -0,0 +1,21 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .directoryresponseformat import DirectoryResponseFormat
5
+ from syllable_sdk.types import BaseModel
6
+ from syllable_sdk.utils import FieldMetadata, QueryParamMetadata
7
+ from typing import Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class DirectoryMemberDownloadRequestTypedDict(TypedDict):
12
+ response_format: NotRequired[DirectoryResponseFormat]
13
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
14
+
15
+
16
+ class DirectoryMemberDownloadRequest(BaseModel):
17
+ response_format: Annotated[
18
+ Optional[DirectoryResponseFormat],
19
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
20
+ ] = None
21
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
@@ -1,16 +1,26 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .directoryresponseformat import DirectoryResponseFormat
4
5
  from syllable_sdk.types import BaseModel
5
- from syllable_sdk.utils import FieldMetadata, PathParamMetadata
6
- from typing_extensions import Annotated, TypedDict
6
+ from syllable_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
7
+ from typing import Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
7
9
 
8
10
 
9
11
  class DirectoryMemberGetByIDRequestTypedDict(TypedDict):
10
12
  member_id: int
13
+ response_format: NotRequired[DirectoryResponseFormat]
14
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
11
15
 
12
16
 
13
17
  class DirectoryMemberGetByIDRequest(BaseModel):
14
18
  member_id: Annotated[
15
19
  int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
16
20
  ]
21
+
22
+ response_format: Annotated[
23
+ Optional[DirectoryResponseFormat],
24
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
25
+ ] = None
26
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .directorymemberproperties import DirectoryMemberProperties
5
+ from .directoryresponseformat import DirectoryResponseFormat
5
6
  from .orderbydirection import OrderByDirection
6
7
  from pydantic import model_serializer
7
8
  from syllable_sdk.types import (
@@ -17,84 +18,93 @@ from typing_extensions import Annotated, NotRequired, TypedDict
17
18
 
18
19
 
19
20
  class DirectoryMemberListRequestTypedDict(TypedDict):
21
+ response_format: NotRequired[DirectoryResponseFormat]
22
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
20
23
  page: NotRequired[Nullable[int]]
21
- r"""The page number from which to start (0-based)"""
24
+ r"""Page number (0-based)"""
22
25
  limit: NotRequired[int]
23
- r"""The maximum number of items to return"""
26
+ r"""Items per page"""
24
27
  search_fields: NotRequired[List[DirectoryMemberProperties]]
25
- r"""String names of fields to search. Correspond by index to search field values"""
28
+ r"""Fields to search; aligns with search_field_values"""
26
29
  search_field_values: NotRequired[List[str]]
27
- r"""Values of fields to search. Correspond by index to search fields. Unless field name contains \"list\", an individual search field value cannot be a list"""
30
+ r"""Values for search_fields in matching order"""
28
31
  order_by: NotRequired[Nullable[DirectoryMemberProperties]]
29
- r"""The field whose value should be used to order the results"""
32
+ r"""Field to order results by"""
30
33
  order_by_direction: NotRequired[Nullable[OrderByDirection]]
31
- r"""The direction in which to order the results"""
34
+ r"""Direction to order results"""
32
35
  fields: NotRequired[Nullable[List[DirectoryMemberProperties]]]
33
- r"""The fields to include in the response"""
36
+ r"""Fields to include in response"""
34
37
  start_datetime: NotRequired[Nullable[str]]
35
- r"""The start datetime for filtering results"""
38
+ r"""Start datetime for filtering results"""
36
39
  end_datetime: NotRequired[Nullable[str]]
37
- r"""The end datetime for filtering results"""
40
+ r"""End datetime for filtering results"""
38
41
 
39
42
 
40
43
  class DirectoryMemberListRequest(BaseModel):
44
+ response_format: Annotated[
45
+ Optional[DirectoryResponseFormat],
46
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
47
+ ] = None
48
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
49
+
41
50
  page: Annotated[
42
51
  OptionalNullable[int],
43
52
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
44
53
  ] = UNSET
45
- r"""The page number from which to start (0-based)"""
54
+ r"""Page number (0-based)"""
46
55
 
47
56
  limit: Annotated[
48
57
  Optional[int],
49
58
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
50
59
  ] = 25
51
- r"""The maximum number of items to return"""
60
+ r"""Items per page"""
52
61
 
53
62
  search_fields: Annotated[
54
63
  Optional[List[DirectoryMemberProperties]],
55
64
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
56
65
  ] = None
57
- r"""String names of fields to search. Correspond by index to search field values"""
66
+ r"""Fields to search; aligns with search_field_values"""
58
67
 
59
68
  search_field_values: Annotated[
60
69
  Optional[List[str]],
61
70
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
62
71
  ] = None
63
- r"""Values of fields to search. Correspond by index to search fields. Unless field name contains \"list\", an individual search field value cannot be a list"""
72
+ r"""Values for search_fields in matching order"""
64
73
 
65
74
  order_by: Annotated[
66
75
  OptionalNullable[DirectoryMemberProperties],
67
76
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
68
77
  ] = UNSET
69
- r"""The field whose value should be used to order the results"""
78
+ r"""Field to order results by"""
70
79
 
71
80
  order_by_direction: Annotated[
72
81
  OptionalNullable[OrderByDirection],
73
82
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
74
83
  ] = UNSET
75
- r"""The direction in which to order the results"""
84
+ r"""Direction to order results"""
76
85
 
77
86
  fields: Annotated[
78
87
  OptionalNullable[List[DirectoryMemberProperties]],
79
88
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
80
89
  ] = UNSET
81
- r"""The fields to include in the response"""
90
+ r"""Fields to include in response"""
82
91
 
83
92
  start_datetime: Annotated[
84
93
  OptionalNullable[str],
85
94
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
86
95
  ] = UNSET
87
- r"""The start datetime for filtering results"""
96
+ r"""Start datetime for filtering results"""
88
97
 
89
98
  end_datetime: Annotated[
90
99
  OptionalNullable[str],
91
100
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
92
101
  ] = UNSET
93
- r"""The end datetime for filtering results"""
102
+ r"""End datetime for filtering results"""
94
103
 
95
104
  @model_serializer(mode="wrap")
96
105
  def serialize_model(self, handler):
97
106
  optional_fields = [
107
+ "response_format",
98
108
  "page",
99
109
  "limit",
100
110
  "search_fields",
@@ -2,14 +2,23 @@
2
2
 
3
3
  from __future__ import annotations
4
4
  from .directorymemberupdate import DirectoryMemberUpdate, DirectoryMemberUpdateTypedDict
5
+ from .directoryresponseformat import DirectoryResponseFormat
5
6
  from syllable_sdk.types import BaseModel
6
- from syllable_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata
7
- from typing_extensions import Annotated, TypedDict
7
+ from syllable_sdk.utils import (
8
+ FieldMetadata,
9
+ PathParamMetadata,
10
+ QueryParamMetadata,
11
+ RequestMetadata,
12
+ )
13
+ from typing import Optional
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
8
15
 
9
16
 
10
17
  class DirectoryMemberUpdateRequestTypedDict(TypedDict):
11
18
  member_id: int
12
19
  directory_member_update: DirectoryMemberUpdateTypedDict
20
+ response_format: NotRequired[DirectoryResponseFormat]
21
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
13
22
 
14
23
 
15
24
  class DirectoryMemberUpdateRequest(BaseModel):
@@ -21,3 +30,9 @@ class DirectoryMemberUpdateRequest(BaseModel):
21
30
  DirectoryMemberUpdate,
22
31
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
23
32
  ]
33
+
34
+ response_format: Annotated[
35
+ Optional[DirectoryResponseFormat],
36
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
37
+ ] = None
38
+ r"""Directory response format: normalized (default) strips @hours and formats times; raw returns stored @hours values."""
@@ -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 DirectoryResponseFormat(str, Enum):
8
+ r"""Response shape selector for directory member APIs."""
9
+
10
+ NORMALIZED = "normalized"
11
+ RAW = "raw"
@@ -3,7 +3,6 @@
3
3
  from __future__ import annotations
4
4
  from .callaction import CallAction, CallActionTypedDict
5
5
  from .incrementaction import IncrementAction, IncrementActionTypedDict
6
- from .saveaction import SaveAction, SaveActionTypedDict
7
6
  from .sayaction import SayAction, SayActionTypedDict
8
7
  from .setvalueaction import SetValueAction, SetValueActionTypedDict
9
8
  from pydantic import Discriminator, Tag, model_serializer
@@ -22,9 +21,8 @@ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
22
21
  EventTaskEventsStartTypedDict = TypeAliasType(
23
22
  "EventTaskEventsStartTypedDict",
24
23
  Union[
25
- SayActionTypedDict,
26
- SaveActionTypedDict,
27
24
  IncrementActionTypedDict,
25
+ SayActionTypedDict,
28
26
  SetValueActionTypedDict,
29
27
  CallActionTypedDict,
30
28
  ],
@@ -35,7 +33,6 @@ EventTaskEventsStart = Annotated[
35
33
  Union[
36
34
  Annotated[CallAction, Tag("call")],
37
35
  Annotated[IncrementAction, Tag("inc")],
38
- Annotated[SaveAction, Tag("save")],
39
36
  Annotated[SayAction, Tag("say")],
40
37
  Annotated[SetValueAction, Tag("set")],
41
38
  ],
@@ -60,7 +60,7 @@ class ExpressionTaskTypedDict(TypedDict):
60
60
  expression: NotRequired[Nullable[Expression2TypedDict]]
61
61
  output: NotRequired[Nullable[Any]]
62
62
  on: NotRequired[ExpressionTaskEventsTypedDict]
63
- r"""Actions to perform when events occur (enter, submit)."""
63
+ r"""Actions to perform when events occur (start, submit)."""
64
64
 
65
65
 
66
66
  class ExpressionTask(BaseModel):
@@ -97,7 +97,7 @@ class ExpressionTask(BaseModel):
97
97
  output: OptionalNullable[Any] = UNSET
98
98
 
99
99
  on: Optional[ExpressionTaskEvents] = None
100
- r"""Actions to perform when events occur (enter, submit)."""
100
+ r"""Actions to perform when events occur (start, submit)."""
101
101
 
102
102
  @model_serializer(mode="wrap")
103
103
  def serialize_model(self, handler):
@@ -22,9 +22,8 @@ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
22
22
  ExpressionTaskEventsStartTypedDict = TypeAliasType(
23
23
  "ExpressionTaskEventsStartTypedDict",
24
24
  Union[
25
- SayActionTypedDict,
26
- SaveActionTypedDict,
27
25
  IncrementActionTypedDict,
26
+ SayActionTypedDict,
28
27
  SetValueActionTypedDict,
29
28
  CallActionTypedDict,
30
29
  ],
@@ -35,7 +34,6 @@ ExpressionTaskEventsStart = Annotated[
35
34
  Union[
36
35
  Annotated[CallAction, Tag("call")],
37
36
  Annotated[IncrementAction, Tag("inc")],
38
- Annotated[SaveAction, Tag("save")],
39
37
  Annotated[SayAction, Tag("say")],
40
38
  Annotated[SetValueAction, Tag("set")],
41
39
  ],
@@ -47,8 +45,8 @@ ExpressionTaskEventsSubmitTypedDict = TypeAliasType(
47
45
  "ExpressionTaskEventsSubmitTypedDict",
48
46
  Union[
49
47
  IncrementActionTypedDict,
50
- SayActionTypedDict,
51
48
  SaveActionTypedDict,
49
+ SayActionTypedDict,
52
50
  SetValueActionTypedDict,
53
51
  CallActionTypedDict,
54
52
  ],
@@ -68,7 +66,7 @@ ExpressionTaskEventsSubmit = Annotated[
68
66
 
69
67
 
70
68
  class ExpressionTaskEventsTypedDict(TypedDict):
71
- r"""Actions to perform when events occur (enter, submit)."""
69
+ r"""Actions to perform when events occur (start, submit)."""
72
70
 
73
71
  start: NotRequired[Nullable[List[ExpressionTaskEventsStartTypedDict]]]
74
72
  r"""Actions to execute on the first input from the user."""
@@ -77,7 +75,7 @@ class ExpressionTaskEventsTypedDict(TypedDict):
77
75
 
78
76
 
79
77
  class ExpressionTaskEvents(BaseModel):
80
- r"""Actions to perform when events occur (enter, submit)."""
78
+ r"""Actions to perform when events occur (start, submit)."""
81
79
 
82
80
  start: OptionalNullable[List[ExpressionTaskEventsStart]] = UNSET
83
81
  r"""Actions to execute on the first input from the user."""