python3-core-api-client 1.2__py3-none-any.whl → 2.1.0__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 (55) hide show
  1. cyberfusion/CoreApiClient/connector.py +1 -0
  2. cyberfusion/CoreApiClient/http.py +30 -1
  3. cyberfusion/CoreApiClient/models.py +1642 -4140
  4. cyberfusion/CoreApiClient/resources/basic_authentication_realms.py +56 -47
  5. cyberfusion/CoreApiClient/resources/borg_archives.py +81 -82
  6. cyberfusion/CoreApiClient/resources/borg_repositories.py +76 -77
  7. cyberfusion/CoreApiClient/resources/certificate_managers.py +63 -55
  8. cyberfusion/CoreApiClient/resources/certificates.py +34 -33
  9. cyberfusion/CoreApiClient/resources/clusters.py +1486 -153
  10. cyberfusion/CoreApiClient/resources/cmses.py +157 -156
  11. cyberfusion/CoreApiClient/resources/crons.py +41 -41
  12. cyberfusion/CoreApiClient/resources/custom_config_snippets.py +55 -47
  13. cyberfusion/CoreApiClient/resources/custom_configs.py +44 -44
  14. cyberfusion/CoreApiClient/resources/customers.py +53 -54
  15. cyberfusion/CoreApiClient/resources/daemons.py +54 -55
  16. cyberfusion/CoreApiClient/resources/database_user_grants.py +33 -53
  17. cyberfusion/CoreApiClient/resources/database_users.py +45 -45
  18. cyberfusion/CoreApiClient/resources/databases.py +80 -81
  19. cyberfusion/CoreApiClient/resources/domain_routers.py +23 -23
  20. cyberfusion/CoreApiClient/resources/firewall_groups.py +44 -44
  21. cyberfusion/CoreApiClient/resources/firewall_rules.py +36 -36
  22. cyberfusion/CoreApiClient/resources/fpm_pools.py +61 -61
  23. cyberfusion/CoreApiClient/resources/ftp_users.py +51 -49
  24. cyberfusion/CoreApiClient/resources/haproxy_listens.py +36 -36
  25. cyberfusion/CoreApiClient/resources/haproxy_listens_to_nodes.py +45 -39
  26. cyberfusion/CoreApiClient/resources/health.py +6 -5
  27. cyberfusion/CoreApiClient/resources/hosts_entries.py +33 -33
  28. cyberfusion/CoreApiClient/resources/htpasswd_files.py +36 -36
  29. cyberfusion/CoreApiClient/resources/htpasswd_users.py +44 -44
  30. cyberfusion/CoreApiClient/resources/login.py +15 -14
  31. cyberfusion/CoreApiClient/resources/logs.py +59 -58
  32. cyberfusion/CoreApiClient/resources/mail_accounts.py +60 -59
  33. cyberfusion/CoreApiClient/resources/mail_aliases.py +41 -41
  34. cyberfusion/CoreApiClient/resources/mail_domains.py +41 -41
  35. cyberfusion/CoreApiClient/resources/mail_hostnames.py +44 -44
  36. cyberfusion/CoreApiClient/resources/malwares.py +14 -38
  37. cyberfusion/CoreApiClient/resources/mariadb_encryption_keys.py +37 -31
  38. cyberfusion/CoreApiClient/resources/node_add_ons.py +39 -40
  39. cyberfusion/CoreApiClient/resources/nodes.py +60 -61
  40. cyberfusion/CoreApiClient/resources/passenger_apps.py +54 -54
  41. cyberfusion/CoreApiClient/resources/redis_instances.py +46 -46
  42. cyberfusion/CoreApiClient/resources/root_ssh_keys.py +41 -41
  43. cyberfusion/CoreApiClient/resources/security_txt_policies.py +56 -48
  44. cyberfusion/CoreApiClient/resources/sites.py +15 -15
  45. cyberfusion/CoreApiClient/resources/ssh_keys.py +41 -41
  46. cyberfusion/CoreApiClient/resources/task_collections.py +20 -20
  47. cyberfusion/CoreApiClient/resources/tombstones.py +15 -15
  48. cyberfusion/CoreApiClient/resources/unix_users.py +68 -69
  49. cyberfusion/CoreApiClient/resources/url_redirects.py +42 -42
  50. cyberfusion/CoreApiClient/resources/virtual_hosts.py +66 -66
  51. {python3_core_api_client-1.2.dist-info → python3_core_api_client-2.1.0.dist-info}/METADATA +44 -11
  52. python3_core_api_client-2.1.0.dist-info/RECORD +59 -0
  53. python3_core_api_client-1.2.dist-info/RECORD +0 -59
  54. {python3_core_api_client-1.2.dist-info → python3_core_api_client-2.1.0.dist-info}/WHEEL +0 -0
  55. {python3_core_api_client-1.2.dist-info → python3_core_api_client-2.1.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
1
1
  from cyberfusion.CoreApiClient import models
2
2
  from typing import Optional, Union, List
3
3
 
4
+ from cyberfusion.CoreApiClient.http import DtoResponse
4
5
  from cyberfusion.CoreApiClient.interfaces import Resource
5
6
 
6
7
 
@@ -11,14 +12,16 @@ class CustomConfigSnippets(Resource):
11
12
  models.CustomConfigSnippetCreateFromContentsRequest,
12
13
  models.CustomConfigSnippetCreateFromTemplateRequest,
13
14
  ],
