windmill-api 1.408.1__py3-none-any.whl → 1.409.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.

Potentially problematic release.


This version of windmill-api might be problematic. Click here for more details.

Files changed (24) hide show
  1. windmill_api/api/flow/get_triggers_count_of_flow.py +166 -0
  2. windmill_api/api/flow/list_tokens_of_flow.py +171 -0
  3. windmill_api/api/script/get_triggers_count_of_script.py +166 -0
  4. windmill_api/api/script/list_tokens_of_script.py +171 -0
  5. windmill_api/models/create_token_impersonate_json_body.py +9 -0
  6. windmill_api/models/create_token_json_body.py +9 -0
  7. windmill_api/models/get_triggers_count_of_flow_response_200.py +108 -0
  8. windmill_api/models/get_triggers_count_of_flow_response_200_primary_schedule.py +58 -0
  9. windmill_api/models/get_triggers_count_of_script_response_200.py +108 -0
  10. windmill_api/models/get_triggers_count_of_script_response_200_primary_schedule.py +58 -0
  11. windmill_api/models/list_o_auth_logins_response_200.py +20 -5
  12. windmill_api/models/list_o_auth_logins_response_200_oauth_item.py +68 -0
  13. windmill_api/models/list_tokens_of_flow_response_200_item.py +121 -0
  14. windmill_api/models/list_tokens_of_script_response_200_item.py +121 -0
  15. windmill_api/models/list_tokens_response_200_item.py +9 -0
  16. windmill_api/models/new_token.py +9 -0
  17. windmill_api/models/new_token_impersonate.py +9 -0
  18. windmill_api/models/triggers_count.py +104 -0
  19. windmill_api/models/triggers_count_primary_schedule.py +58 -0
  20. windmill_api/models/truncated_token.py +9 -0
  21. {windmill_api-1.408.1.dist-info → windmill_api-1.409.1.dist-info}/METADATA +1 -1
  22. {windmill_api-1.408.1.dist-info → windmill_api-1.409.1.dist-info}/RECORD +24 -11
  23. {windmill_api-1.408.1.dist-info → windmill_api-1.409.1.dist-info}/LICENSE +0 -0
  24. {windmill_api-1.408.1.dist-info → windmill_api-1.409.1.dist-info}/WHEEL +0 -0
@@ -17,11 +17,13 @@ class CreateTokenJsonBody:
17
17
  label (Union[Unset, str]):
18
18
  expiration (Union[Unset, datetime.datetime]):
19
19
  scopes (Union[Unset, List[str]]):
