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
@@ -2,22 +2,23 @@ from cyberfusion.CoreApiClient import models
2
2
  from typing import Optional, List
3
3
 
4
4
  from cyberfusion.CoreApiClient.interfaces import Resource
5
+ from cyberfusion.CoreApiClient.http import DtoResponse
5
6
 
6
7
 
7
8
  class UNIXUsers(Resource):
8
9
  def create_unix_user(
9
10
  self,
10
11
  request: models.UNIXUserCreateRequest,
11
- ) -> models.UNIXUserResource:
12
- return models.UNIXUserResource.parse_obj(
13
- self.api_connector.send_or_fail(
14
- "POST",
15
- "/api/v1/unix-users",
16
- data=request.dict(exclude_unset=True),
17
- query_parameters={},
18
- ).json
12
+ ) -> DtoResponse[models.UNIXUserResource]:
13
+ local_response = self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/unix-users",
16
+ data=request.dict(exclude_unset=True),
17
+ query_parameters={},
19
18
  )
20
19
 
20
+ return DtoResponse.from_response(local_response, models.UNIXUserResource)
21
+
21
22
  def list_unix_users(
22
23
  self,
23
24
  *,
@@ -25,98 +26,96 @@ class UNIXUsers(Resource):
25
26
  limit: Optional[int] = None,
26
27
  filter_: Optional[List[str]] = None,
27
28
  sort: Optional[List[str]] = None,
28
- ) -> list[models.UNIXUserResource]:
29
- return [
30
- models.UNIXUserResource.parse_obj(model)
31
- for model in self.api_connector.send_or_fail(
32
- "GET",
33
- "/api/v1/unix-users",
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.UNIXUserResource]]:
30
+ local_response = self.api_connector.send_or_fail(
31
+ "GET",
32
+ "/api/v1/unix-users",
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.UNIXUserResource)
43
43
 
44
44
  def read_unix_user(
45
45
  self,
46
46
  *,
47
47
  id_: int,
48
- ) -> models.UNIXUserResource:
49
- return models.UNIXUserResource.parse_obj(
50
- self.api_connector.send_or_fail(
51
- "GET", f"/api/v1/unix-users/{id_}", data=None, query_parameters={}
52
- ).json
48
+ ) -> DtoResponse[models.UNIXUserResource]:
49
+ local_response = self.api_connector.send_or_fail(
50
+ "GET", f"/api/v1/unix-users/{id_}", data=None, query_parameters={}
53
51
  )
54
52
 
53
+ return DtoResponse.from_response(local_response, models.UNIXUserResource)
54
+
55
55
  def update_unix_user(
56
56
  self,
57
57
  request: models.UNIXUserUpdateRequest,
58
58
  *,
59
59
  id_: int,
60
- ) -> models.UNIXUserResource:
61
- return models.UNIXUserResource.parse_obj(
62
- self.api_connector.send_or_fail(
63
- "PATCH",
64
- f"/api/v1/unix-users/{id_}",
65
- data=request.dict(exclude_unset=True),
66
- query_parameters={},
67
- ).json
60
+ ) -> DtoResponse[models.UNIXUserResource]:
61
+ local_response = self.api_connector.send_or_fail(
62
+ "PATCH",
63
+ f"/api/v1/unix-users/{id_}",
64
+ data=request.dict(exclude_unset=True),
65
+ query_parameters={},
68
66
  )
69
67
 
68
+ return DtoResponse.from_response(local_response, models.UNIXUserResource)
69
+
70
70
  def delete_unix_user(
71
71
  self,
72
72
  *,
73
73
  id_: int,
74
74
  delete_on_cluster: Optional[bool] = None,
75
- ) -> models.DetailMessage:
76
- return models.DetailMessage.parse_obj(
77
- self.api_connector.send_or_fail(
78
- "DELETE",
79
- f"/api/v1/unix-users/{id_}",
80
- data=None,
81
- query_parameters={
82
- "delete_on_cluster": delete_on_cluster,
83
- },
84
- ).json
75
+ ) -> DtoResponse[models.DetailMessage]:
76
+ local_response = self.api_connector.send_or_fail(
77
+ "DELETE",
78
+ f"/api/v1/unix-users/{id_}",
79
+ data=None,
80
+ query_parameters={
81
+ "delete_on_cluster": delete_on_cluster,
82
+ },
85
83
  )