14
- ) -> models.CustomConfigSnippetResource:
15
- return models.CustomConfigSnippetResource.parse_obj(
16
- self.api_connector.send_or_fail(
17
- "POST",
18
- "/api/v1/custom-config-snippets",
19
- data=request.dict(exclude_unset=True),
20
- query_parameters={},
21
- ).json
15
+ ) -> DtoResponse[models.CustomConfigSnippetResource]:
16
+ local_response = self.api_connector.send_or_fail(
17
+ "POST",
18
+ "/api/v1/custom-config-snippets",
19
+ data=request.dict(exclude_unset=True),
20
+ query_parameters={},
21
+ )
22
+
23
+ return DtoResponse.from_response(
24
+ local_response, models.CustomConfigSnippetResource
22
25
  )
23
26
 
24
27
  def list_custom_config_snippets(
@@ -28,34 +31,37 @@ class CustomConfigSnippets(Resource):
28
31
  limit: Optional[int] = None,
29
32
  filter_: Optional[List[str]] = None,
30
33
  sort: Optional[List[str]] = None,
31
- ) -> list[models.CustomConfigSnippetResource]:
32
- return [
33
- models.CustomConfigSnippetResource.parse_obj(model)
34
- for model in self.api_connector.send_or_fail(
35
- "GET",
36
- "/api/v1/custom-config-snippets",
37
- data=None,
38
- query_parameters={
39
- "skip": skip,
40
- "limit": limit,
41
- "filter": filter_,
42
- "sort": sort,
43
- },
44
- ).json
45
- ]
34
+ ) -> DtoResponse[list[models.CustomConfigSnippetResource]]:
35
+ local_response = self.api_connector.send_or_fail(
36
+ "GET",
37
+ "/api/v1/custom-config-snippets",
38
+ data=None,
39
+ query_parameters={
40
+ "skip": skip,
41
+ "limit": limit,
42
+ "filter": filter_,
43
+ "sort": sort,
44
+ },
45
+ )
46
+
47
+ return DtoResponse.from_response(
48
+ local_response, models.CustomConfigSnippetResource
49
+ )
46
50
 
47
51
  def read_custom_config_snippet(
48
52
  self,
49
53
  *,
50
54
  id_: int,
51
- ) -> models.CustomConfigSnippetResource:
52
- return models.CustomConfigSnippetResource.parse_obj(
53
- self.api_connector.send_or_fail(
54
- "GET",
55
- f"/api/v1/custom-config-snippets/{id_}",
56
- data=None,
57
- query_parameters={},
58
- ).json
55
+ ) -> DtoResponse[models.CustomConfigSnippetResource]:
56
+ local_response = self.api_connector.send_or_fail(
57
+ "GET",
58
+ f"/api/v1/custom-config-snippets/{id_}",
59
+ data=None,
60
+ query_parameters={},
61
+ )
62
+
63
+ return DtoResponse.from_response(
64
+ local_response, models.CustomConfigSnippetResource
59
65
  )
60
66
 
