syllable-sdk 0.35.56__py3-none-any.whl → 0.35.65__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 +3 -3
- syllable_sdk/channels.py +374 -2
- syllable_sdk/errors/__init__.py +3 -2
- syllable_sdk/models/__init__.py +40 -2
- syllable_sdk/models/agentvoicedisplayname.py +24 -0
- syllable_sdk/models/agentvoicevarname.py +50 -0
- syllable_sdk/models/channel.py +8 -2
- syllable_sdk/models/channelconfigview.py +56 -0
- syllable_sdk/models/languagecode.py +2 -0
- syllable_sdk/models/organizationchannelconfig.py +70 -0
- syllable_sdk/models/organizationchannelcreaterequest.py +82 -0
- syllable_sdk/models/organizationchannelupdaterequest.py +87 -0
- syllable_sdk/models/supportedllm.py +3 -3
- syllable_sdk/models/telephonyconfigurations.py +84 -0
- syllable_sdk/models/usercreaterequest.py +7 -1
- syllable_sdk/models/users_send_emailop.py +9 -2
- syllable_sdk/users.py +6 -0
- syllable_sdk/utils/__init__.py +3 -2
- syllable_sdk/v1.py +6 -0
- {syllable_sdk-0.35.56.dist-info → syllable_sdk-0.35.65.dist-info}/METADATA +3 -1
- {syllable_sdk-0.35.56.dist-info → syllable_sdk-0.35.65.dist-info}/RECORD +22 -17
- {syllable_sdk-0.35.56.dist-info → syllable_sdk-0.35.65.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from .telephonyconfigurations import (
|
|
5
|
+
TelephonyConfigurations,
|
|
6
|
+
TelephonyConfigurationsTypedDict,
|
|
7
|
+
)
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from syllable_sdk.types import (
|
|
10
|
+
BaseModel,
|
|
11
|
+
Nullable,
|
|
12
|
+
OptionalNullable,
|
|
13
|
+
UNSET,
|
|
14
|
+
UNSET_SENTINEL,
|
|
15
|
+
)
|
|
16
|
+
from typing_extensions import NotRequired, TypedDict
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ChannelConfigViewTypedDict(TypedDict):
|
|
20
|
+
telephony: NotRequired[Nullable[TelephonyConfigurationsTypedDict]]
|
|
21
|
+
r"""Telephony configurations to be applied to targets belonging to the channel. Only applies to voice supported channels."""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class ChannelConfigView(BaseModel):
|
|
25
|
+
telephony: OptionalNullable[TelephonyConfigurations] = UNSET
|
|
26
|
+
r"""Telephony configurations to be applied to targets belonging to the channel. Only applies to voice supported channels."""
|
|
27
|
+
|
|
28
|
+
@model_serializer(mode="wrap")
|
|
29
|
+
def serialize_model(self, handler):
|
|
30
|
+
optional_fields = ["telephony"]
|
|
31
|
+
nullable_fields = ["telephony"]
|
|
32
|
+
null_default_fields = []
|
|
33
|
+
|
|
34
|
+
serialized = handler(self)
|
|
35
|
+
|
|
36
|
+
m = {}
|
|
37
|
+
|
|
38
|
+
for n, f in type(self).model_fields.items():
|
|
39
|
+
k = f.alias or n
|
|
40
|
+
val = serialized.get(k)
|
|
41
|
+
serialized.pop(k, None)
|
|
42
|
+
|
|
43
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
44
|
+
is_set = (
|
|
45
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
46
|
+
or k in null_default_fields
|
|
47
|
+
) # pylint: disable=no-member
|
|
48
|
+
|
|
49
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
50
|
+
m[k] = val
|
|
51
|
+
elif val != UNSET_SENTINEL and (
|
|
52
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
53
|
+
):
|
|
54
|
+
m[k] = val
|
|
55
|
+
|
|
56
|
+
return m
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from .telephonyconfigurations import (
|
|
5
|
+
TelephonyConfigurations,
|
|
6
|
+
TelephonyConfigurationsTypedDict,
|
|
7
|
+
)
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from syllable_sdk.types import (
|
|
10
|
+
BaseModel,
|
|
11
|
+
Nullable,
|
|
12
|
+
OptionalNullable,
|
|
13
|
+
UNSET,
|
|
14
|
+
UNSET_SENTINEL,
|
|
15
|
+
)
|
|
16
|
+
from typing_extensions import NotRequired, TypedDict
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class OrganizationChannelConfigTypedDict(TypedDict):
|
|
20
|
+
r"""Channel config information for creates / updates through the organizations API"""
|
|
21
|
+
|
|
22
|
+
account_sid: NotRequired[Nullable[str]]
|
|
23
|
+
r"""SID of the Twilio account"""
|
|
24
|
+
auth_token: NotRequired[Nullable[str]]
|
|
25
|
+
r"""The Twilio auth token"""
|
|
26
|
+
telephony: NotRequired[Nullable[TelephonyConfigurationsTypedDict]]
|
|
27
|
+
r"""Telephony configurations to be applied to the targets under the channel"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class OrganizationChannelConfig(BaseModel):
|
|
31
|
+
r"""Channel config information for creates / updates through the organizations API"""
|
|
32
|
+
|
|
33
|
+
account_sid: OptionalNullable[str] = UNSET
|
|
34
|
+
r"""SID of the Twilio account"""
|
|
35
|
+
|
|
36
|
+
auth_token: OptionalNullable[str] = UNSET
|
|
37
|
+
r"""The Twilio auth token"""
|
|
38
|
+
|
|
39
|
+
telephony: OptionalNullable[TelephonyConfigurations] = UNSET
|
|
40
|
+
r"""Telephony configurations to be applied to the targets under the channel"""
|
|
41
|
+
|
|
42
|
+
@model_serializer(mode="wrap")
|
|
43
|
+
def serialize_model(self, handler):
|
|
44
|
+
optional_fields = ["account_sid", "auth_token", "telephony"]
|
|
45
|
+
nullable_fields = ["account_sid", "auth_token", "telephony"]
|
|
46
|
+
null_default_fields = []
|
|
47
|
+
|
|
48
|
+
serialized = handler(self)
|
|
49
|
+
|
|
50
|
+
m = {}
|
|
51
|
+
|
|
52
|
+
for n, f in type(self).model_fields.items():
|
|
53
|
+
k = f.alias or n
|
|
54
|
+
val = serialized.get(k)
|
|
55
|
+
serialized.pop(k, None)
|
|
56
|
+
|
|
57
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
58
|
+
is_set = (
|
|
59
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
60
|
+
or k in null_default_fields
|
|
61
|
+
) # pylint: disable=no-member
|
|
62
|
+
|
|
63
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
64
|
+
m[k] = val
|
|
65
|
+
elif val != UNSET_SENTINEL and (
|
|
66
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
67
|
+
):
|
|
68
|
+
m[k] = val
|
|
69
|
+
|
|
70
|
+
return m
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from .channelservices import ChannelServices
|
|
5
|
+
from .organizationchannelconfig import (
|
|
6
|
+
OrganizationChannelConfig,
|
|
7
|
+
OrganizationChannelConfigTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from pydantic import model_serializer
|
|
10
|
+
from syllable_sdk.types import (
|
|
11
|
+
BaseModel,
|
|
12
|
+
Nullable,
|
|
13
|
+
OptionalNullable,
|
|
14
|
+
UNSET,
|
|
15
|
+
UNSET_SENTINEL,
|
|
16
|
+
)
|
|
17
|
+
from typing import Optional
|
|
18
|
+
from typing_extensions import NotRequired, TypedDict
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OrganizationChannelCreateRequestTypedDict(TypedDict):
|
|
22
|
+
r"""Request model to create a channel through the organizations API"""
|
|
23
|
+
|
|
24
|
+
name: str
|
|
25
|
+
r"""The channel name"""
|
|
26
|
+
channel_service: ChannelServices
|
|
27
|
+
r"""The communication service for a channel."""
|
|
28
|
+
config: OrganizationChannelConfigTypedDict
|
|
29
|
+
r"""Channel config information for creates / updates through the organizations API"""
|
|
30
|
+
supported_modes: NotRequired[Nullable[str]]
|
|
31
|
+
r"""The comma-delimited list of supported modes for the channel, which defines the possible communication methods for channel targets linked to it."""
|
|
32
|
+
is_system_channel: NotRequired[bool]
|
|
33
|
+
r"""Whether the channel is a built-in system channel (i.e., is not customizable)"""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class OrganizationChannelCreateRequest(BaseModel):
|
|
37
|
+
r"""Request model to create a channel through the organizations API"""
|
|
38
|
+
|
|
39
|
+
name: str
|
|
40
|
+
r"""The channel name"""
|
|
41
|
+
|
|
42
|
+
channel_service: ChannelServices
|
|
43
|
+
r"""The communication service for a channel."""
|
|
44
|
+
|
|
45
|
+
config: OrganizationChannelConfig
|
|
46
|
+
r"""Channel config information for creates / updates through the organizations API"""
|
|
47
|
+
|
|
48
|
+
supported_modes: OptionalNullable[str] = UNSET
|
|
49
|
+
r"""The comma-delimited list of supported modes for the channel, which defines the possible communication methods for channel targets linked to it."""
|
|
50
|
+
|
|
51
|
+
is_system_channel: Optional[bool] = True
|
|
52
|
+
r"""Whether the channel is a built-in system channel (i.e., is not customizable)"""
|
|
53
|
+
|
|
54
|
+
@model_serializer(mode="wrap")
|
|
55
|
+
def serialize_model(self, handler):
|
|
56
|
+
optional_fields = ["supported_modes", "is_system_channel"]
|
|
57
|
+
nullable_fields = ["supported_modes"]
|
|
58
|
+
null_default_fields = []
|
|
59
|
+
|
|
60
|
+
serialized = handler(self)
|
|
61
|
+
|
|
62
|
+
m = {}
|
|
63
|
+
|
|
64
|
+
for n, f in type(self).model_fields.items():
|
|
65
|
+
k = f.alias or n
|
|
66
|
+
val = serialized.get(k)
|
|
67
|
+
serialized.pop(k, None)
|
|
68
|
+
|
|
69
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
70
|
+
is_set = (
|
|
71
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
72
|
+
or k in null_default_fields
|
|
73
|
+
) # pylint: disable=no-member
|
|
74
|
+
|
|
75
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
76
|
+
m[k] = val
|
|
77
|
+
elif val != UNSET_SENTINEL and (
|
|
78
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
79
|
+
):
|
|
80
|
+
m[k] = val
|
|
81
|
+
|
|
82
|
+
return m
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from .channelservices import ChannelServices
|
|
5
|
+
from .organizationchannelconfig import (
|
|
6
|
+
OrganizationChannelConfig,
|
|
7
|
+
OrganizationChannelConfigTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from pydantic import model_serializer
|
|
10
|
+
from syllable_sdk.types import (
|
|
11
|
+
BaseModel,
|
|
12
|
+
Nullable,
|
|
13
|
+
OptionalNullable,
|
|
14
|
+
UNSET,
|
|
15
|
+
UNSET_SENTINEL,
|
|
16
|
+
)
|
|
17
|
+
from typing import Optional
|
|
18
|
+
from typing_extensions import NotRequired, TypedDict
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OrganizationChannelUpdateRequestTypedDict(TypedDict):
|
|
22
|
+
r"""Request model to update a channel through the organizations API"""
|
|
23
|
+
|
|
24
|
+
name: str
|
|
25
|
+
r"""The channel name"""
|
|
26
|
+
channel_service: ChannelServices
|
|
27
|
+
r"""The communication service for a channel."""
|
|
28
|
+
config: OrganizationChannelConfigTypedDict
|
|
29
|
+
r"""Channel config information for creates / updates through the organizations API"""
|
|
30
|
+
id: int
|
|
31
|
+
r"""The internal ID of the channel"""
|
|
32
|
+
supported_modes: NotRequired[Nullable[str]]
|
|
33
|
+
r"""The comma-delimited list of supported modes for the channel, which defines the possible communication methods for channel targets linked to it."""
|
|
34
|
+
is_system_channel: NotRequired[bool]
|
|
35
|
+
r"""Whether the channel is a built-in system channel (i.e., is not customizable)"""
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class OrganizationChannelUpdateRequest(BaseModel):
|
|
39
|
+
r"""Request model to update a channel through the organizations API"""
|
|
40
|
+
|
|
41
|
+
name: str
|
|
42
|
+
r"""The channel name"""
|
|
43
|
+
|
|
44
|
+
channel_service: ChannelServices
|
|
45
|
+
r"""The communication service for a channel."""
|
|
46
|
+
|
|
47
|
+
config: OrganizationChannelConfig
|
|
48
|
+
r"""Channel config information for creates / updates through the organizations API"""
|
|
49
|
+
|
|
50
|
+
id: int
|
|
51
|
+
r"""The internal ID of the channel"""
|
|
52
|
+
|
|
53
|
+
supported_modes: OptionalNullable[str] = UNSET
|
|
54
|
+
r"""The comma-delimited list of supported modes for the channel, which defines the possible communication methods for channel targets linked to it."""
|
|
55
|
+
|
|
56
|
+
is_system_channel: Optional[bool] = True
|
|
57
|
+
r"""Whether the channel is a built-in system channel (i.e., is not customizable)"""
|
|
58
|
+
|
|
59
|
+
@model_serializer(mode="wrap")
|
|
60
|
+
def serialize_model(self, handler):
|
|
61
|
+
optional_fields = ["supported_modes", "is_system_channel"]
|
|
62
|
+
nullable_fields = ["supported_modes"]
|
|
63
|
+
null_default_fields = []
|
|
64
|
+
|
|
65
|
+
serialized = handler(self)
|
|
66
|
+
|
|
67
|
+
m = {}
|
|
68
|
+
|
|
69
|
+
for n, f in type(self).model_fields.items():
|
|
70
|
+
k = f.alias or n
|
|
71
|
+
val = serialized.get(k)
|
|
72
|
+
serialized.pop(k, None)
|
|
73
|
+
|
|
74
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
75
|
+
is_set = (
|
|
76
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
77
|
+
or k in null_default_fields
|
|
78
|
+
) # pylint: disable=no-member
|
|
79
|
+
|
|
80
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
81
|
+
m[k] = val
|
|
82
|
+
elif val != UNSET_SENTINEL and (
|
|
83
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
84
|
+
):
|
|
85
|
+
m[k] = val
|
|
86
|
+
|
|
87
|
+
return m
|
|
@@ -25,7 +25,7 @@ class SupportedLlmTypedDict(TypedDict):
|
|
|
25
25
|
r"""LLM API provider."""
|
|
26
26
|
model: NotRequired[str]
|
|
27
27
|
r"""Name of the model. Must match the deployment name in Azure AI Studio."""
|
|
28
|
-
version: NotRequired[str]
|
|
28
|
+
version: NotRequired[Nullable[str]]
|
|
29
29
|
r"""Model version."""
|
|
30
30
|
api_version: NotRequired[Nullable[str]]
|
|
31
31
|
r"""Version of the provider's API."""
|
|
@@ -46,7 +46,7 @@ class SupportedLlm(BaseModel):
|
|
|
46
46
|
model: Optional[str] = "gpt-4o"
|
|
47
47
|
r"""Name of the model. Must match the deployment name in Azure AI Studio."""
|
|
48
48
|
|
|
49
|
-
version:
|
|
49
|
+
version: OptionalNullable[str] = UNSET
|
|
50
50
|
r"""Model version."""
|
|
51
51
|
|
|
52
52
|
api_version: OptionalNullable[str] = UNSET
|
|
@@ -55,7 +55,7 @@ class SupportedLlm(BaseModel):
|
|
|
55
55
|
@model_serializer(mode="wrap")
|
|
56
56
|
def serialize_model(self, handler):
|
|
57
57
|
optional_fields = ["provider", "model", "version", "api_version"]
|
|
58
|
-
nullable_fields = ["api_version"]
|
|
58
|
+
nullable_fields = ["version", "api_version"]
|
|
59
59
|
null_default_fields = []
|
|
60
60
|
|
|
61
61
|
serialized = handler(self)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from pydantic import model_serializer
|
|
5
|
+
from syllable_sdk.types import (
|
|
6
|
+
BaseModel,
|
|
7
|
+
Nullable,
|
|
8
|
+
OptionalNullable,
|
|
9
|
+
UNSET,
|
|
10
|
+
UNSET_SENTINEL,
|
|
11
|
+
)
|
|
12
|
+
from typing_extensions import NotRequired, TypedDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class TelephonyConfigurationsTypedDict(TypedDict):
|
|
16
|
+
pre_input_timeout: NotRequired[Nullable[float]]
|
|
17
|
+
r"""Pre input silence threshold"""
|
|
18
|
+
post_speech_input_timeout: NotRequired[Nullable[float]]
|
|
19
|
+
r"""Post speech silence timeout to determine input as ended."""
|
|
20
|
+
post_dtmf_input_timeout: NotRequired[Nullable[float]]
|
|
21
|
+
r"""Post dtmf silence timeout to determine input as ended."""
|
|
22
|
+
overall_input_timeout: NotRequired[Nullable[float]]
|
|
23
|
+
r"""Total input timeout"""
|
|
24
|
+
output_padding: NotRequired[Nullable[float]]
|
|
25
|
+
r"""Number of seconds to start listening to user input before assistant speech ends"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class TelephonyConfigurations(BaseModel):
|
|
29
|
+
pre_input_timeout: OptionalNullable[float] = UNSET
|
|
30
|
+
r"""Pre input silence threshold"""
|
|
31
|
+
|
|
32
|
+
post_speech_input_timeout: OptionalNullable[float] = UNSET
|
|
33
|
+
r"""Post speech silence timeout to determine input as ended."""
|
|
34
|
+
|
|
35
|
+
post_dtmf_input_timeout: OptionalNullable[float] = UNSET
|
|
36
|
+
r"""Post dtmf silence timeout to determine input as ended."""
|
|
37
|
+
|
|
38
|
+
overall_input_timeout: OptionalNullable[float] = UNSET
|
|
39
|
+
r"""Total input timeout"""
|
|
40
|
+
|
|
41
|
+
output_padding: OptionalNullable[float] = UNSET
|
|
42
|
+
r"""Number of seconds to start listening to user input before assistant speech ends"""
|
|
43
|
+
|
|
44
|
+
@model_serializer(mode="wrap")
|
|
45
|
+
def serialize_model(self, handler):
|
|
46
|
+
optional_fields = [
|
|
47
|
+
"pre_input_timeout",
|
|
48
|
+
"post_speech_input_timeout",
|
|
49
|
+
"post_dtmf_input_timeout",
|
|
50
|
+
"overall_input_timeout",
|
|
51
|
+
"output_padding",
|
|
52
|
+
]
|
|
53
|
+
nullable_fields = [
|
|
54
|
+
"pre_input_timeout",
|
|
55
|
+
"post_speech_input_timeout",
|
|
56
|
+
"post_dtmf_input_timeout",
|
|
57
|
+
"overall_input_timeout",
|
|
58
|
+
"output_padding",
|
|
59
|
+
]
|
|
60
|
+
null_default_fields = []
|
|
61
|
+
|
|
62
|
+
serialized = handler(self)
|
|
63
|
+
|
|
64
|
+
m = {}
|
|
65
|
+
|
|
66
|
+
for n, f in type(self).model_fields.items():
|
|
67
|
+
k = f.alias or n
|
|
68
|
+
val = serialized.get(k)
|
|
69
|
+
serialized.pop(k, None)
|
|
70
|
+
|
|
71
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
72
|
+
is_set = (
|
|
73
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
74
|
+
or k in null_default_fields
|
|
75
|
+
) # pylint: disable=no-member
|
|
76
|
+
|
|
77
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
78
|
+
m[k] = val
|
|
79
|
+
elif val != UNSET_SENTINEL and (
|
|
80
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
81
|
+
):
|
|
82
|
+
m[k] = val
|
|
83
|
+
|
|
84
|
+
return m
|
|
@@ -10,6 +10,7 @@ from syllable_sdk.types import (
|
|
|
10
10
|
UNSET,
|
|
11
11
|
UNSET_SENTINEL,
|
|
12
12
|
)
|
|
13
|
+
from typing import Optional
|
|
13
14
|
from typing_extensions import NotRequired, TypedDict
|
|
14
15
|
|
|
15
16
|
|
|
@@ -26,6 +27,8 @@ class UserCreateRequestTypedDict(TypedDict):
|
|
|
26
27
|
r"""Last name of the user"""
|
|
27
28
|
login_type: NotRequired[Nullable[LoginType]]
|
|
28
29
|
r"""The type of login to use for the user. If not provided, defaults to google for @gmail.com email addresses, and username and password otherwise."""
|
|
30
|
+
skip_auth: NotRequired[bool]
|
|
31
|
+
r"""Whether to skip authentication for the user."""
|
|
29
32
|
|
|
30
33
|
|
|
31
34
|
class UserCreateRequest(BaseModel):
|
|
@@ -46,9 +49,12 @@ class UserCreateRequest(BaseModel):
|
|
|
46
49
|
login_type: OptionalNullable[LoginType] = UNSET
|
|
47
50
|
r"""The type of login to use for the user. If not provided, defaults to google for @gmail.com email addresses, and username and password otherwise."""
|
|
48
51
|
|
|
52
|
+
skip_auth: Optional[bool] = False
|
|
53
|
+
r"""Whether to skip authentication for the user."""
|
|
54
|
+
|
|
49
55
|
@model_serializer(mode="wrap")
|
|
50
56
|
def serialize_model(self, handler):
|
|
51
|
-
optional_fields = ["first_name", "last_name", "login_type"]
|
|
57
|
+
optional_fields = ["first_name", "last_name", "login_type", "skip_auth"]
|
|
52
58
|
nullable_fields = ["first_name", "last_name", "login_type"]
|
|
53
59
|
null_default_fields = []
|
|
54
60
|
|
|
@@ -2,15 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
from syllable_sdk.types import BaseModel
|
|
5
|
-
from syllable_sdk.utils import FieldMetadata, PathParamMetadata
|
|
6
|
-
from
|
|
5
|
+
from syllable_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
|
|
6
|
+
from typing import Optional
|
|
7
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class UsersSendEmailRequestTypedDict(TypedDict):
|
|
10
11
|
user_email: str
|
|
12
|
+
skip_auth: NotRequired[bool]
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
class UsersSendEmailRequest(BaseModel):
|
|
14
16
|
user_email: Annotated[
|
|
15
17
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
|
16
18
|
]
|
|
19
|
+
|
|
20
|
+
skip_auth: Annotated[
|
|
21
|
+
Optional[bool],
|
|
22
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
23
|
+
] = False
|
syllable_sdk/users.py
CHANGED
|
@@ -970,6 +970,7 @@ class Users(BaseSDK):
|
|
|
970
970
|
self,
|
|
971
971
|
*,
|
|
972
972
|
user_email: str,
|
|
973
|
+
skip_auth: Optional[bool] = False,
|
|
973
974
|
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
974
975
|
server_url: Optional[str] = None,
|
|
975
976
|
timeout_ms: Optional[int] = None,
|
|
@@ -980,6 +981,7 @@ class Users(BaseSDK):
|
|
|
980
981
|
Send a welcome email to a user.
|
|
981
982
|
|
|
982
983
|
:param user_email:
|
|
984
|
+
:param skip_auth:
|
|
983
985
|
:param retries: Override the default retry configuration for this method
|
|
984
986
|
:param server_url: Override the default server URL for this method
|
|
985
987
|
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
@@ -997,6 +999,7 @@ class Users(BaseSDK):
|
|
|
997
999
|
|
|
998
1000
|
request = models.UsersSendEmailRequest(
|
|
999
1001
|
user_email=user_email,
|
|
1002
|
+
skip_auth=skip_auth,
|
|
1000
1003
|
)
|
|
1001
1004
|
|
|
1002
1005
|
req = self._build_request(
|
|
@@ -1059,6 +1062,7 @@ class Users(BaseSDK):
|
|
|
1059
1062
|
self,
|
|
1060
1063
|
*,
|
|
1061
1064
|
user_email: str,
|
|
1065
|
+
skip_auth: Optional[bool] = False,
|
|
1062
1066
|
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1063
1067
|
server_url: Optional[str] = None,
|
|
1064
1068
|
timeout_ms: Optional[int] = None,
|
|
@@ -1069,6 +1073,7 @@ class Users(BaseSDK):
|
|
|
1069
1073
|
Send a welcome email to a user.
|
|
1070
1074
|
|
|
1071
1075
|
:param user_email:
|
|
1076
|
+
:param skip_auth:
|
|
1072
1077
|
:param retries: Override the default retry configuration for this method
|
|
1073
1078
|
:param server_url: Override the default server URL for this method
|
|
1074
1079
|
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
@@ -1086,6 +1091,7 @@ class Users(BaseSDK):
|
|
|
1086
1091
|
|
|
1087
1092
|
request = models.UsersSendEmailRequest(
|
|
1088
1093
|
user_email=user_email,
|
|
1094
|
+
skip_auth=skip_auth,
|
|
1089
1095
|
)
|
|
1090
1096
|
|
|
1091
1097
|
req = self._build_request_async(
|
syllable_sdk/utils/__init__.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
from importlib import import_module
|
|
5
|
+
import builtins
|
|
5
6
|
|
|
6
7
|
if TYPE_CHECKING:
|
|
7
8
|
from .annotations import get_discriminator
|
|
@@ -183,5 +184,5 @@ def __getattr__(attr_name: str) -> object:
|
|
|
183
184
|
|
|
184
185
|
|
|
185
186
|
def __dir__():
|
|
186
|
-
lazy_attrs = list(_dynamic_imports.keys())
|
|
187
|
-
return sorted(lazy_attrs)
|
|
187
|
+
lazy_attrs = builtins.list(_dynamic_imports.keys())
|
|
188
|
+
return builtins.sorted(lazy_attrs)
|
syllable_sdk/v1.py
CHANGED
|
@@ -970,6 +970,7 @@ class V1(BaseSDK):
|
|
|
970
970
|
self,
|
|
971
971
|
*,
|
|
972
972
|
user_email: str,
|
|
973
|
+
skip_auth: Optional[bool] = False,
|
|
973
974
|
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
974
975
|
server_url: Optional[str] = None,
|
|
975
976
|
timeout_ms: Optional[int] = None,
|
|
@@ -980,6 +981,7 @@ class V1(BaseSDK):
|
|
|
980
981
|
Send a welcome email to a user.
|
|
981
982
|
|
|
982
983
|
:param user_email:
|
|
984
|
+
:param skip_auth:
|
|
983
985
|
:param retries: Override the default retry configuration for this method
|
|
984
986
|
:param server_url: Override the default server URL for this method
|
|
985
987
|
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
@@ -997,6 +999,7 @@ class V1(BaseSDK):
|
|
|
997
999
|
|
|
998
1000
|
request = models.UsersSendEmailRequest(
|
|
999
1001
|
user_email=user_email,
|
|
1002
|
+
skip_auth=skip_auth,
|
|
1000
1003
|
)
|
|
1001
1004
|
|
|
1002
1005
|
req = self._build_request(
|
|
@@ -1059,6 +1062,7 @@ class V1(BaseSDK):
|
|
|
1059
1062
|
self,
|
|
1060
1063
|
*,
|
|
1061
1064
|
user_email: str,
|
|
1065
|
+
skip_auth: Optional[bool] = False,
|
|
1062
1066
|
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
1063
1067
|
server_url: Optional[str] = None,
|
|
1064
1068
|
timeout_ms: Optional[int] = None,
|
|
@@ -1069,6 +1073,7 @@ class V1(BaseSDK):
|
|
|
1069
1073
|
Send a welcome email to a user.
|
|
1070
1074
|
|
|
1071
1075
|
:param user_email:
|
|
1076
|
+
:param skip_auth:
|
|
1072
1077
|
:param retries: Override the default retry configuration for this method
|
|
1073
1078
|
:param server_url: Override the default server URL for this method
|
|
1074
1079
|
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
@@ -1086,6 +1091,7 @@ class V1(BaseSDK):
|
|
|
1086
1091
|
|
|
1087
1092
|
request = models.UsersSendEmailRequest(
|
|
1088
1093
|
user_email=user_email,
|
|
1094
|
+
skip_auth=skip_auth,
|
|
1089
1095
|
)
|
|
1090
1096
|
|
|
1091
1097
|
req = self._build_request_async(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: syllable-sdk
|
|
3
|
-
Version: 0.35.
|
|
3
|
+
Version: 0.35.65
|
|
4
4
|
Summary: Python Client SDK Generated by Speakeasy.
|
|
5
5
|
Author: Syllable
|
|
6
6
|
Requires-Python: >=3.9.2
|
|
@@ -253,6 +253,8 @@ with SyllableSDK(
|
|
|
253
253
|
### [channels](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/channels/README.md)
|
|
254
254
|
|
|
255
255
|
* [list](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/channels/README.md#list) - Get Channels
|
|
256
|
+
* [create](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/channels/README.md#create) - Create Channel
|
|
257
|
+
* [update](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/channels/README.md#update) - Update Channel
|
|
256
258
|
* [delete](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/channels/README.md#delete) - Delete Channel Target
|
|
257
259
|
|
|
258
260
|
#### [channels.targets](https://github.com/asksyllable/syllable-sdk-python/blob/master/docs/sdks/targets/README.md)
|