python3-core-api-client 0.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.
Files changed (59) hide show
  1. cyberfusion/CoreApiClient/__init__.py +0 -0
  2. cyberfusion/CoreApiClient/_encoders.py +7 -0
  3. cyberfusion/CoreApiClient/connector.py +382 -0
  4. cyberfusion/CoreApiClient/exceptions.py +13 -0
  5. cyberfusion/CoreApiClient/http.py +21 -0
  6. cyberfusion/CoreApiClient/interfaces.py +9 -0
  7. cyberfusion/CoreApiClient/models.py +5350 -0
  8. cyberfusion/CoreApiClient/resources/__init__.py +99 -0
  9. cyberfusion/CoreApiClient/resources/basic_authentication_realms.py +85 -0
  10. cyberfusion/CoreApiClient/resources/borg_archives.py +144 -0
  11. cyberfusion/CoreApiClient/resources/borg_repositories.py +134 -0
  12. cyberfusion/CoreApiClient/resources/certificate_managers.py +99 -0
  13. cyberfusion/CoreApiClient/resources/certificates.py +63 -0
  14. cyberfusion/CoreApiClient/resources/clusters.py +233 -0
  15. cyberfusion/CoreApiClient/resources/cmses.py +289 -0
  16. cyberfusion/CoreApiClient/resources/crons.py +76 -0
  17. cyberfusion/CoreApiClient/resources/custom_config_snippets.py +88 -0
  18. cyberfusion/CoreApiClient/resources/custom_configs.py +82 -0
  19. cyberfusion/CoreApiClient/resources/customers.py +97 -0
  20. cyberfusion/CoreApiClient/resources/daemons.py +76 -0
  21. cyberfusion/CoreApiClient/resources/database_user_grants.py +66 -0
  22. cyberfusion/CoreApiClient/resources/database_users.py +82 -0
  23. cyberfusion/CoreApiClient/resources/databases.py +140 -0
  24. cyberfusion/CoreApiClient/resources/domain_routers.py +43 -0
  25. cyberfusion/CoreApiClient/resources/firewall_groups.py +82 -0
  26. cyberfusion/CoreApiClient/resources/firewall_rules.py +67 -0
  27. cyberfusion/CoreApiClient/resources/fpm_pools.py +110 -0
  28. cyberfusion/CoreApiClient/resources/ftp_users.py +89 -0
  29. cyberfusion/CoreApiClient/resources/haproxy_listens.py +67 -0
  30. cyberfusion/CoreApiClient/resources/haproxy_listens_to_nodes.py +70 -0
  31. cyberfusion/CoreApiClient/resources/health.py +14 -0
  32. cyberfusion/CoreApiClient/resources/hosts_entries.py +63 -0
  33. cyberfusion/CoreApiClient/resources/htpasswd_files.py +67 -0
  34. cyberfusion/CoreApiClient/resources/htpasswd_users.py +82 -0
  35. cyberfusion/CoreApiClient/resources/login.py +28 -0
  36. cyberfusion/CoreApiClient/resources/logs.py +50 -0
  37. cyberfusion/CoreApiClient/resources/mail_accounts.py +105 -0
  38. cyberfusion/CoreApiClient/resources/mail_aliases.py +79 -0
  39. cyberfusion/CoreApiClient/resources/mail_domains.py +79 -0
  40. cyberfusion/CoreApiClient/resources/mail_hostnames.py +82 -0
  41. cyberfusion/CoreApiClient/resources/malwares.py +53 -0
  42. cyberfusion/CoreApiClient/resources/mariadb_encryption_keys.py +56 -0
  43. cyberfusion/CoreApiClient/resources/node_add_ons.py +74 -0
  44. cyberfusion/CoreApiClient/resources/nodes.py +112 -0
  45. cyberfusion/CoreApiClient/resources/passenger_apps.py +99 -0
  46. cyberfusion/CoreApiClient/resources/redis_instances.py +85 -0
  47. cyberfusion/CoreApiClient/resources/root_ssh_keys.py +77 -0
  48. cyberfusion/CoreApiClient/resources/security_txt_policies.py +85 -0
  49. cyberfusion/CoreApiClient/resources/sites.py +29 -0
  50. cyberfusion/CoreApiClient/resources/ssh_keys.py +77 -0
  51. cyberfusion/CoreApiClient/resources/task_collections.py +38 -0
  52. cyberfusion/CoreApiClient/resources/tombstones.py +29 -0
  53. cyberfusion/CoreApiClient/resources/unix_users.py +122 -0
  54. cyberfusion/CoreApiClient/resources/url_redirects.py +79 -0
  55. cyberfusion/CoreApiClient/resources/virtual_hosts.py +120 -0
  56. python3_core_api_client-0.1.dist-info/METADATA +236 -0
  57. python3_core_api_client-0.1.dist-info/RECORD +59 -0
  58. python3_core_api_client-0.1.dist-info/WHEEL +5 -0
  59. python3_core_api_client-0.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,82 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class CustomConfigs(Resource):