61
67
  def update_custom_config_snippet(
@@ -63,26 +69,28 @@ class CustomConfigSnippets(Resource):
63
69
  request: models.CustomConfigSnippetUpdateRequest,
64
70
  *,
65
71
  id_: int,
66
- ) -> models.CustomConfigSnippetResource:
67
- return models.CustomConfigSnippetResource.parse_obj(
68
- self.api_connector.send_or_fail(
69
- "PATCH",
70
- f"/api/v1/custom-config-snippets/{id_}",
71
- data=request.dict(exclude_unset=True),
72
- query_parameters={},
73
- ).json
72
+ ) -> DtoResponse[models.CustomConfigSnippetResource]:
73
+ local_response = self.api_connector.send_or_fail(
74
+ "PATCH",
75
+ f"/api/v1/custom-config-snippets/{id_}",
76
+ data=request.dict(exclude_unset=True),
77
+ query_parameters={},
78
+ )
79
+
80
+ return DtoResponse.from_response(
81
+ local_response, models.CustomConfigSnippetResource
74
82
  )
75
83
 
76
84
  def delete_custom_config_snippet(
77
85
  self,
78
86
  *,
79
87
  id_: int,
80
- ) -> models.DetailMessage:
81
- return models.DetailMessage.parse_obj(
82
- self.api_connector.send_or_fail(
83
- "DELETE",
84
- f"/api/v1/custom-config-snippets/{id_}",
85
- data=None,
86
- query_parameters={},
87
- ).json
88
+ ) -> DtoResponse[models.DetailMessage]:
89
+ local_response = self.api_connector.send_or_fail(
90
+ "DELETE",
91
+ f"/api/v1/custom-config-snippets/{id_}",
92
+ data=None,
93
+ query_parameters={},
88
94
  )
95
+
96
+ return DtoResponse.from_response(local_response, models.DetailMessage)
@@ -1,6 +1,7 @@
1
1
  from cyberfusion.CoreApiClient import models
2
2
  from typing import Optional, List
3
3
 
4
+ from cyberfusion.CoreApiClient.http import DtoResponse
4
5
  from cyberfusion.CoreApiClient.interfaces import Resource
5
6
 
6
7
 
@@ -8,16 +9,16 @@ class CustomConfigs(Resource):
8
9
  def create_custom_config(
9
10
  self,
10
11
  request: models.CustomConfigCreateRequest,
11
- ) -> models.CustomConfigResource:
12
- return models.CustomConfigResource.parse_obj(
13
- self.api_connector.send_or_fail(
14
- "POST",
15
- "/api/v1/custom-configs",
16
- data=request.dict(exclude_unset=True),
17
- query_parameters={},
18
- ).json
12
+ ) -> DtoResponse[models.CustomConfigResource]:
13
+ local_response = self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/custom-configs",
16
+ data=request.dict(exclude_unset=True),
17
+ query_parameters={},
19
18
  )
20
19
 
20
+ return DtoResponse.from_response(local_response, models.CustomConfigResource)
21
+
21
22
  def list_custom_configs(
22
23
  self,
23
24
  *,
@@ -25,58 +26,57 @@ class CustomConfigs(Resource):
25
26
  limit: Optional[int] = None,
26
27
  filter_: Optional[List[str]] = None,
27
28
  sort: Optional[List[str]] = None,
28
- ) -> list[models.CustomConfigResource]:
29
- return [
30
- models.CustomConfigResource.parse_obj(model)
31
- for model in self.api_connector.send_or_fail(
32
- "GET",
33
- "/api/v1/custom-configs",
34
- data=None,
35
- query_parameters={
36
- "skip": skip,
37
- "limit": limit,
38
- "filter": filter_,
39
- "sort": sort,
40
- },
41
- ).json
42
- ]
29
+ ) -> DtoResponse[list[models.CustomConfigResource]]:
30
+ local_response = self.api_connector.send_or_fail(
31
+ "GET",
32
+ "/api/v1/custom-configs",
33
+ data=None,
34
+ query_parameters={
35
+ "skip": skip,
36
+ "limit": limit,
37
+ "filter": filter_,
38
+ "sort": sort,
39
+ },
40
+ )
41
+
42
+ return DtoResponse.from_response(local_response, models.CustomConfigResource)
43
43
 
44
44
  def read_custom_config(
45
45
  self,
46
46
  *,
47
47
  id_: int,
48
- ) -> models.CustomConfigResource:
49
- return models.CustomConfigResource.parse_obj(
50
- self.api_connector.send_or_fail(
51
- "GET", f"/api/v1/custom-configs/{id_}", data=None, query_parameters={}
52
- ).json
48
+ ) -> DtoResponse[models.CustomConfigResource]:
49
+ local_response = self.api_connector.send_or_fail(
50
+ "GET", f"/api/v1/custom-configs/{id_}", data=None, query_parameters={}
53
51
  )