86
84
 
85
+ return DtoResponse.from_response(local_response, models.DetailMessage)
86
+
87
87
  def compare_unix_users(
88
88
  self,
89
89
  *,
90
90
  left_unix_user_id: int,
91
91
  right_unix_user_id: int,
92
- ) -> models.UNIXUserComparison:
93
- return models.UNIXUserComparison.parse_obj(
94
- self.api_connector.send_or_fail(
95
- "GET",
96
- f"/api/v1/unix-users/{left_unix_user_id}/comparison",
97
- data=None,
98
- query_parameters={
99
- "right_unix_user_id": right_unix_user_id,
100
- },
101
- ).json
92
+ ) -> DtoResponse[models.UNIXUserComparison]:
93
+ local_response = self.api_connector.send_or_fail(
94
+ "GET",
95
+ f"/api/v1/unix-users/{left_unix_user_id}/comparison",
96
+ data=None,
97
+ query_parameters={
98
+ "right_unix_user_id": right_unix_user_id,
99
+ },
102
100
  )
103
101
 
102
+ return DtoResponse.from_response(local_response, models.UNIXUserComparison)
103
+
104
104
  def list_unix_user_usages(
105
105
  self,
106
106
  *,
107
107
  unix_user_id: int,
108
108
  timestamp: str,
109
109
  time_unit: Optional[models.UNIXUserUsageResource] = None,
110
- ) -> list[models.UNIXUserUsageResource]:
111
- return [
112
- models.UNIXUserUsageResource.parse_obj(model)
113
- for model in self.api_connector.send_or_fail(
114
- "GET",
115
- f"/api/v1/unix-users/usages/{unix_user_id}",
116
- data=None,
117
- query_parameters={
118
- "timestamp": timestamp,
119
- "time_unit": time_unit,
120
- },
121
- ).json
122
- ]
110
+ ) -> DtoResponse[list[models.UNIXUserUsageResource]]:
111
+ local_response = self.api_connector.send_or_fail(
112
+ "GET",
113
+ f"/api/v1/unix-users/usages/{unix_user_id}",
114
+ data=None,
115
+ query_parameters={
116
+ "timestamp": timestamp,
117
+ "time_unit": time_unit,
118
+ },
119
+ )
120
+
121
+ return DtoResponse.from_response(local_response, models.UNIXUserUsageResource)
@@ -1,6 +1,7 @@
1
- from cyberfusion.CoreApiClient import models
2
1
  from typing import Optional, List
3
2
 
3
+ from cyberfusion.CoreApiClient import models
4
+ from cyberfusion.CoreApiClient.http import DtoResponse
4
5
  from cyberfusion.CoreApiClient.interfaces import Resource
5
6
 
6
7
 
@@ -8,16 +9,16 @@ class URLRedirects(Resource):
8
9
  def create_url_redirect(
9
10
  self,
10
11
  request: models.URLRedirectCreateRequest,
11
- ) -> models.URLRedirectResource:
12
- return models.URLRedirectResource.parse_obj(
13
- self.api_connector.send_or_fail(
14
- "POST",
15
- "/api/v1/url-redirects",
16
- data=request.dict(exclude_unset=True),
17
- query_parameters={},
18
- ).json
12
+ ) -> DtoResponse[models.URLRedirectResource]:
13
+ local_response = self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/url-redirects",
16
+ data=request.dict(exclude_unset=True),
17
+ query_parameters={},
19
18
  )
20
19
 
