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.
@@ -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
@@ -15,3 +15,5 @@ class LanguageCode(str, Enum):
15
15
  ES_US = "es-US"
16
16
  TH_TH = "th-TH"
17
17
  VI_VN = "vi-VN"
18
+ BS_BA = "bs-BA"
19
+ SW = "sw"
@@ -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: Optional[str] = None
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 typing_extensions import Annotated, TypedDict
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(
@@ -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.56
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)