20
+ workspace_id (Union[Unset, str]):
20
21
  """
21
22
 
22
23
  label: Union[Unset, str] = UNSET
23
24
  expiration: Union[Unset, datetime.datetime] = UNSET
24
25
  scopes: Union[Unset, List[str]] = UNSET
26
+ workspace_id: Union[Unset, str] = UNSET
25
27
  additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
26
28
 
27
29
  def to_dict(self) -> Dict[str, Any]:
@@ -34,6 +36,8 @@ class CreateTokenJsonBody:
34
36
  if not isinstance(self.scopes, Unset):
35
37
  scopes = self.scopes
36
38
 
39
+ workspace_id = self.workspace_id
40
+
37
41
  field_dict: Dict[str, Any] = {}
38
42
  field_dict.update(self.additional_properties)
39
43
  field_dict.update({})
@@ -43,6 +47,8 @@ class CreateTokenJsonBody:
43
47
  field_dict["expiration"] = expiration
44
48
  if scopes is not UNSET:
45
49
  field_dict["scopes"] = scopes
50
+ if workspace_id is not UNSET:
51
+ field_dict["workspace_id"] = workspace_id
46
52
 
47
53
  return field_dict
48
54
 
@@ -60,10 +66,13 @@ class CreateTokenJsonBody:
60
66
 
61
67
  scopes = cast(List[str], d.pop("scopes", UNSET))
62
68
 
69
+ workspace_id = d.pop("workspace_id", UNSET)
70
+
63
71
  create_token_json_body = cls(
64
72
  label=label,
65
73
  expiration=expiration,
66
74
  scopes=scopes,
75
+ workspace_id=workspace_id,
67
76
  )
68
77
 
69
78
  create_token_json_body.additional_properties = d
@@ -0,0 +1,108 @@
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.get_triggers_count_of_flow_response_200_primary_schedule import (
10
+ GetTriggersCountOfFlowResponse200PrimarySchedule,
11
+ )
12
+
13
+
14
+ T = TypeVar("T", bound="GetTriggersCountOfFlowResponse200")
15
+
16
+
17
+ @_attrs_define
18
+ class GetTriggersCountOfFlowResponse200:
19
+ """
20
+ Attributes:
21
+ primary_schedule (Union[Unset, GetTriggersCountOfFlowResponse200PrimarySchedule]):
22
+ schedule_count (Union[Unset, float]):
23
+ http_routes_count (Union[Unset, float]):
24
+ webhook_count (Union[Unset, float]):
25
+ email_count (Union[Unset, float]):
26
+ """
27
+
28
+ primary_schedule: Union[Unset, "GetTriggersCountOfFlowResponse200PrimarySchedule"] = UNSET
29
+ schedule_count: Union[Unset, float] = UNSET
30
+ http_routes_count: Union[Unset, float] = UNSET
31
+ webhook_count: Union[Unset, float] = UNSET
32
+ email_count: Union[Unset, float] = UNSET
33
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> Dict[str, Any]:
36
+ primary_schedule: Union[Unset, Dict[str, Any]] = UNSET
37
+ if not isinstance(self.primary_schedule, Unset):
38
+ primary_schedule = self.primary_schedule.to_dict()
39
+
40
+ schedule_count = self.schedule_count
41
+ http_routes_count = self.http_routes_count
42
+ webhook_count = self.webhook_count
43
+ email_count = self.email_count
44
+
45
+ field_dict: Dict[str, Any] = {}
46
+ field_dict.update(self.additional_properties)
47
+ field_dict.update({})
48
+ if primary_schedule is not UNSET:
49
+ field_dict["primary_schedule"] = primary_schedule
50
+ if schedule_count is not UNSET:
51
+ field_dict["schedule_count"] = schedule_count
52
+ if http_routes_count is not UNSET:
53
+ field_dict["http_routes_count"] = http_routes_count
54
+ if webhook_count is not UNSET:
55
+ field_dict["webhook_count"] = webhook_count
56
+ if email_count is not UNSET:
57
+ field_dict["email_count"] = email_count
58
+
59
+ return field_dict
60
+
61
+ @classmethod
62
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
63
+ from ..models.get_triggers_count_of_flow_response_200_primary_schedule import (
64
+ GetTriggersCountOfFlowResponse200PrimarySchedule,
65
+ )
66
+
67
+ d = src_dict.copy()
68
+ _primary_schedule = d.pop("primary_schedule", UNSET)
69
+ primary_schedule: Union[Unset, GetTriggersCountOfFlowResponse200PrimarySchedule]
70
+ if isinstance(_primary_schedule, Unset):
71
+ primary_schedule = UNSET
72
+ else:
73
+ primary_schedule = GetTriggersCountOfFlowResponse200PrimarySchedule.from_dict(_primary_schedule)
74
+
75
+ schedule_count = d.pop("schedule_count", UNSET)
76
+
77
+ http_routes_count = d.pop("http_routes_count", UNSET)
78
+
79
+ webhook_count = d.pop("webhook_count", UNSET)
80
+
81
+ email_count = d.pop("email_count", UNSET)
82
+
83
+ get_triggers_count_of_flow_response_200 = cls(
84
+ primary_schedule=primary_schedule,
85
+ schedule_count=schedule_count,
86
+ http_routes_count=http_routes_count,
87
+ webhook_count=webhook_count,
88
+ email_count=email_count,
89
+ )
90
+
91
+ get_triggers_count_of_flow_response_200.additional_properties = d
92
+ return get_triggers_count_of_flow_response_200
93
+
94
+ @property
95
+ def additional_keys(self) -> List[str]:
96
+ return list(self.additional_properties.keys())
97
+
98
+ def __getitem__(self, key: str) -> Any:
99
+ return self.additional_properties[key]
100
+
101
+ def __setitem__(self, key: str, value: Any) -> None:
102
+ self.additional_properties[key] = value
103
+
104
+ def __delitem__(self, key: str) -> None:
105
+ del self.additional_properties[key]
106
+
107
+ def __contains__(self, key: str) -> bool:
108
+ return key in self.additional_properties
@@ -0,0 +1,58 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="GetTriggersCountOfFlowResponse200PrimarySchedule")
9
+
10
+
11
+ @_attrs_define
12
+ class GetTriggersCountOfFlowResponse200PrimarySchedule:
13
+ """
14
+ Attributes:
15
+ schedule (Union[Unset, str]):
16
+ """
17
+
18
+ schedule: Union[Unset, str] = UNSET
19
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
20
+
21
+ def to_dict(self) -> Dict[str, Any]:
22
+ schedule = self.schedule
23
+
24
+ field_dict: Dict[str, Any] = {}
25
+ field_dict.update(self.additional_properties)
26
+ field_dict.update({})
27
+ if schedule is not UNSET:
28
+ field_dict["schedule"] = schedule
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
34
+ d = src_dict.copy()
35
+ schedule = d.pop("schedule", UNSET)
36
+
37
+ get_triggers_count_of_flow_response_200_primary_schedule = cls(
38
+ schedule=schedule,
39
+ )
40
+
41
+ get_triggers_count_of_flow_response_200_primary_schedule.additional_properties = d
42
+ return get_triggers_count_of_flow_response_200_primary_schedule
43
+
44
+ @property
45
+ def additional_keys(self) -> List[str]:
46
+ return list(self.additional_properties.keys())
47
+
48
+ def __getitem__(self, key: str) -> Any:
49
+ return self.additional_properties[key]
50
+
51
+ def __setitem__(self, key: str, value: Any) -> None:
52
+ self.additional_properties[key] = value
53
+
54
+ def __delitem__(self, key: str) -> None:
55
+ del self.additional_properties[key]
56
+
57
+ def __contains__(self, key: str) -> bool:
58
+ return key in self.additional_properties
@@ -0,0 +1,108 @@
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.get_triggers_count_of_script_response_200_primary_schedule import (
10
+ GetTriggersCountOfScriptResponse200PrimarySchedule,
11
+ )
12
+
13
+
14
+ T = TypeVar("T", bound="GetTriggersCountOfScriptResponse200")
15
+
16
+
17
+ @_attrs_define
18
+ class GetTriggersCountOfScriptResponse200:
19
+ """
20
+ Attributes:
21
+ primary_schedule (Union[Unset, GetTriggersCountOfScriptResponse200PrimarySchedule]):
22
+ schedule_count (Union[Unset, float]):
23
+ http_routes_count (Union[Unset, float]):
24
+ webhook_count (Union[Unset, float]):
25
+ email_count (Union[Unset, float]):
26
+ """
27
+
28
+ primary_schedule: Union[Unset, "GetTriggersCountOfScriptResponse200PrimarySchedule"] = UNSET
29
+ schedule_count: Union[Unset, float] = UNSET
30
+ http_routes_count: Union[Unset, float] = UNSET
31
+ webhook_count: Union[Unset, float] = UNSET
32
+ email_count: Union[Unset, float] = UNSET
33
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> Dict[str, Any]:
36
+ primary_schedule: Union[Unset, Dict[str, Any]] = UNSET
37
+ if not isinstance(self.primary_schedule, Unset):
38
+ primary_schedule = self.primary_schedule.to_dict()
39
+
40
+ schedule_count = self.schedule_count
41
+ http_routes_count = self.http_routes_count
42
+ webhook_count = self.webhook_count
43
+ email_count = self.email_count
44
+
45
+ field_dict: Dict[str, Any] = {}
46
+ field_dict.update(self.additional_properties)
47
+ field_dict.update({})
48
+ if primary_schedule is not UNSET:
49
+ field_dict["primary_schedule"] = primary_schedule
50
+ if schedule_count is not UNSET:
51
+ field_dict["schedule_count"] = schedule_count
52
+ if http_routes_count is not UNSET:
53
+ field_dict["http_routes_count"] = http_routes_count
54
+ if webhook_count is not UNSET:
55
+ field_dict["webhook_count"] = webhook_count
56
+ if email_count is not UNSET:
57
+ field_dict["email_count"] = email_count
58
+
59
+ return field_dict
60
+
61
+ @classmethod
62
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
63
+ from ..models.get_triggers_count_of_script_response_200_primary_schedule import (
64
+ GetTriggersCountOfScriptResponse200PrimarySchedule,
65
+ )
66
+
67
+ d = src_dict.copy()
68
+ _primary_schedule = d.pop("primary_schedule", UNSET)
69
+ primary_schedule: Union[Unset, GetTriggersCountOfScriptResponse200PrimarySchedule]
70
+ if isinstance(_primary_schedule, Unset):
71
+ primary_schedule = UNSET
72
+ else:
73
+ primary_schedule = GetTriggersCountOfScriptResponse200PrimarySchedule.from_dict(_primary_schedule)
74
+
75
+ schedule_count = d.pop("schedule_count", UNSET)
76
+
77
+ http_routes_count = d.pop("http_routes_count", UNSET)
78
+
79
+ webhook_count = d.pop("webhook_count", UNSET)
80
+
81
+ email_count = d.pop("email_count", UNSET)
82
+
83
+ get_triggers_count_of_script_response_200 = cls(
84
+ primary_schedule=primary_schedule,
85
+ schedule_count=schedule_count,
86
+ http_routes_count=http_routes_count,
87
+ webhook_count=webhook_count,
88
+ email_count=email_count,
89
+ )
90
+
91
+ get_triggers_count_of_script_response_200.additional_properties = d
92
+ return get_triggers_count_of_script_response_200
93
+
94
+ @property
95
+ def additional_keys(self) -> List[str]:
96
+ return list(self.additional_properties.keys())
97
+
98
+ def __getitem__(self, key: str) -> Any:
99
+ return self.additional_properties[key]
100
+
101
+ def __setitem__(self, key: str, value: Any) -> None:
102
+ self.additional_properties[key] = value
103
+
104
+ def __delitem__(self, key: str) -> None:
105
+ del self.additional_properties[key]
106
+
107
+ def __contains__(self, key: str) -> bool:
108
+ return key in self.additional_properties
@@ -0,0 +1,58 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="GetTriggersCountOfScriptResponse200PrimarySchedule")
9
+
10
+
11
+ @_attrs_define
12
+ class GetTriggersCountOfScriptResponse200PrimarySchedule:
13
+ """
14
+ Attributes:
15
+ schedule (Union[Unset, str]):
16
+ """
17
+
18
+ schedule: Union[Unset, str] = UNSET
19
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
20
+
21
+ def to_dict(self) -> Dict[str, Any]:
22
+ schedule = self.schedule
23
+
24
+ field_dict: Dict[str, Any] = {}
25
+ field_dict.update(self.additional_properties)
26
+ field_dict.update({})
27
+ if schedule is not UNSET:
28
+ field_dict["schedule"] = schedule
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
34
+ d = src_dict.copy()
35
+ schedule = d.pop("schedule", UNSET)
36
+
37
+ get_triggers_count_of_script_response_200_primary_schedule = cls(
38
+ schedule=schedule,
39
+ )
40
+
41
+ get_triggers_count_of_script_response_200_primary_schedule.additional_properties = d
42
+ return get_triggers_count_of_script_response_200_primary_schedule
43
+
44
+ @property
45
+ def additional_keys(self) -> List[str]:
46
+ return list(self.additional_properties.keys())
47
+
48
+ def __getitem__(self, key: str) -> Any:
49
+ return self.additional_properties[key]
50
+
51
+ def __setitem__(self, key: str, value: Any) -> None:
52
+ self.additional_properties[key] = value
53
+
54
+ def __delitem__(self, key: str) -> None:
55
+ del self.additional_properties[key]
56
+
57
+ def __contains__(self, key: str) -> bool:
58
+ return key in self.additional_properties
@@ -1,10 +1,14 @@
1
- from typing import Any, Dict, List, Type, TypeVar, Union, cast
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
2
 
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
5
5
 
6
6
  from ..types import UNSET, Unset
7
7
 
8
+ if TYPE_CHECKING:
9
+ from ..models.list_o_auth_logins_response_200_oauth_item import ListOAuthLoginsResponse200OauthItem
10
+
11
+
8
12
  T = TypeVar("T", bound="ListOAuthLoginsResponse200")
9
13
 
10
14
 
@@ -12,16 +16,20 @@ T = TypeVar("T", bound="ListOAuthLoginsResponse200")
12
16
  class ListOAuthLoginsResponse200:
13
17
  """