20
+ return DtoResponse.from_response(local_response, models.URLRedirectResource)
21
+
21
22
  def list_url_redirects(
22
23
  self,
23
24
  *,
@@ -25,55 +26,54 @@ class URLRedirects(Resource):
25
26
  limit: Optional[int] = None,
26
27
  filter_: Optional[List[str]] = None,
27
28
  sort: Optional[List[str]] = None,
28
- ) -> list[models.URLRedirectResource]:
29
- return [
30
- models.URLRedirectResource.parse_obj(model)
31
- for model in self.api_connector.send_or_fail(
32
- "GET",
33
- "/api/v1/url-redirects",
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.URLRedirectResource]]:
30
+ local_response = self.api_connector.send_or_fail(
31
+ "GET",
32
+ "/api/v1/url-redirects",
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.URLRedirectResource)
43
43
 
44
44
  def read_url_redirect(
45
45
  self,
46
46
  *,
47
47
  id_: int,
48
- ) -> models.URLRedirectResource:
49
- return models.URLRedirectResource.parse_obj(
50
- self.api_connector.send_or_fail(
51
- "GET", f"/api/v1/url-redirects/{id_}", data=None, query_parameters={}
52
- ).json
48
+ ) -> DtoResponse[models.URLRedirectResource]:
49
+ local_response = self.api_connector.send_or_fail(
50
+ "GET", f"/api/v1/url-redirects/{id_}", data=None, query_parameters={}
53
51
  )
54
52
 
53
+ return DtoResponse.from_response(local_response, models.URLRedirectResource)
54
+
55
55
  def update_url_redirect(
56
56
  self,
57
57
  request: models.URLRedirectUpdateRequest,
58
58
  *,
59
59
  id_: int,
60
- ) -> models.URLRedirectResource:
61
- return models.URLRedirectResource.parse_obj(
62
- self.api_connector.send_or_fail(
63
- "PATCH",
64
- f"/api/v1/url-redirects/{id_}",
65
- data=request.dict(exclude_unset=True),
66
- query_parameters={},
67
- ).json
60
+ ) -> DtoResponse[models.URLRedirectResource]:
61
+ local_response = self.api_connector.send_or_fail(
62
+ "PATCH",
63
+ f"/api/v1/url-redirects/{id_}",
64
+ data=request.dict(exclude_unset=True),
65
+ query_parameters={},
68
66
  )
69
67
 
68
+ return DtoResponse.from_response(local_response, models.URLRedirectResource)
69
+
70
70
  def delete_url_redirect(
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/url-redirects/{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/url-redirects/{id_}", data=None, query_parameters={}
79
77
  )
78
+
79
+ 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 VirtualHosts(Resource):
8
9
  def create_virtual_host(
9
10
  self,
10
11
  request: models.VirtualHostCreateRequest,
11
- ) -> models.VirtualHostResource:
12
- return models.VirtualHostResource.parse_obj(
13
- self.api_connector.send_or_fail(
14
- "POST",
15
- "/api/v1/virtual-hosts",
16
- data=request.dict(exclude_unset=True),
17
- query_parameters={},
18
- ).json
12
+ ) -> DtoResponse[models.VirtualHostResource]:
13
+ local_response = self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/virtual-hosts",
16
+ data=request.dict(exclude_unset=True),
17
+ query_parameters={},
19
18
  )
20
19
 
20
+ return DtoResponse.from_response(local_response, models.VirtualHostResource)
21
+
21
22
  def list_virtual_hosts(
22
23
  self,
23
24
  *,
@@ -25,79 +26,78 @@ class VirtualHosts(Resource):
25
26
  limit: Optional[int] = None,
26
27
  filter_: Optional[List[str]] = None,
27
28
  sort: Optional[List[str]] = None,
28
- ) -> list[models.VirtualHostResource]:
29
- return [
30
- models.VirtualHostResource.parse_obj(model)
31
- for model in self.api_connector.send_or_fail(
32
- "GET",
33
- "/api/v1/virtual-hosts",
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.VirtualHostResource]]:
30
+ local_response = self.api_connector.send_or_fail(
31
+ "GET",
32
+ "/api/v1/virtual-hosts",
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.VirtualHostResource)
43
43
 