8
+ def create_custom_config(
9
+ self,
10
+ request: models.CustomConfigCreateRequest,
11
+ ) -> models.CustomConfigResource:
12
+ return models.CustomConfigResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/custom-configs",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_custom_configs(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.CustomConfigResource]:
29
+ return [
30
+ models.CustomConfigResource.construct(**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
+ ]
43
+
44
+ def read_custom_config(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.CustomConfigResource:
49
+ return models.CustomConfigResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/custom-configs/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_custom_config(
56
+ self,
57
+ request: models.CustomConfigUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.CustomConfigResource:
61
+ return models.CustomConfigResource.construct(
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
68
+ )
69
+
70
+ def delete_custom_config(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ ) -> models.DetailMessage:
75
+ return models.DetailMessage.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "DELETE",
78
+ f"/api/v1/custom-configs/{id_}",
79
+ data=None,
80
+ query_parameters={},
81
+ ).json
82
+ )
@@ -0,0 +1,97 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class Customers(Resource):
8
+ def list_customers(
9
+ self,
10
+ *,
11
+ skip: Optional[int] = None,
12
+ limit: Optional[int] = None,
13
+ filter_: Optional[List[str]] = None,
14
+ sort: Optional[List[str]] = None,
15
+ ) -> list[models.CustomerResource]:
16
+ return [
17
+ models.CustomerResource.construct(**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
+ ]
30
+
31
+ def read_customer(
32
+ self,
33
+ *,
34
+ id_: int,
35
+ ) -> models.CustomerResource:
36
+ return models.CustomerResource.construct(
37
+ **self.api_connector.send_or_fail(
38
+ "GET", f"/api/v1/customers/{id_}", data=None, query_parameters={}
39
+ ).json
40
+ )
41
+
42
+ def list_ip_addresses_for_customer(
43
+ self,
44
+ *,
45
+ id_: int,
46
+ ) -> models.CustomerIPAddresses:
47
+ return models.CustomerIPAddresses.construct(
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
54
+ )
55
+
56
+ def create_ip_address_for_customer(
57
+ self,
58
+ request: models.CustomerIPAddressCreateRequest,
59
+ *,
60
+ id_: int,
61
+ ) -> models.TaskCollectionResource:
62
+ return models.TaskCollectionResource.construct(
63
+ **self.api_connector.send_or_fail(
64
+ "POST",
65
+ f"/api/v1/customers/{id_}/ip-addresses",
66
+ data=request.dict(),
67
+ query_parameters={},
68
+ ).json
69
+ )
70
+
71
+ def delete_ip_address_for_customer(
72
+ self,
73
+ *,
74
+ id_: int,
75
+ ip_address: str,
76
+ ) -> models.TaskCollectionResource:
77
+ return models.TaskCollectionResource.construct(
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
84
+ )
85
+
86
+ def get_ip_addresses_products_for_customers(
87
+ self,
88
+ ) -> list[models.IPAddressProduct]:
89
+ return [
90
+ models.IPAddressProduct.construct(**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
+ ]
@@ -0,0 +1,76 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class Daemons(Resource):
8
+ def create_daemon(
9
+ self,
10
+ request: models.DaemonCreateRequest,
11
+ ) -> models.DaemonResource:
12
+ return models.DaemonResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST", "/api/v1/daemons", data=request.dict(), query_parameters={}
15
+ ).json
16
+ )
17
+
18
+ def list_daemons(
19
+ self,
20
+ *,
21
+ skip: Optional[int] = None,
22
+ limit: Optional[int] = None,
23
+ filter_: Optional[List[str]] = None,
24
+ sort: Optional[List[str]] = None,
25
+ ) -> list[models.DaemonResource]:
26
+ return [
27
+ models.DaemonResource.construct(**model)
28
+ for model in self.api_connector.send_or_fail(
29
+ "GET",
30
+ "/api/v1/daemons",
31
+ data=None,
32
+ query_parameters={
33
+ "skip": skip,
34
+ "limit": limit,
35
+ "filter": filter_,
36
+ "sort": sort,
37
+ },
38
+ ).json
39
+ ]
40
+
41
+ def read_daemon(
42
+ self,
43
+ *,
44
+ id_: int,
45
+ ) -> models.DaemonResource:
46
+ return models.DaemonResource.construct(
47
+ **self.api_connector.send_or_fail(
48
+ "GET", f"/api/v1/daemons/{id_}", data=None, query_parameters={}
49
+ ).json
50
+ )
51
+
52
+ def update_daemon(
53
+ self,
54
+ request: models.DaemonUpdateRequest,
55
+ *,
56
+ id_: int,
57
+ ) -> models.DaemonResource:
58
+ return models.DaemonResource.construct(
59
+ **self.api_connector.send_or_fail(
60
+ "PATCH",
61
+ f"/api/v1/daemons/{id_}",
62
+ data=request.dict(exclude_unset=True),
63
+ query_parameters={},
64
+ ).json
65
+ )
66
+
67
+ def delete_daemon(
68
+ self,
69
+ *,
70
+ id_: int,
71
+ ) -> models.DetailMessage:
72
+ return models.DetailMessage.construct(
73
+ **self.api_connector.send_or_fail(
74
+ "DELETE", f"/api/v1/daemons/{id_}", data=None, query_parameters={}
75
+ ).json
76
+ )
@@ -0,0 +1,66 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class DatabaseUserGrants(Resource):
8
+ def create_database_user_grant(
9
+ self,
10
+ request: models.DatabaseUserGrantCreateRequest,
11
+ ) -> models.DatabaseUserGrantResource:
12
+ return models.DatabaseUserGrantResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/database-user-grants",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_database_user_grants(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.DatabaseUserGrantResource]:
29
+ return [
30
+ models.DatabaseUserGrantResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/database-user-grants",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def list_database_user_grants_for_database_users(
45
+ self,
46
+ *,
47
+ database_user_id: int,
48
+ skip: Optional[int] = None,
49
+ limit: Optional[int] = None,
50
+ filter_: Optional[List[str]] = None,
51
+ sort: Optional[List[str]] = None,
52
+ ) -> list[models.DatabaseUserGrantResource]:
53
+ return [
54
+ models.DatabaseUserGrantResource.construct(**model)
55
+ for model in self.api_connector.send_or_fail(
56
+ "GET",
57
+ f"/api/v1/database-user-grants/{database_user_id}",
58
+ data=None,
59
+ query_parameters={
60
+ "skip": skip,
61
+ "limit": limit,
62
+ "filter": filter_,
63
+ "sort": sort,
64
+ },
65
+ ).json
66
+ ]
@@ -0,0 +1,82 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class DatabaseUsers(Resource):
8
+ def create_database_user(
9
+ self,
10
+ request: models.DatabaseUserCreateRequest,
11
+ ) -> models.DatabaseUserResource:
12
+ return models.DatabaseUserResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/database-users",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_database_users(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.DatabaseUserResource]:
29
+ return [
30
+ models.DatabaseUserResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/database-users",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_database_user(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.DatabaseUserResource:
49
+ return models.DatabaseUserResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/database-users/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_database_user(
56
+ self,
57
+ request: models.DatabaseUserUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.DatabaseUserResource:
61
+ return models.DatabaseUserResource.construct(
62
+ **self.api_connector.send_or_fail(
63
+ "PATCH",
64
+ f"/api/v1/database-users/{id_}",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
67
+ ).json
68
+ )
69
+
70
+ def delete_database_user(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ ) -> models.DetailMessage:
75
+ return models.DetailMessage.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "DELETE",
78
+ f"/api/v1/database-users/{id_}",
79
+ data=None,
80
+ query_parameters={},
81
+ ).json
82
+ )
@@ -0,0 +1,140 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class Databases(Resource):
8
+ def create_database(
9
+ self,
10
+ request: models.DatabaseCreateRequest,
11
+ ) -> models.DatabaseResource:
12
+ return models.DatabaseResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST", "/api/v1/databases", data=request.dict(), query_parameters={}
15
+ ).json
16
+ )
17
+
18
+ def list_databases(
19
+ self,
20
+ *,
21
+ skip: Optional[int] = None,
22
+ limit: Optional[int] = None,
23
+ filter_: Optional[List[str]] = None,
24
+ sort: Optional[List[str]] = None,
25
+ ) -> list[models.DatabaseResource]:
26
+ return [
27
+ models.DatabaseResource.construct(**model)
28
+ for model in self.api_connector.send_or_fail(
29
+ "GET",
30
+ "/api/v1/databases",
31
+ data=None,
32
+ query_parameters={
33
+ "skip": skip,
34
+ "limit": limit,
35
+ "filter": filter_,
36
+ "sort": sort,
37
+ },
38
+ ).json
39
+ ]
40
+
41
+ def read_database(
42
+ self,
43
+ *,
44
+ id_: int,
45
+ ) -> models.DatabaseResource:
46
+ return models.DatabaseResource.construct(
47
+ **self.api_connector.send_or_fail(
48
+ "GET", f"/api/v1/databases/{id_}", data=None, query_parameters={}
49
+ ).json
50
+ )
51
+
52
+ def update_database(
53
+ self,
54
+ request: models.DatabaseUpdateRequest,
55
+ *,
56
+ id_: int,
57
+ ) -> models.DatabaseResource:
58
+ return models.DatabaseResource.construct(
59
+ **self.api_connector.send_or_fail(
60
+ "PATCH",
61
+ f"/api/v1/databases/{id_}",
62
+ data=request.dict(exclude_unset=True),
63
+ query_parameters={},
64
+ ).json
65
+ )
66
+
67
+ def delete_database(
68
+ self,
69
+ *,
70
+ id_: int,
71
+ delete_on_cluster: Optional[bool] = None,
72
+ ) -> models.DetailMessage:
73
+ return models.DetailMessage.construct(
74
+ **self.api_connector.send_or_fail(
75
+ "DELETE",
76
+ f"/api/v1/databases/{id_}",
77
+ data=None,
78
+ query_parameters={
79
+ "delete_on_cluster": delete_on_cluster,
80
+ },
81
+ ).json
82
+ )
83
+
84
+ def compare_databases(
85
+ self,
86
+ *,
87
+ left_database_id: int,
88
+ right_database_id: int,
89
+ ) -> models.DatabaseComparison:
90
+ return models.DatabaseComparison.construct(
91
+ **self.api_connector.send_or_fail(
92
+ "GET",
93
+ f"/api/v1/databases/{left_database_id}/comparison",
94
+ data=None,
95
+ query_parameters={
96
+ "right_database_id": right_database_id,
97
+ },
98
+ ).json
99
+ )
100
+
101
+ def sync_databases(
102
+ self,
103
+ *,
104
+ left_database_id: int,
105
+ right_database_id: int,
106
+ callback_url: Optional[str] = None,
107
+ exclude_tables_names: Optional[List[str]] = None,
108
+ ) -> models.TaskCollectionResource:
109
+ return models.TaskCollectionResource.construct(
110
+ **self.api_connector.send_or_fail(
111
+ "POST",
112
+ f"/api/v1/databases/{left_database_id}/sync",
113
+ data=None,
114
+ query_parameters={
115
+ "callback_url": callback_url,
116
+ "right_database_id": right_database_id,
117
+ "exclude_tables_names": exclude_tables_names,
118
+ },
119
+ ).json
120
+ )
121
+
122
+ def list_database_usages(
123
+ self,
124
+ *,
125
+ database_id: int,
126
+ timestamp: str,
127
+ time_unit: Optional[models.DatabaseUsageResource] = None,
128
+ ) -> list[models.DatabaseUsageResource]:
129
+ return [
130
+ models.DatabaseUsageResource.construct(**model)
131
+ for model in self.api_connector.send_or_fail(
132
+ "GET",
133
+ f"/api/v1/databases/usages/{database_id}",
134
+ data=None,
135
+ query_parameters={
136
+ "timestamp": timestamp,
137
+ "time_unit": time_unit,
138
+ },
139
+ ).json
140
+ ]
@@ -0,0 +1,43 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+ from cyberfusion.CoreApiClient.interfaces import Resource
4
+
5
+
6
+ class DomainRouters(Resource):
7
+ def list_domain_routers(
8
+ self,
9
+ *,
10
+ skip: Optional[int] = None,
11
+ limit: Optional[int] = None,
12
+ filter_: Optional[List[str]] = None,
13
+ sort: Optional[List[str]] = None,
14
+ ) -> list[models.DomainRouterResource]:
15
+ return [
16
+ models.DomainRouterResource.construct(**model)
17
+ for model in self.api_connector.send_or_fail(
18
+ "GET",
19
+ "/api/v1/domain-routers",
20
+ data=None,
21
+ query_parameters={
22
+ "skip": skip,
23
+ "limit": limit,
24
+ "filter": filter_,
25
+ "sort": sort,
26
+ },
27
+ ).json
28
+ ]
29
+
30
+ def update_domain_router(
31
+ self,
32
+ request: models.DomainRouterUpdateRequest,
33
+ *,
34
+ id_: int,
35
+ ) -> models.DomainRouterResource:
36
+ return models.DomainRouterResource.construct(
37
+ **self.api_connector.send_or_fail(
38
+ "PATCH",
39
+ f"/api/v1/domain-routers/{id_}",
40
+ data=request.dict(exclude_unset=True),
41
+ query_parameters={},
42
+ ).json
43
+ )
@@ -0,0 +1,82 @@
1
+ from cyberfusion.CoreApiClient import models
2
+ from typing import Optional, List
3
+
4
+ from cyberfusion.CoreApiClient.interfaces import Resource
5
+
6
+
7
+ class FirewallGroups(Resource):
8
+ def create_firewall_group(
9
+ self,
10
+ request: models.FirewallGroupCreateRequest,
11
+ ) -> models.FirewallGroupResource:
12
+ return models.FirewallGroupResource.construct(
13
+ **self.api_connector.send_or_fail(
14
+ "POST",
15
+ "/api/v1/firewall-groups",
16
+ data=request.dict(),
17
+ query_parameters={},
18
+ ).json
19
+ )
20
+
21
+ def list_firewall_groups(
22
+ self,
23
+ *,
24
+ skip: Optional[int] = None,
25
+ limit: Optional[int] = None,
26
+ filter_: Optional[List[str]] = None,
27
+ sort: Optional[List[str]] = None,
28
+ ) -> list[models.FirewallGroupResource]:
29
+ return [
30
+ models.FirewallGroupResource.construct(**model)
31
+ for model in self.api_connector.send_or_fail(
32
+ "GET",
33
+ "/api/v1/firewall-groups",
34
+ data=None,
35
+ query_parameters={
36
+ "skip": skip,
37
+ "limit": limit,
38
+ "filter": filter_,
39
+ "sort": sort,
40
+ },
41
+ ).json
42
+ ]
43
+
44
+ def read_firewall_group(
45
+ self,
46
+ *,
47
+ id_: int,
48
+ ) -> models.FirewallGroupResource:
49
+ return models.FirewallGroupResource.construct(
50
+ **self.api_connector.send_or_fail(
51
+ "GET", f"/api/v1/firewall-groups/{id_}", data=None, query_parameters={}
52
+ ).json
53
+ )
54
+
55
+ def update_firewall_group(
56
+ self,
57
+ request: models.FirewallGroupUpdateRequest,
58
+ *,
59
+ id_: int,
60
+ ) -> models.FirewallGroupResource:
61
+ return models.FirewallGroupResource.construct(
62
+ **self.api_connector.send_or_fail(
63
+ "PATCH",
64
+ f"/api/v1/firewall-groups/{id_}",
65
+ data=request.dict(exclude_unset=True),
66
+ query_parameters={},
67
+ ).json
68
+ )
69
+
70
+ def delete_firewall_group(
71
+ self,
72
+ *,
73
+ id_: int,
74
+ ) -> models.DetailMessage:
75
+ return models.DetailMessage.construct(
76
+ **self.api_connector.send_or_fail(
77
+ "DELETE",
78
+ f"/api/v1/firewall-groups/{id_}",
79
+ data=None,
80
+ query_parameters={},
81
+ ).json
82
+ )