14
18
  Attributes:
15
- oauth (List[str]):
19
+ oauth (List['ListOAuthLoginsResponse200OauthItem']):
16
20
  saml (Union[Unset, str]):
17
21
  """
18
22
 
19
- oauth: List[str]
23
+ oauth: List["ListOAuthLoginsResponse200OauthItem"]
20
24
  saml: Union[Unset, str] = UNSET
21
25
  additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
26
 
23
27
  def to_dict(self) -> Dict[str, Any]:
24
- oauth = self.oauth
28
+ oauth = []
29
+ for oauth_item_data in self.oauth:
30
+ oauth_item = oauth_item_data.to_dict()
31
+
32
+ oauth.append(oauth_item)
25
33
 
26
34
  saml = self.saml
27
35
 
@@ -39,8 +47,15 @@ class ListOAuthLoginsResponse200:
39
47
 
40
48
  @classmethod
41
49
  def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
50
+ from ..models.list_o_auth_logins_response_200_oauth_item import ListOAuthLoginsResponse200OauthItem
51
+
42
52
  d = src_dict.copy()
43
- oauth = cast(List[str], d.pop("oauth"))
53
+ oauth = []
54
+ _oauth = d.pop("oauth")
55
+ for oauth_item_data in _oauth:
56
+ oauth_item = ListOAuthLoginsResponse200OauthItem.from_dict(oauth_item_data)
57
+
58
+ oauth.append(oauth_item)
44
59
 
45
60
  saml = d.pop("saml", UNSET)
46
61
 
@@ -0,0 +1,68 @@
1
+ from typing import Any, Dict, List, Type, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ListOAuthLoginsResponse200OauthItem")
9
+
10
+
11
+ @_attrs_define
12
+ class ListOAuthLoginsResponse200OauthItem:
13
+ """
14
+ Attributes:
15
+ type (str):
16
+ display_name (Union[Unset, str]):
17
+ """
18
+
19
+ type: str
20
+ display_name: Union[Unset, str] = UNSET
21
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> Dict[str, Any]:
24
+ type = self.type
25
+ display_name = self.display_name
26
+
27
+ field_dict: Dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update(
30
+ {
31
+ "type": type,
32
+ }
33
+ )
34
+ if display_name is not UNSET:
35
+ field_dict["display_name"] = display_name
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
41
+ d = src_dict.copy()
42
+ type = d.pop("type")
43
+
44
+ display_name = d.pop("display_name", UNSET)
45
+
46
+ list_o_auth_logins_response_200_oauth_item = cls(
47
+ type=type,
48
+ display_name=display_name,
49
+ )
50
+
51
+ list_o_auth_logins_response_200_oauth_item.additional_properties = d
52
+ return list_o_auth_logins_response_200_oauth_item
53
+
54
+ @property
55
+ def additional_keys(self) -> List[str]:
56
+ return list(self.additional_properties.keys())
57
+
58
+ def __getitem__(self, key: str) -> Any:
59
+ return self.additional_properties[key]
60
+
61
+ def __setitem__(self, key: str, value: Any) -> None:
62
+ self.additional_properties[key] = value
63
+
64
+ def __delitem__(self, key: str) -> None:
65
+ del self.additional_properties[key]
66
+
67
+ def __contains__(self, key: str) -> bool:
68
+ return key in self.additional_properties
@@ -0,0 +1,121 @@
1
+ import datetime
2
+ from typing import Any, Dict, List, Type, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+ from dateutil.parser import isoparse
7
+
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="ListTokensOfFlowResponse200Item")
11
+
12
+
13
+ @_attrs_define
14
+ class ListTokensOfFlowResponse200Item:
15
+ """
16
+ Attributes:
17
+ token_prefix (str):
18
+ created_at (datetime.datetime):
19
+ last_used_at (datetime.datetime):
20
+ label (Union[Unset, str]):
21
+ expiration (Union[Unset, datetime.datetime]):
22
+ scopes (Union[Unset, List[str]]):
23
+ email (Union[Unset, str]):
24
+ """
25
+
26
+ token_prefix: str
27
+ created_at: datetime.datetime
28
+ last_used_at: datetime.datetime
29
+ label: Union[Unset, str] = UNSET
30
+ expiration: Union[Unset, datetime.datetime] = UNSET
31
+ scopes: Union[Unset, List[str]] = UNSET
32
+ email: Union[Unset, str] = UNSET
33
+ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> Dict[str, Any]:
36
+ token_prefix = self.token_prefix
37
+ created_at = self.created_at.isoformat()
38
+
39
+ last_used_at = self.last_used_at.isoformat()
40
+
41
+ label = self.label
42
+ expiration: Union[Unset, str] = UNSET
43
+ if not isinstance(self.expiration, Unset):
44
+ expiration = self.expiration.isoformat()
45
+
46
+ scopes: Union[Unset, List[str]] = UNSET
47
+ if not isinstance(self.scopes, Unset):
48
+ scopes = self.scopes
49
+
50
+ email = self.email
51
+
52
+ field_dict: Dict[str, Any] = {}
53
+ field_dict.update(self.additional_properties)
54
+ field_dict.update(
55
+ {
56
+ "token_prefix": token_prefix,
57
+ "created_at": created_at,
58
+ "last_used_at": last_used_at,
59
+ }
60
+ )
61
+ if label is not UNSET:
62
+ field_dict["label"] = label
63
+ if expiration is not UNSET:
64
+ field_dict["expiration"] = expiration
65
+ if scopes is not UNSET:
66
+ field_dict["scopes"] = scopes
67
+ if email is not UNSET:
68
+ field_dict["email"] = email
69
+
70
+ return field_dict
71
+
72
+ @classmethod
73
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
74
+ d = src_dict.copy()
75
+ token_prefix = d.pop("token_prefix")
76
+
77
+ created_at = isoparse(d.pop("created_at"))
78
+
79
+ last_used_at = isoparse(d.pop("last_used_at"))
80
+
81
+ label = d.pop("label", UNSET)
82
+
83
+ _expiration = d.pop("expiration", UNSET)
84
+ expiration: Union[Unset, datetime.datetime]
85
+ if isinstance(_expiration, Unset):
86
+ expiration = UNSET
87
+ else:
88
+ expiration = isoparse(_expiration)
89
+
90
+ scopes = cast(List[str], d.pop("scopes", UNSET))
91
+
92
+ email = d.pop("email", UNSET)
93
+
94
+ list_tokens_of_flow_response_200_item = cls(
95
+ token_prefix=token_prefix,
96
+ created_at=created_at,
97
+ last_used_at=last_used_at,
98
+ label=label,
99
+ expiration=expiration,
100
+ scopes=scopes,
101
+ email=email,
102
+ )
103
+
104
+ list_tokens_of_flow_response_200_item.additional_properties = d
105
+ return list_tokens_of_flow_response_200_item
106
+
107
+ @property
108
+ def additional_keys(self) -> List[str]:
109
+ return list(self.additional_properties.keys())
110
+
111
+ def __getitem__(self, key: str) -> Any:
112
+ return self.additional_properties[key]
113
+
114
+ def __setitem__(self, key: str, value: Any) -> None:
115
+ self.additional_properties[key] = value
116
+
117
+ def __delitem__(self, key: str) -> None:
118
+ del self.additional_properties[key]
119
+
120
+ def __contains__(self, key: str) -> bool:
121
+ return key in self.additional_properties