44
44
  def read_virtual_host(
45
45
  self,
46
46
  *,
47
47
  id_: int,
48
- ) -> models.VirtualHostResource:
49
- return models.VirtualHostResource.parse_obj(
50
- self.api_connector.send_or_fail(
51
- "GET", f"/api/v1/virtual-hosts/{id_}", data=None, query_parameters={}
52
- ).json
48
+ ) -> DtoResponse[models.VirtualHostResource]:
49
+ local_response = self.api_connector.send_or_fail(
50
+ "GET", f"/api/v1/virtual-hosts/{id_}", data=None, query_parameters={}
53
51
  )
54
52
 
53
+ return DtoResponse.from_response(local_response, models.VirtualHostResource)
54
+
55
55
  def update_virtual_host(
56
56
  self,
57
57
  request: models.VirtualHostUpdateRequest,
58
58
  *,
59
59
  id_: int,
60
- ) -> models.VirtualHostResource:
61
- return models.VirtualHostResource.parse_obj(
62
- self.api_connector.send_or_fail(
63
- "PATCH",
64
- f"/api/v1/virtual-hosts/{id_}",
65
- data=request.dict(exclude_unset=True),
66
- query_parameters={},
67
- ).json
60
+ ) -> DtoResponse[models.VirtualHostResource]:
61
+ local_response = self.api_connector.send_or_fail(
62
+ "PATCH",
63
+ f"/api/v1/virtual-hosts/{id_}",
64
+ data=request.dict(exclude_unset=True),
65
+ query_parameters={},
68
66
  )
69
67
 
68
+ return DtoResponse.from_response(local_response, models.VirtualHostResource)
69
+
70
70
  def delete_virtual_host(
71
71
  self,
72
72
  *,
73
73
  id_: int,
74
74
  delete_on_cluster: Optional[bool] = None,
75
- ) -> models.DetailMessage:
76
- return models.DetailMessage.parse_obj(
77
- self.api_connector.send_or_fail(
78
- "DELETE",
79
- f"/api/v1/virtual-hosts/{id_}",
80
- data=None,
81
- query_parameters={
82
- "delete_on_cluster": delete_on_cluster,
83
- },
84
- ).json
75
+ ) -> DtoResponse[models.DetailMessage]:
76
+ local_response = self.api_connector.send_or_fail(
77
+ "DELETE",
78
+ f"/api/v1/virtual-hosts/{id_}",
79
+ data=None,
80
+ query_parameters={
81
+ "delete_on_cluster": delete_on_cluster,
82
+ },
85
83
  )
86
84
 
85
+ return DtoResponse.from_response(local_response, models.DetailMessage)
86
+
87
87
  def get_virtual_host_document_root(
88
88
  self,
89
89
  *,
90
90
  id_: int,
91
- ) -> models.VirtualHostDocumentRoot:
92
- return models.VirtualHostDocumentRoot.parse_obj(
93
- self.api_connector.send_or_fail(
94
- "GET",
95
- f"/api/v1/virtual-hosts/{id_}/document-root",
96
- data=None,
97
- query_parameters={},
98
- ).json
91
+ ) -> DtoResponse[models.VirtualHostDocumentRoot]:
92
+ local_response = self.api_connector.send_or_fail(
93
+ "GET",
94
+ f"/api/v1/virtual-hosts/{id_}/document-root",
95
+ data=None,
96
+ query_parameters={},
99
97
  )
100
98
 
99
+ return DtoResponse.from_response(local_response, models.VirtualHostDocumentRoot)
100
+
101
101
  def sync_domain_roots_of_virtual_hosts(
102
102
  self,
103
103
  *,
@@ -105,16 +105,16 @@ class VirtualHosts(Resource):
105
105
  right_virtual_host_id: int,
106
106
  callback_url: Optional[str] = None,
107
107
  exclude_paths: Optional[List[str]] = None,
108
- ) -> models.TaskCollectionResource:
109
- return models.TaskCollectionResource.parse_obj(
110
- self.api_connector.send_or_fail(
111
- "POST",
112
- f"/api/v1/virtual-hosts/{left_virtual_host_id}/domain-root/sync",
113
- data=None,
114
- query_parameters={
115
- "callback_url": callback_url,
116
- "right_virtual_host_id": right_virtual_host_id,
117
- "exclude_paths": exclude_paths,
118
- },
119
- ).json
108
+ ) -> DtoResponse[models.TaskCollectionResource]:
109
+ local_response = self.api_connector.send_or_fail(
110
+ "POST",
111
+ f"/api/v1/virtual-hosts/{left_virtual_host_id}/domain-root/sync",
112
+ data=None,
113
+ query_parameters={
114
+ "callback_url": callback_url,
115
+ "right_virtual_host_id": right_virtual_host_id,
116
+ "exclude_paths": exclude_paths,
117
+ },
120
118
  )