54
52
 
53
+ return DtoResponse.from_response(local_response, models.CustomConfigResource)
54
+
55
55
  def update_custom_config(
56
56
  self,
57
57
  request: models.CustomConfigUpdateRequest,
58
58
  *,
59
59
  id_: int,
60
- ) -> models.CustomConfigResource:
61
- return models.CustomConfigResource.parse_obj(
62
- self.api_connector.send_or_fail(
63
- "PATCH",
64
- f"/api/v1/custom-configs/{id_}",
65
- data=request.dict(exclude_unset=True),
66
- query_parameters={},
67
- ).json
60
+ ) -> DtoResponse[models.CustomConfigResource]:
61
+ local_response = self.api_connector.send_or_fail(
62
+ "PATCH",
63
+ f"/api/v1/custom-configs/{id_}",
64
+ data=request.dict(exclude_unset=True),
65
+ query_parameters={},
68
66
  )
69
67
 
68
+ return DtoResponse.from_response(local_response, models.CustomConfigResource)
69
+
70
70
  def delete_custom_config(
71
71
  self,
72
72
  *,
73
73
  id_: int,
74
- ) -> models.DetailMessage:
75
- return models.DetailMessage.parse_obj(
76
- self.api_connector.send_or_fail(
77
- "DELETE",
78
- f"/api/v1/custom-configs/{id_}",
79
- data=None,
80
- query_parameters={},
81
- ).json
74
+ ) -> DtoResponse[models.DetailMessage]:
75
+ local_response = self.api_connector.send_or_fail(
76
+ "DELETE",
77
+ f"/api/v1/custom-configs/{id_}",
78
+ data=None,
79
+ query_parameters={},
82
80
  )
81
+
82
+ return DtoResponse.from_response(local_response, models.DetailMessage)
@@ -1,6 +1,7 @@
1
1
  from cyberfusion.CoreApiClient import models
2
2
  from typing import Optional, List
3
3
 
4
+ from cyberfusion.CoreApiClient.http import DtoResponse
4
5
  from cyberfusion.CoreApiClient.interfaces import Resource
5
6
 
6
7
 
@@ -12,86 +13,84 @@ class Customers(Resource):
12
13
  limit: Optional[int] = None,
13
14
  filter_: Optional[List[str]] = None,
14
15
  sort: Optional[List[str]] = None,
15
- ) -> list[models.CustomerResource]:
16
- return [
17
- models.CustomerResource.parse_obj(model)
18
- for model in self.api_connector.send_or_fail(
19
- "GET",
20
- "/api/v1/customers",
21
- data=None,
22
- query_parameters={
23
- "skip": skip,
24
- "limit": limit,
25
- "filter": filter_,
26
- "sort": sort,
27
- },
28
- ).json
29
- ]
16
+ ) -> DtoResponse[list[models.CustomerResource]]:
17
+ local_response = self.api_connector.send_or_fail(
18
+ "GET",
19
+ "/api/v1/customers",
20
+ data=None,
21
+ query_parameters={
22
+ "skip": skip,
23
+ "limit": limit,
24
+ "filter": filter_,
25
+ "sort": sort,
26
+ },
27
+ )
28
+
29
+ return DtoResponse.from_response(local_response, models.CustomerResource)
30
30
 
31
31
  def read_customer(
32
32
  self,
33
33
  *,
34
34
  id_: int,
35
- ) -> models.CustomerResource:
36
- return models.CustomerResource.parse_obj(
37
- self.api_connector.send_or_fail(
38
- "GET", f"/api/v1/customers/{id_}", data=None, query_parameters={}
39
- ).json
35
+ ) -> DtoResponse[models.CustomerResource]:
36
+ local_response = self.api_connector.send_or_fail(
37
+ "GET", f"/api/v1/customers/{id_}", data=None, query_parameters={}
40
38
  )
41
39
 
40
+ return DtoResponse.from_response(local_response, models.CustomerResource)
41
+
42
42
  def list_ip_addresses_for_customer(
43
43
  self,
44
44
  *,
45
45
  id_: int,
46
- ) -> models.CustomerIPAddresses:
47
- return models.CustomerIPAddresses.parse_obj(
48
- self.api_connector.send_or_fail(
49
- "GET",
50
- f"/api/v1/customers/{id_}/ip-addresses",
51
- data=None,
52
- query_parameters={},
53
- ).json
46
+ ) -> DtoResponse[models.CustomerIPAddresses]:
47
+ local_response = self.api_connector.send_or_fail(
48
+ "GET",
49
+ f"/api/v1/customers/{id_}/ip-addresses",
50
+ data=None,
51
+ query_parameters={},
54
52
  )