119
+
120
+ return DtoResponse.from_response(local_response, models.TaskCollectionResource)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-core-api-client
3
- Version: 1.2
3
+ Version: 2.1.0
4
4
  Summary: Python client for Core API.
5
5
  Author-email: Cyberfusion <support@cyberfusion.io>
6
6
  Project-URL: Source, https://github.com/CyberfusionIO/python3-core-api-client
@@ -9,7 +9,7 @@ Requires-Dist: certifi==2022.9.24
9
9
  Requires-Dist: requests==2.28.1
10
10
  Requires-Dist: pydantic[dotenv,email]==1.10.4
11
11
 
12
- # python3-core-api-client
12
+ # python3-core-api-client
13
13
 
14
14
  Python client for Core API.
15
15
 
@@ -69,7 +69,9 @@ connector = CoreApiConnector(
69
69
  api_key='api_key'
70
70
  )
71
71
 
72
- virtual_hosts = connector.virtual_hosts.list_virtual_hosts()
72
+ response = connector.virtual_hosts.list_virtual_hosts()
73
+
74
+ virtual_hosts = response.dto
73
75
  ```
74
76
 
75
77
  ## Authentication
@@ -168,7 +170,7 @@ for error in errors:
168
170
 
169
171
  ### Get model from response
170
172
 
171
- Calling an endpoint returns the resource model.
173
+ Calling an endpoint returns a response model (`DtoResponse`) containing the resource model (in the `dto` variable).
172
174
 
173
175
  Code example:
174
176
 
@@ -181,7 +183,7 @@ connector = CoreApiConnector(
181
183
  username='username', password='password'
182
184
  )
183
185
 
184
- mail_domain_resource = connector.mail_domains.create_mail_domain(
186
+ response = connector.mail_domains.create_mail_domain(
185
187
  MailDomainCreateRequest(
186
188
  domain='cyberfusion.io',
187
189
  unix_user_id=1,
@@ -189,9 +191,46 @@ mail_domain_resource = connector.mail_domains.create_mail_domain(
189
191
  catch_all_forward_email_addresses=[],
190
192
  )
191
193
  )
194
+
195
+ mail_domain_resource = response.dto
192
196
  # mail_domain_resource is a model representing the API resource
193
197
  ```
194
198
 
199
+ ### Get other information from response
200
+
201
+ The response model also contains the response status code, body (in both string and JSON format), headers and a failed boolean.
202
+
203
+ Need even more? Access the raw response object in `requests_response`.
204
+
205
+ Code example:
206
+
207
+ ```python
208
+ import requests_cache
209
+
210
+ from cyberfusion.CoreApiClient.connector import CoreApiConnector
211
+
212
+ from cyberfusion.CoreApiClient.models import MailAliasCreateRequest
213
+
214
+ connector = CoreApiConnector(
215
+ username='username', password='password', requests_session=requests_cache.CachedSession()
216
+ )
217
+
218
+ response = connector.mail_aliases.create_mail_alias(
219
+ MailAliasCreateRequest(
220
+ local_part='&^@$#^&@$#^&',
221
+ mail_domain_id=1,
222
+ )
223
+ )
224
+
225
+ if response.failed:
226
+ print("HTTP request failed with status code: ", response.status_code)
227
+
228
+ if response.requests_response.from_cache:
229
+ print("Cached response body: ", response.body)
230
+
231
+ json_body = response.json
232
+ ```
233
+
195
234
  ### Throw exception on failure