55
53
 
54
+ return DtoResponse.from_response(local_response, models.CustomerIPAddresses)
55
+
56
56
  def create_ip_address_for_customer(
57
57
  self,
58
58
  request: models.CustomerIPAddressCreateRequest,
59
59
  *,
60
60
  id_: int,
61
- ) -> models.TaskCollectionResource:
62
- return models.TaskCollectionResource.parse_obj(
63
- self.api_connector.send_or_fail(
64
- "POST",
65
- f"/api/v1/customers/{id_}/ip-addresses",
66
- data=request.dict(exclude_unset=True),
67
- query_parameters={},
68
- ).json
61
+ ) -> DtoResponse[models.TaskCollectionResource]:
62
+ local_response = self.api_connector.send_or_fail(
63
+ "POST",
64
+ f"/api/v1/customers/{id_}/ip-addresses",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
69
67
  )
70
68
 
69
+ return DtoResponse.from_response(local_response, models.TaskCollectionResource)
70
+
71
71
  def delete_ip_address_for_customer(
72
72
  self,
73
73
  *,
74
74
  id_: int,
75
75
  ip_address: str,
76
- ) -> models.TaskCollectionResource:
77
- return models.TaskCollectionResource.parse_obj(
78
- self.api_connector.send_or_fail(
79
- "DELETE",
80
- f"/api/v1/customers/{id_}/ip-addresses/{ip_address}",
81
- data=None,
82
- query_parameters={},
83
- ).json
76
+ ) -> DtoResponse[models.TaskCollectionResource]:
77
+ local_response = self.api_connector.send_or_fail(
78
+ "DELETE",
79
+ f"/api/v1/customers/{id_}/ip-addresses/{ip_address}",
80
+ data=None,
81
+ query_parameters={},
84
82
  )
85
83
 
84
+ return DtoResponse.from_response(local_response, models.TaskCollectionResource)
85
+
86
86
  def get_ip_addresses_products_for_customers(
87
87
  self,
88
- ) -> list[models.IPAddressProduct]:
89
- return [
90
- models.IPAddressProduct.parse_obj(model)
91
- for model in self.api_connector.send_or_fail(
92
- "GET",
93
- "/api/v1/customers/ip-addresses/products",
94
- data=None,
95
- query_parameters={},
96
- ).json
97
- ]
88
+ ) -> DtoResponse[list[models.IPAddressProduct]]:
89
+ local_response = self.api_connector.send_or_fail(
90
+ "GET",
91
+ "/api/v1/customers/ip-addresses/products",
92
+ data=None,
93
+ query_parameters={},
94
+ )
95
+
96
+ return DtoResponse.from_response(local_response, models.IPAddressProduct)
@@ -1,6 +1,7 @@
1
1
  from cyberfusion.CoreApiClient import models
2
2
  from typing import Optional, List
3
3
 
4
+ from cyberfusion.CoreApiClient.http import DtoResponse
4
5
  from cyberfusion.CoreApiClient.interfaces import Resource
5
6
 
6
7
 
@@ -8,16 +9,16 @@ class Daemons(Resource):
8
9
  def create_daemon(
9
10
  self,
10
11
  request: models.DaemonCreateRequest,
11
- ) -> models.DaemonResource:
12
- return models.DaemonResource.parse_obj(
13
- self.api_connector.send_or_fail(
14
- "POST",
15
- "/api/v1/daemons",
16
- data=request.dict(exclude_unset=True),
17
- query_parameters={},
18
- ).json
12
+ ) -> DtoResponse[models.DaemonResource]:
13
+ local_response = self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/daemons",
16
+ data=request.dict(exclude_unset=True),
17
+ query_parameters={},
19
18
  )
20
19
 