196
235
 
197
236
  If a request returns an unexpected HTTP status code, `cyberfusion.CoreApiClient.exceptions.CallException` is thrown.
@@ -236,12 +275,6 @@ from cyberfusion.CoreApiClient.connector import CoreApiConnector
236
275
  connector = CoreApiConnector(...)
237
276
 
238
277
  response = connector.send(method='GET', path='/foobar', data={}, query_parameters={})
239
-
240
- response.status_code
241
- response.json
242
- response.body
243
- response.headers
244
- response.failed
245
278
  ```
246
279
 
247
280
  To raise `cyberfusion.CoreApiClient.exceptions.CallException` in case of an unexpected HTTP status code, use `send_or_fail` instead of `send`. It takes the same parameters.
@@ -0,0 +1,59 @@
1
+ cyberfusion/CoreApiClient/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ cyberfusion/CoreApiClient/_encoders.py,sha256=b4k_ULo1KOR1XBsYGXsmnOUsWL2bBHU_NMtc-Zl4C4Q,430
3
+ cyberfusion/CoreApiClient/connector.py,sha256=8EXN__4q0NLgKxXfJuSBZjfAohC5v88HNEsHkZmMrM8,12747
4
+ cyberfusion/CoreApiClient/exceptions.py,sha256=fNxPtzVL4SzPiVNZmBTu1l8D57dkCxMxflyIXDPLE4Q,204
5
+ cyberfusion/CoreApiClient/http.py,sha256=XhN6Ik1cPczr0KgVlQ411h3wEmgPLjBmerodeYS61f0,1313
6
+ cyberfusion/CoreApiClient/interfaces.py,sha256=P0wCbmSNEpB-eF49PHudc_qXM4blIXm4TsD2AB0z_7Q,269
7
+ cyberfusion/CoreApiClient/models.py,sha256=2DSzTmsqrsa1wVsBLW_Vmy3wrUZIULW3u0pv0EVBzjA,93986
8
+ cyberfusion/CoreApiClient/resources/__init__.py,sha256=E5VMFXttOmN7TjJt0WeARL_tYVoJcLoRoOnIYkCF748,1881
9
+ cyberfusion/CoreApiClient/resources/basic_authentication_realms.py,sha256=fuugVCo9rW7kfaYJ2mvdL83EBNeXa4xiPY_OmEPUBdI,2980
10
+ cyberfusion/CoreApiClient/resources/borg_archives.py,sha256=h_w_txXyPUqkAyopA-YqPQSfqRufwInbRDO0ZV2dyV8,4507
11
+ cyberfusion/CoreApiClient/resources/borg_repositories.py,sha256=TX70qoHdMwMw0piChOzByo-qdF9uoYKwn9xLGmTpo1o,4133
12
+ cyberfusion/CoreApiClient/resources/certificate_managers.py,sha256=KmeY0N6v_xlE3aRmyvee-hXDHmQxhRbSzbtZBFVCvMk,3249
13
+ cyberfusion/CoreApiClient/resources/certificates.py,sha256=RvpaQsMtVAGpTPt3xo6VQozBi2d4v-xd_jXoVY7ofn8,2038
14
+ cyberfusion/CoreApiClient/resources/clusters.py,sha256=J2YivixLqpuH_2So5wQV7cLUUz8u6Inb8S1DROeUIDE,49674
15
+ cyberfusion/CoreApiClient/resources/cmses.py,sha256=JzOUaWOInI4Q30IGEc8QkbgoE6WCGwYowmHgR3vTzsA,8950
16
+ cyberfusion/CoreApiClient/resources/crons.py,sha256=TcLSsjwkc2jJPDHIvexzUZXCiYeMYqBPEmCTm-XkPWI,2365
17
+ cyberfusion/CoreApiClient/resources/custom_config_snippets.py,sha256=IjkhpqZ25T9Rkm8eKRyfcXaV1TP1hHp29nDoY05xxw0,2976
18
+ cyberfusion/CoreApiClient/resources/custom_configs.py,sha256=2d7Ep-SH2Y37-ZMYcZDOvPQo7RFz99pTOcB_kULCKGs,2580
19
+ cyberfusion/CoreApiClient/resources/customers.py,sha256=MBF2k-CBLNvBSCtHiwSbqJEOpCtpDx5Zf6iYPdtPMlE,3010
20
+ cyberfusion/CoreApiClient/resources/daemons.py,sha256=k3Ged9trVIQ0QxHScIjhWENXLQ55JjkeDKSHA-07G_Q,3035
21
+ cyberfusion/CoreApiClient/resources/database_user_grants.py,sha256=n0KvItGArpaPZbY2N806VeoHGGpN5_pfwdwWzQ3Sre0,1815
22
+ cyberfusion/CoreApiClient/resources/database_users.py,sha256=ur6uVI5IseW_hkgbsRnvosi2HDC5ub0l3k41qVAiIPg,2580
23
+ cyberfusion/CoreApiClient/resources/databases.py,sha256=wd9DFu6Lu6oXDkmYf19FsthDIzVfAi33F-493jAJT9w,4476
24
+ cyberfusion/CoreApiClient/resources/domain_routers.py,sha256=J_Pa81KF3m-991j2m0Z3eoO-Td1vZZJLEVLPEMdivU4,1385
25
+ cyberfusion/CoreApiClient/resources/firewall_groups.py,sha256=hePq1bnn1_y9EQxxjROu2qVDNqCgXVXpUfA6mubawiQ,2601
26
+ cyberfusion/CoreApiClient/resources/firewall_rules.py,sha256=t9Xqt08CP1CdFZr3mzIhOeCMJmt6JIX3pRQrkuXRqnA,2099
27
+ cyberfusion/CoreApiClient/resources/fpm_pools.py,sha256=7qj_Rmk3qJOq6YUg1z115BLWFGsgRLuf8lJTEkcJkiQ,3450
28
+ cyberfusion/CoreApiClient/resources/ftp_users.py,sha256=dkxoPK8cZ8xzJ6FN7p2M7KITdSyVUnekIbEPvr5qiZw,2926
29
+ cyberfusion/CoreApiClient/resources/haproxy_listens.py,sha256=b70TywD4jU7Z4GGwk5D9YrWqVRvMOPhhlfgpv6eb2QQ,2115
30
+ cyberfusion/CoreApiClient/resources/haproxy_listens_to_nodes.py,sha256=sWuX8ZoJbTtuJcjoc5O9nmnf-hI0lRj8IdgvYU6G8As,2336
31
+ cyberfusion/CoreApiClient/resources/health.py,sha256=IxeFtXVKUpjmCUHxJaGOfcgUuGgpcMJGHfVuf-5U50g,482
32
+ cyberfusion/CoreApiClient/resources/hosts_entries.py,sha256=MowfkJFJGg0PHDG8n9bJBNsEkDOLZm2AdfHdmJiWIM4,2035
33
+ cyberfusion/CoreApiClient/resources/htpasswd_files.py,sha256=azVNZXmeMwkDjvKXTCSXvw35IO29CZGPGiEBo8OqvWU,2099
34
+ cyberfusion/CoreApiClient/resources/htpasswd_users.py,sha256=-j7jz6Q9RBUuxbb3Q1PgoxXxIdNNtM-KFnw97qGEqcg,2580
35
+ cyberfusion/CoreApiClient/resources/login.py,sha256=FBbVwaNMO0zf9q8qtx5oDhCJVsmb72RQrauPiU8SOzM,983
36
+ cyberfusion/CoreApiClient/resources/logs.py,sha256=k7CswaRXGkBsjQoz7WyNrVcdnImfpus2yfBb2q2x5UU,2924
37
+ cyberfusion/CoreApiClient/resources/mail_accounts.py,sha256=2DOa5bkhRRxdvID3Uu27jOzq5f9GRXdabSIlTGij3vc,3334
38
+ cyberfusion/CoreApiClient/resources/mail_aliases.py,sha256=MiysNIIFu3cxt0n7a9CTgSm5g4aINu7sANMvopow26s,2487
39
+ cyberfusion/CoreApiClient/resources/mail_domains.py,sha256=ylDKsfnKC0j_MuWzXUgFHkNqCAp29GMoog11TLwhUbU,2501
40
+ cyberfusion/CoreApiClient/resources/mail_hostnames.py,sha256=tmFoD5mqAuu3Idq8lBBY98BM2k9OTgo9HFyKGSJlzMg,2580
41
+ cyberfusion/CoreApiClient/resources/malwares.py,sha256=sATKH58TNctqtCI8cIe8e3BnUIQz-0lSTrq5hKWsEeQ,878
42
+ cyberfusion/CoreApiClient/resources/mariadb_encryption_keys.py,sha256=uHE64lOTjKaWxVm6PxFuXpLQQl2ANI3VU6ICJpMX0iA,1931
43
+ cyberfusion/CoreApiClient/resources/node_add_ons.py,sha256=9WCITs_QczUA-jrlgOnKz9KuPZZj-IlSBJy9RVIFY_k,2368
44
+ cyberfusion/CoreApiClient/resources/nodes.py,sha256=xD9lt6wow8lSVYXZ6UJWwnP9ZfhUfEB5hU36RB8FIO4,3377
45
+ cyberfusion/CoreApiClient/resources/passenger_apps.py,sha256=fFuS85zBRJ3kC-hO8F-sre-Oxdc4uJizISzvCxQZjD8,3205
46
+ cyberfusion/CoreApiClient/resources/redis_instances.py,sha256=Q94tDfKao4yy_a7W8egqufrnUZj7agN4S5HBxCMEbRg,2720
47
+ cyberfusion/CoreApiClient/resources/root_ssh_keys.py,sha256=eF7gDrXnZWsUfXUZ_ovMyApT3yNRwWrCquKkG5C6ZF4,2517
48
+ cyberfusion/CoreApiClient/resources/security_txt_policies.py,sha256=H_eAd9SjQ7icB_gWlM6771LRHwCULJxtwPJMTM_C-cw,2827
49
+ cyberfusion/CoreApiClient/resources/sites.py,sha256=O5vT7kxOZX6_dJHQboZ9DmSL--xHJjOQp5u2X5uD3r4,863
50
+ cyberfusion/CoreApiClient/resources/ssh_keys.py,sha256=tgwjzdLazxgK_9k69bif7TLcxpbYMvnAtpsgVbcVBlI,2423
51
+ cyberfusion/CoreApiClient/resources/task_collections.py,sha256=q9klVO9ZcyDqFC4diy_XgcwLZ3dKYCyGWn--muVGc4I,1146
52
+ cyberfusion/CoreApiClient/resources/tombstones.py,sha256=a0JwjubnQ4Fbic4Me0aH9J29rQaK9Cx1cl7eZTK-xyk,888
53
+ cyberfusion/CoreApiClient/resources/unix_users.py,sha256=9CPxqEnuJtrK7v25Y6YhrzGtahaIOgjH1X1IHewjR8M,3761
54
+ cyberfusion/CoreApiClient/resources/url_redirects.py,sha256=icj44_gTPoXjl_CMsSbWN0cCO0-5zkwTGv4mtBre2_4,2522
55
+ cyberfusion/CoreApiClient/resources/virtual_hosts.py,sha256=IcWdCQWLTP-JSq7VvJVWZyZzYYoxxP_jRLoyz3wlhrY,3878
56
+ python3_core_api_client-2.1.0.dist-info/METADATA,sha256=9SaOfB7ymcEM7xKposwcM-dBoKKF6on0TcmlI-oRTB8,8046
57
+ python3_core_api_client-2.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
58
+ python3_core_api_client-2.1.0.dist-info/top_level.txt,sha256=ss011q9S6SL_KIIyq7iujFmIYa0grSjlnInO7cDkeag,12
59
+ python3_core_api_client-2.1.0.dist-info/RECORD,,