20
+ return DtoResponse.from_response(local_response, models.DaemonResource)
21
+
21
22
  def list_daemons(
22
23
  self,
23
24
  *,
@@ -25,59 +26,58 @@ class Daemons(Resource):
25
26
  limit: Optional[int] = None,
26
27
  filter_: Optional[List[str]] = None,
27
28
  sort: Optional[List[str]] = None,
28
- ) -> list[models.DaemonResource]:
29
- return [
30
- models.DaemonResource.parse_obj(model)
31
- for model in self.api_connector.send_or_fail(
32
- "GET",
33
- "/api/v1/daemons",
34
- data=None,
35
- query_parameters={
36
- "skip": skip,
37
- "limit": limit,
38
- "filter": filter_,
39
- "sort": sort,
40
- },
41
- ).json
42
- ]
29
+ ) -> DtoResponse[list[models.DaemonResource]]:
30
+ local_response = self.api_connector.send_or_fail(
31
+ "GET",
32
+ "/api/v1/daemons",
33
+ data=None,
34
+ query_parameters={
35
+ "skip": skip,
36
+ "limit": limit,
37
+ "filter": filter_,
38
+ "sort": sort,
39
+ },
40
+ )
41
+
42
+ return DtoResponse.from_response(local_response, models.DaemonResource)
43
43
 
44
44
  def read_daemon(
45
45
  self,
46
46
  *,
47
47
  id_: int,
48
- ) -> models.DaemonResource:
49
- return models.DaemonResource.parse_obj(
50
- self.api_connector.send_or_fail(
51
- "GET", f"/api/v1/daemons/{id_}", data=None, query_parameters={}
52
- ).json
48
+ ) -> DtoResponse[models.DaemonResource]:
49
+ local_response = self.api_connector.send_or_fail(
50
+ "GET", f"/api/v1/daemons/{id_}", data=None, query_parameters={}
53
51
  )
54
52
 
53
+ return DtoResponse.from_response(local_response, models.DaemonResource)
54
+
55
55
  def update_daemon(
56
56
  self,
57
57
  request: models.DaemonUpdateRequest,
58
58
  *,
59
59
  id_: int,
60
- ) -> models.DaemonResource:
61
- return models.DaemonResource.parse_obj(
62
- self.api_connector.send_or_fail(
63
- "PATCH",
64
- f"/api/v1/daemons/{id_}",
65
- data=request.dict(exclude_unset=True),
66
- query_parameters={},
67
- ).json
60
+ ) -> DtoResponse[models.DaemonResource]:
61
+ local_response = self.api_connector.send_or_fail(
62
+ "PATCH",
63
+ f"/api/v1/daemons/{id_}",
64
+ data=request.dict(exclude_unset=True),
65
+ query_parameters={},
68
66
  )
69
67
 
68
+ return DtoResponse.from_response(local_response, models.DaemonResource)
69
+
70
70
  def delete_daemon(
71
71
  self,
72
72
  *,
73
73
  id_: int,
74
- ) -> models.DetailMessage:
75
- return models.DetailMessage.parse_obj(
76
- self.api_connector.send_or_fail(
77
- "DELETE", f"/api/v1/daemons/{id_}", data=None, query_parameters={}
78
- ).json
74
+ ) -> DtoResponse[models.DetailMessage]:
75
+ local_response = self.api_connector.send_or_fail(
76
+ "DELETE", f"/api/v1/daemons/{id_}", data=None, query_parameters={}
79
77
  )
80
78
 
79
+ return DtoResponse.from_response(local_response, models.DetailMessage)
80
+
81
81
  def list_logs(
82
82
  self,
83
83
  *,
@@ -85,17 +85,16 @@ class Daemons(Resource):
85
85
  timestamp: Optional[str] = None,
86
86
  sort: Optional[str] = None,
87
87
  limit: Optional[int] = None,
88
- ) -> list[models.DaemonLogResource]:
89
- return [
90
- models.DaemonLogResource.parse_obj(model)
91
- for model in self.api_connector.send_or_fail(
92
- "GET",
93
- f"/api/v1/daemons/{daemon_id}/logs",
94
- data=None,
95
- query_parameters={
96
- "timestamp": timestamp,
97
- "sort": sort,
98
- "limit": limit,
99
- },
100
- ).json
101
- ]
88
+ ) -> DtoResponse[list[models.DaemonLogResource]]:
89
+ local_response = self.api_connector.send_or_fail(
90
+ "GET",
91
+ f"/api/v1/daemons/{daemon_id}/logs",
92
+ data=None,
93
+ query_parameters={
94
+ "timestamp": timestamp,
95
+ "sort": sort,
96
+ "limit": limit,
97
+ },
98
+ )
99
+
100
+ return DtoResponse.from_response(local_response, models.DaemonLogResource)