python3-core-api-client 2.6__tar.gz → 2.7__tar.gz

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 (65) hide show
  1. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/PKG-INFO +2 -2
  2. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/README.md +1 -1
  3. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/pyproject.toml +1 -1
  4. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/models.py +64 -63
  5. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/clusters.py +38 -92
  6. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/databases.py +2 -2
  7. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/logs.py +0 -45
  8. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/mail_accounts.py +2 -2
  9. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/nodes.py +19 -0
  10. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/unix_users.py +2 -2
  11. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/virtual_hosts.py +44 -0
  12. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/python3_core_api_client.egg-info/PKG-INFO +2 -2
  13. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/setup.cfg +0 -0
  14. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/__init__.py +0 -0
  15. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/_encoders.py +0 -0
  16. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/_helpers.py +0 -0
  17. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/connector.py +0 -0
  18. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/exceptions.py +0 -0
  19. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/http.py +0 -0
  20. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/interfaces.py +0 -0
  21. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/__init__.py +0 -0
  22. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/basic_authentication_realms.py +0 -0
  23. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/borg_archives.py +0 -0
  24. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/borg_repositories.py +0 -0
  25. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/certificate_managers.py +0 -0
  26. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/certificates.py +0 -0
  27. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/cmses.py +0 -0
  28. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/crons.py +0 -0
  29. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/custom_config_snippets.py +0 -0
  30. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/custom_configs.py +0 -0
  31. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/customers.py +0 -0
  32. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/daemons.py +0 -0
  33. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/database_user_grants.py +0 -0
  34. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/database_users.py +0 -0
  35. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/domain_routers.py +0 -0
  36. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/firewall_groups.py +0 -0
  37. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/firewall_rules.py +0 -0
  38. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/fpm_pools.py +0 -0
  39. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/ftp_users.py +0 -0
  40. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/haproxy_listens.py +0 -0
  41. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/haproxy_listens_to_nodes.py +0 -0
  42. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/health.py +0 -0
  43. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/hosts_entries.py +0 -0
  44. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/htpasswd_files.py +0 -0
  45. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/htpasswd_users.py +0 -0
  46. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/login.py +0 -0
  47. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/mail_aliases.py +0 -0
  48. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/mail_domains.py +0 -0
  49. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/mail_hostnames.py +0 -0
  50. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/malwares.py +0 -0
  51. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/mariadb_encryption_keys.py +0 -0
  52. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/node_add_ons.py +0 -0
  53. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/passenger_apps.py +0 -0
  54. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/redis_instances.py +0 -0
  55. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/regions.py +0 -0
  56. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/root_ssh_keys.py +0 -0
  57. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/security_txt_policies.py +0 -0
  58. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/ssh_keys.py +0 -0
  59. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/task_collections.py +0 -0
  60. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/tombstones.py +0 -0
  61. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/cyberfusion/CoreApiClient/resources/url_redirects.py +0 -0
  62. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/python3_core_api_client.egg-info/SOURCES.txt +0 -0
  63. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/python3_core_api_client.egg-info/dependency_links.txt +0 -0
  64. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/python3_core_api_client.egg-info/requires.txt +0 -0
  65. {python3_core_api_client-2.6 → python3_core_api_client-2.7}/src/python3_core_api_client.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-core-api-client
3
- Version: 2.6
3
+ Version: 2.7
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
@@ -13,7 +13,7 @@ Requires-Dist: pydantic[dotenv,email]==1.10.4
13
13
 
14
14
  Python client for Core API.
15
15
 
16
- This client was built for and tested on the **1.252** version of the API.
16
+ This client was built for and tested on the **1.256** version of the API.
17
17
 
18
18
  ## Support
19
19
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Python client for Core API.
4
4
 
5
- This client was built for and tested on the **1.252** version of the API.
5
+ This client was built for and tested on the **1.256** version of the API.
6
6
 
7
7
  ## Support
8
8
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python3-core-api-client"
7
- version = "2.6"
7
+ version = "2.7"
8
8
  description = "Python client for Core API."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -143,7 +143,6 @@ class BorgArchiveMetadata(CoreApiModel):
143
143
 
144
144
  class BorgRepositoryCreateRequest(CoreApiModel):
145
145
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=64)
146
- passphrase: constr(regex=r"^[ -~]+$", min_length=24, max_length=255)
147
146
  unix_user_id: Optional[int]
148
147
  keep_hourly: Optional[int]
149
148
  keep_daily: Optional[int]
@@ -274,11 +273,11 @@ class CronCreateRequest(CoreApiModel):
274
273
  command: constr(regex=r"^[ -~]+$", min_length=1, max_length=65535)
275
274
  email_address: Optional[EmailStr]
276
275
  schedule: str
277
- error_count: int
278
- random_delay_max_seconds: int
279
- timeout_seconds: Optional[int]
280
- locking_enabled: bool
281
- is_active: bool
276
+ error_count: int = 1
277
+ random_delay_max_seconds: int = 10
278
+ timeout_seconds: Optional[int] = 600
279
+ locking_enabled: bool = True
280
+ is_active: bool = True
282
281
  memory_limit: Optional[conint(ge=256)] = None
283
282
  cpu_limit: Optional[int] = None
284
283
 
@@ -447,12 +446,12 @@ class FPMPoolCreateRequest(CoreApiModel):
447
446
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=64)
448
447
  version: str
449
448
  unix_user_id: int
450
- max_children: int
451
- max_requests: int
452
- process_idle_timeout: int
449
+ max_children: int = 25
450
+ max_requests: int = 20
451
+ process_idle_timeout: int = 10
453
452
  cpu_limit: Optional[int]
454
453
  log_slow_requests_threshold: Optional[int]
455
- is_namespaced: bool
454
+ is_namespaced: bool = True
456
455
  memory_limit: Optional[conint(ge=256)] = None
457
456
 
458
457
 
@@ -470,7 +469,7 @@ class FTPUserCreateRequest(CoreApiModel):
470
469
  username: constr(regex=r"^[a-z0-9-_.@]+$", min_length=1, max_length=32)
471
470
  unix_user_id: int
472
471
  password: constr(regex=r"^[ -~]+$", min_length=24, max_length=255)
473
- directory_path: str
472
+ directory_path: Optional[str] = None
474
473
 
475
474
 
476
475
  class FTPUserUpdateRequest(CoreApiModel):
@@ -540,11 +539,6 @@ class HealthStatusEnum(StrEnum):
540
539
  MAINTENANCE = "maintenance"
541
540
 
542
541
 
543
- class HostEnum(StrEnum):
544
- ALL = "%"
545
- LOCALHOST_IPV6 = "::1"
546
-
547
-
548
542
  class HostsEntryCreateRequest(CoreApiModel):
549
543
  node_id: int
550
544
  host_name: str
@@ -604,7 +598,7 @@ class MailAccountCreateRequest(CoreApiModel):
604
598
  local_part: constr(regex=r"^[a-z0-9-.]+$", min_length=1, max_length=64)
605
599
  mail_domain_id: int
606
600
  password: constr(regex=r"^[ -~]+$", min_length=6, max_length=255)
607
- quota: Optional[int]
601
+ quota: Optional[int] = None
608
602
 
609
603
 
610
604
  class MailAccountUpdateRequest(CoreApiModel):
@@ -636,8 +630,8 @@ class MailAliasUpdateRequest(CoreApiModel):
636
630
  class MailDomainCreateRequest(CoreApiModel):
637
631
  domain: str
638
632
  unix_user_id: int
639
- catch_all_forward_email_addresses: List[EmailStr] = Field(..., unique_items=True)
640
- is_local: bool
633
+ catch_all_forward_email_addresses: List[EmailStr] = Field([], unique_items=True)
634
+ is_local: bool = True
641
635
 
642
636
 
643
637
  class MailDomainUpdateRequest(CoreApiModel):
@@ -890,8 +884,8 @@ class RedisInstanceCreateRequest(CoreApiModel):
890
884
  cluster_id: int
891
885
  password: constr(regex=r"^[a-zA-Z0-9]+$", min_length=24, max_length=255)
892
886
  memory_limit: conint(ge=8)
893
- max_databases: int
894
- eviction_policy: RedisEvictionPolicyEnum
887
+ max_databases: int = 16
888
+ eviction_policy: RedisEvictionPolicyEnum = RedisEvictionPolicyEnum.VOLATILE_LRU
895
889
 
896
890
 
897
891
  class RedisInstanceUpdateRequest(CoreApiModel):
@@ -938,11 +932,11 @@ class SecurityTXTPolicyCreateRequest(CoreApiModel):
938
932
  ...,
939
933
  unique_items=True,
940
934
  )
941
- encryption_key_urls: List[AnyUrl] = Field(..., unique_items=True)
942
- acknowledgment_urls: List[AnyUrl] = Field(..., unique_items=True)
943
- policy_urls: List[AnyUrl] = Field(..., unique_items=True)
944
- opening_urls: List[AnyUrl] = Field(..., unique_items=True)
945
- preferred_languages: List[LanguageCodeEnum] = Field(..., unique_items=True)
935
+ encryption_key_urls: List[AnyUrl] = Field([], unique_items=True)
936
+ acknowledgment_urls: List[AnyUrl] = Field([], unique_items=True)
937
+ policy_urls: List[AnyUrl] = Field([], unique_items=True)
938
+ opening_urls: List[AnyUrl] = Field([], unique_items=True)
939
+ preferred_languages: List[LanguageCodeEnum] = Field([], unique_items=True)
946
940
 
947
941
 
948
942
  class SecurityTXTPolicyUpdateRequest(CoreApiModel):
@@ -1043,14 +1037,14 @@ class UNIXUserCreateRequest(CoreApiModel):
1043
1037
  mail_domains_directory: Optional[str]
1044
1038
  cluster_id: int
1045
1039
  password: Optional[constr(regex=r"^[ -~]+$", min_length=24, max_length=255)]
1046
- shell_name: ShellNameEnum
1047
- record_usage_files: bool
1040
+ shell_name: ShellNameEnum = ShellNameEnum.BASH
1041
+ record_usage_files: bool = False
1048
1042
  default_php_version: Optional[str]
1049
1043
  default_nodejs_version: Optional[constr(regex=r"^[0-9]{1,2}\.[0-9]{1,2}$")]
1050
1044
  description: Optional[
1051
1045
  constr(regex=r"^[a-zA-Z0-9-_ ]+$", min_length=1, max_length=255)
1052
1046
  ]
1053
- shell_is_namespaced: bool
1047
+ shell_is_namespaced: bool = True
1054
1048
 
1055
1049
 
1056
1050
  class UNIXUserHomeDirectoryEnum(StrEnum):
@@ -1109,9 +1103,9 @@ class URLRedirectCreateRequest(CoreApiModel):
1109
1103
  unique_items=True,
1110
1104
  )
1111
1105
  destination_url: AnyUrl
1112
- status_code: StatusCodeEnum
1113
- keep_query_parameters: bool
1114
- keep_path: bool
1106
+ status_code: StatusCodeEnum = StatusCodeEnum.INTEGER_308
1107
+ keep_query_parameters: bool = True
1108
+ keep_path: bool = True
1115
1109
  description: Optional[
1116
1110
  constr(regex=r"^[a-zA-Z0-9-_ ]+$", min_length=1, max_length=255)
1117
1111
  ]
@@ -1172,7 +1166,6 @@ class BorgArchiveContent(CoreApiModel):
1172
1166
 
1173
1167
  class CMSCreateRequest(CoreApiModel):
1174
1168
  software_name: CMSSoftwareNameEnum
1175
- is_manually_created: bool
1176
1169
  virtual_host_id: int
1177
1170
 
1178
1171
 
@@ -1187,9 +1180,11 @@ class CertificateManagerCreateRequest(CoreApiModel):
1187
1180
  min_items=1,
1188
1181
  unique_items=True,
1189
1182
  )
1190
- provider_name: CertificateProviderNameEnum
1183
+ provider_name: CertificateProviderNameEnum = (
1184
+ CertificateProviderNameEnum.LETS_ENCRYPT
1185
+ )
1191
1186
  cluster_id: int
1192
- request_callback_url: Optional[AnyUrl]
1187
+ request_callback_url: Optional[AnyUrl] = None
1193
1188
 
1194
1189
 
1195
1190
  class ClusterCreateRequest(CoreApiModel):
@@ -1272,7 +1267,7 @@ class CustomConfigSnippetCreateFromContentsRequest(CoreApiModel):
1272
1267
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=128)
1273
1268
  server_software_name: VirtualHostServerSoftwareNameEnum
1274
1269
  cluster_id: int
1275
- is_default: bool
1270
+ is_default: bool = False
1276
1271
  contents: constr(regex=r"^[ -~\n]+$", min_length=1, max_length=65535)
1277
1272
 
1278
1273
 
@@ -1280,7 +1275,7 @@ class CustomConfigSnippetCreateFromTemplateRequest(CoreApiModel):
1280
1275
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=128)
1281
1276
  server_software_name: VirtualHostServerSoftwareNameEnum
1282
1277
  cluster_id: int
1283
- is_default: bool
1278
+ is_default: bool = False
1284
1279
  template_name: CustomConfigSnippetTemplateNameEnum
1285
1280
 
1286
1281
 
@@ -1310,8 +1305,8 @@ class DatabaseCreateRequest(CoreApiModel):
1310
1305
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=63)
1311
1306
  server_software_name: DatabaseServerSoftwareNameEnum
1312
1307
  cluster_id: int
1313
- optimizing_enabled: bool
1314
- backups_enabled: bool
1308
+ optimizing_enabled: bool = False
1309
+ backups_enabled: bool = True
1315
1310
 
1316
1311
 
1317
1312
  class DatabaseIncludes(CoreApiModel):
@@ -1334,9 +1329,8 @@ class DatabaseUserCreateRequest(CoreApiModel):
1334
1329
  password: constr(regex=r"^[ -~]+$", min_length=24, max_length=255)
1335
1330
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=63)
1336
1331
  server_software_name: DatabaseServerSoftwareNameEnum
1337
- host: Optional[HostEnum]
1338
1332
  cluster_id: int
1339
- phpmyadmin_firewall_groups_ids: Optional[List[int]]
1333
+ phpmyadmin_firewall_groups_ids: Optional[List[int]] = []
1340
1334
 
1341
1335
 
1342
1336
  class DatabaseUserGrantCreateRequest(CoreApiModel):
@@ -1354,10 +1348,12 @@ class DatabaseUserResource(CoreApiModel):
1354
1348
  id: int
1355
1349
  created_at: datetime
1356
1350
  updated_at: datetime
1357
- hashed_password: Optional[constr(regex=r"^[ -~]+$", min_length=1, max_length=255)]
1351
+ hashed_password: Optional[
1352
+ constr(regex=r"^[a-zA-Z0-9.\/$=*]+$", min_length=1, max_length=255)
1353
+ ]
1358
1354
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=63)
1359
1355
  server_software_name: DatabaseServerSoftwareNameEnum
1360
- host: Optional[HostEnum]
1356
+ host: Optional[str]
1361
1357
  cluster_id: int
1362
1358
  phpmyadmin_firewall_groups_ids: Optional[List[int]]
1363
1359
  includes: DatabaseUserIncludes
@@ -1511,7 +1507,6 @@ class NodeResource(CoreApiModel):
1511
1507
 
1512
1508
 
1513
1509
  class NodeUpdateRequest(CoreApiModel):
1514
- groups: Optional[List[NodeGroupEnum]] = None
1515
1510
  comment: Optional[
1516
1511
  constr(regex=r"^[a-zA-Z0-9-_ ]+$", min_length=1, max_length=255)
1517
1512
  ] = None
@@ -1527,11 +1522,11 @@ class PassengerAppCreateNodeJSRequest(CoreApiModel):
1527
1522
  environment: PassengerEnvironmentEnum
1528
1523
  environment_variables: Dict[
1529
1524
  constr(regex=r"^[A-Za-z_]+$"), constr(regex=r"^[ -~]+$")
1530
- ]
1531
- max_pool_size: int
1532
- max_requests: int
1533
- pool_idle_time: int
1534
- is_namespaced: bool
1525
+ ] = {}
1526
+ max_pool_size: int = 10
1527
+ max_requests: int = 2000
1528
+ pool_idle_time: int = 10
1529
+ is_namespaced: bool = True
1535
1530
  cpu_limit: Optional[int]
1536
1531
  nodejs_version: constr(regex=r"^[0-9]{1,2}\.[0-9]{1,2}$")
1537
1532
  startup_file: str
@@ -1651,7 +1646,9 @@ class UNIXUserResource(CoreApiModel):
1651
1646
  id: int
1652
1647
  created_at: datetime
1653
1648
  updated_at: datetime
1654
- hashed_password: Optional[constr(regex=r"^[ -~]+$", min_length=1, max_length=255)]
1649
+ hashed_password: Optional[
1650
+ constr(regex=r"^[a-zA-Z0-9.\/$=*]+$", min_length=1, max_length=255)
1651
+ ]
1655
1652
  username: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=32)
1656
1653
  unix_id: int
1657
1654
  home_directory: str
@@ -1696,19 +1693,23 @@ class URLRedirectResource(CoreApiModel):
1696
1693
 
1697
1694
  class VirtualHostCreateRequest(CoreApiModel):
1698
1695
  server_software_name: Optional[VirtualHostServerSoftwareNameEnum]
1699
- allow_override_directives: Optional[List[AllowOverrideDirectiveEnum]]
1700
- allow_override_option_directives: Optional[List[AllowOverrideOptionDirectiveEnum]]
1696
+ allow_override_directives: Optional[List[AllowOverrideDirectiveEnum]] = None
1697
+ allow_override_option_directives: Optional[
1698
+ List[AllowOverrideOptionDirectiveEnum]
1699
+ ] = None
1701
1700
  domain: str
1702
1701
  public_root: str
1703
1702
  unix_user_id: int
1704
1703
  server_aliases: List[str] = Field(
1705
- ...,
1704
+ [],
1706
1705
  unique_items=True,
1707
1706
  )
1708
1707
  document_root: str
1709
- fpm_pool_id: Optional[int]
1710
- passenger_app_id: Optional[int]
1711
- custom_config: Optional[constr(regex=r"^[ -~\n]+$", min_length=1, max_length=65535)]
1708
+ fpm_pool_id: Optional[int] = None
1709
+ passenger_app_id: Optional[int] = None
1710
+ custom_config: Optional[
1711
+ constr(regex=r"^[ -~\n]+$", min_length=1, max_length=65535)
1712
+ ] = None
1712
1713
 
1713
1714
 
1714
1715
  class BorgRepositoryIncludes(CoreApiModel):
@@ -1863,7 +1864,7 @@ class FTPUserResource(CoreApiModel):
1863
1864
  id: int
1864
1865
  created_at: datetime
1865
1866
  updated_at: datetime
1866
- hashed_password: constr(regex=r"^[ -~]+$", min_length=1, max_length=255)
1867
+ hashed_password: constr(regex=r"^[a-zA-Z0-9.\/$=*]+$", min_length=1, max_length=255)
1867
1868
  cluster_id: int
1868
1869
  username: constr(regex=r"^[a-z0-9-_.@]+$", min_length=1, max_length=32)
1869
1870
  unix_user_id: int
@@ -1946,7 +1947,7 @@ class HtpasswdUserResource(CoreApiModel):
1946
1947
  id: int
1947
1948
  created_at: datetime
1948
1949
  updated_at: datetime
1949
- hashed_password: constr(regex=r"^[ -~]+$", min_length=1, max_length=255)
1950
+ hashed_password: constr(regex=r"^[a-zA-Z0-9.\/$=*]+$", min_length=1, max_length=255)
1950
1951
  cluster_id: int
1951
1952
  username: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=255)
1952
1953
  htpasswd_file_id: int
@@ -2234,7 +2235,7 @@ class MailAccountResource(CoreApiModel):
2234
2235
  id: int
2235
2236
  created_at: datetime
2236
2237
  updated_at: datetime
2237
- hashed_password: constr(regex=r"^[ -~]+$", min_length=1, max_length=255)
2238
+ hashed_password: constr(regex=r"^[a-zA-Z0-9.\/$=*]+$", min_length=1, max_length=255)
2238
2239
  local_part: constr(regex=r"^[a-z0-9-.]+$", min_length=1, max_length=64)
2239
2240
  mail_domain_id: int
2240
2241
  cluster_id: int
@@ -2329,7 +2330,7 @@ class TombstoneDataDatabaseUser(CoreApiModel):
2329
2330
  id: int
2330
2331
  data_type: Literal["database_user"]
2331
2332
  name: constr(regex=r"^[a-z0-9-_]+$", min_length=1, max_length=63)
2332
- host: Optional[HostEnum]
2333
+ host: Optional[str]
2333
2334
  server_software_name: DatabaseServerSoftwareNameEnum
2334
2335
  includes: TombstoneDataDatabaseUserIncludes
2335
2336
 
@@ -2775,7 +2776,7 @@ class ClusterLoadBalancingPropertiesIncludes(CoreApiModel):
2775
2776
 
2776
2777
 
2777
2778
  class ClusterMariadbPropertiesCreateRequest(CoreApiModel):
2778
- mariadb_version: str
2779
+ mariadb_version: str = "11.4"
2779
2780
  mariadb_backup_interval: conint(ge=1, le=24) = 24
2780
2781
  mariadb_backup_local_retention: conint(ge=1, le=24) = 3
2781
2782
 
@@ -2920,7 +2921,7 @@ class ClusterPhpPropertiesIncludes(CoreApiModel):
2920
2921
 
2921
2922
 
2922
2923
  class ClusterPostgresqlPropertiesCreateRequest(CoreApiModel):
2923
- postgresql_version: int
2924
+ postgresql_version: int = 15
2924
2925
  postgresql_backup_local_retention: conint(ge=1, le=24) = 3
2925
2926
  postgresql_backup_interval: conint(ge=1, le=24) = 24
2926
2927
 
@@ -3097,7 +3098,7 @@ class ClusterPhpPropertiesCreateRequest(CoreApiModel):
3097
3098
  unique_items=True,
3098
3099
  )
3099
3100
  custom_php_modules_names: List[PHPExtensionEnum] = Field(
3100
- ...,
3101
+ [],
3101
3102
  unique_items=True,
3102
3103
  )
3103
3104
  php_settings: PHPSettings
@@ -210,14 +210,14 @@ class Clusters(Resource):
210
210
  def list_unix_users_home_directory_usages(
211
211
  self,
212
212
  *,
213
- cluster_id: int,
213
+ id_: int,
214
214
  timestamp: str,
215
215
  time_unit: Optional[models.UNIXUsersHomeDirectoryUsageResource] = None,
216
216
  includes: list[str] | None = None,
217
217
  ) -> DtoResponse[list[models.UNIXUsersHomeDirectoryUsageResource]]:
218
218
  local_response = self.api_connector.send_or_fail(
219
219
  "GET",
220
- f"/api/v1/clusters/unix-users-home-directories/usages/{cluster_id}",
220
+ f"/api/v1/clusters/{id_}/usages/unix-users-home-directory",
221
221
  data=None,
222
222
  query_parameters={
223
223
  "timestamp": timestamp,
@@ -287,10 +287,7 @@ class Clusters(Resource):
287
287
  )
288
288
 
289
289
  def read_borg_properties(
290
- self,
291
- *,
292
- id_: int,
293
- includes: list[str] | None = None
290
+ self, *, id_: int, includes: list[str] | None = None
294
291
  ) -> DtoResponse[models.ClusterBorgPropertiesResource]:
295
292
  local_response = self.api_connector.send_or_fail(
296
293
  "GET",
@@ -304,10 +301,7 @@ class Clusters(Resource):
304
301
  )
305
302
 
306
303
  def read_elasticsearch_properties(
307
- self,
308
- *,
309
- id_: int,
310
- includes: list[str] | None = None
304
+ self, *, id_: int, includes: list[str] | None = None
311
305
  ) -> DtoResponse[models.ClusterElasticsearchPropertiesResource]:
312
306
  local_response = self.api_connector.send_or_fail(
313
307
  "GET",
@@ -321,10 +315,7 @@ class Clusters(Resource):
321
315
  )
322
316
 
323
317
  def read_firewall_properties(
324
- self,
325
- *,
326
- id_: int,
327
- includes: list[str] | None = None
318
+ self, *, id_: int, includes: list[str] | None = None
328
319
  ) -> DtoResponse[models.ClusterFirewallPropertiesResource]:
329
320
  local_response = self.api_connector.send_or_fail(
330
321
  "GET",
@@ -338,10 +329,7 @@ class Clusters(Resource):
338
329
  )
339
330
 
340
331
  def read_grafana_properties(
341
- self,
342
- *,
343
- id_: int,
344
- includes: list[str] | None = None
332
+ self, *, id_: int, includes: list[str] | None = None
345
333
  ) -> DtoResponse[models.ClusterGrafanaPropertiesResource]:
346
334
  local_response = self.api_connector.send_or_fail(
347
335
  "GET",
@@ -355,10 +343,7 @@ class Clusters(Resource):
355
343
  )
356
344
 
357
345
  def read_kernelcare_properties(
358
- self,
359
- *,
360
- id_: int,
361
- includes: list[str] | None = None
346
+ self, *, id_: int, includes: list[str] | None = None
362
347
  ) -> DtoResponse[models.ClusterKernelcarePropertiesResource]:
363
348
  local_response = self.api_connector.send_or_fail(
364
349
  "GET",
@@ -372,10 +357,7 @@ class Clusters(Resource):
372
357
  )
373
358
 
374
359
  def read_load_balancing_properties(
375
- self,
376
- *,
377
- id_: int,
378
- includes: list[str] | None = None
360
+ self, *, id_: int, includes: list[str] | None = None
379
361
  ) -> DtoResponse[models.ClusterLoadBalancingPropertiesResource]:
380
362
  local_response = self.api_connector.send_or_fail(
381
363
  "GET",
@@ -389,10 +371,7 @@ class Clusters(Resource):
389
371
  )
390
372
 
391
373
  def read_mariadb_properties(
392
- self,
393
- *,
394
- id_: int,
395
- includes: list[str] | None = None
374
+ self, *, id_: int, includes: list[str] | None = None
396
375
  ) -> DtoResponse[models.ClusterMariadbPropertiesResource]:
397
376
  local_response = self.api_connector.send_or_fail(
398
377
  "GET",
@@ -406,10 +385,7 @@ class Clusters(Resource):
406
385
  )
407
386
 
408
387
  def read_meilisearch_properties(
409
- self,
410
- *,
411
- id_: int,
412
- includes: list[str] | None = None
388
+ self, *, id_: int, includes: list[str] | None = None
413
389
  ) -> DtoResponse[models.ClusterMeilisearchPropertiesResource]:
414
390
  local_response = self.api_connector.send_or_fail(
415
391
  "GET",
@@ -423,10 +399,7 @@ class Clusters(Resource):
423
399
  )
424
400
 
425
401
  def read_metabase_properties(
426
- self,
427
- *,
428
- id_: int,
429
- includes: list[str] | None = None
402
+ self, *, id_: int, includes: list[str] | None = None
430
403
  ) -> DtoResponse[models.ClusterMetabasePropertiesResource]:
431
404
  local_response = self.api_connector.send_or_fail(
432
405
  "GET",
@@ -440,10 +413,7 @@ class Clusters(Resource):
440
413
  )
441
414
 
442
415
  def read_new_relic_properties(
443
- self,
444
- *,
445
- id_: int,
446
- includes: list[str] | None = None
416
+ self, *, id_: int, includes: list[str] | None = None
447
417
  ) -> DtoResponse[models.ClusterNewRelicPropertiesResource]:
448
418
  local_response = self.api_connector.send_or_fail(
449
419
  "GET",
@@ -457,10 +427,7 @@ class Clusters(Resource):
457
427
  )
458
428
 
459
429
  def read_nodejs_properties(
460
- self,
461
- *,
462
- id_: int,
463
- includes: list[str] | None = None
430
+ self, *, id_: int, includes: list[str] | None = None
464
431
  ) -> DtoResponse[models.ClusterNodejsPropertiesResource]:
465
432
  local_response = self.api_connector.send_or_fail(
466
433
  "GET",
@@ -474,10 +441,7 @@ class Clusters(Resource):
474
441
  )
475
442
 
476
443
  def read_os_properties(
477
- self,
478
- *,
479
- id_: int,
480
- includes: list[str] | None = None
444
+ self, *, id_: int, includes: list[str] | None = None
481
445
  ) -> DtoResponse[models.ClusterOsPropertiesResource]:
482
446
  local_response = self.api_connector.send_or_fail(
483
447
  "GET",
@@ -491,10 +455,7 @@ class Clusters(Resource):
491
455
  )
492
456
 
493
457
  def read_php_properties(
494
- self,
495
- *,
496
- id_: int,
497
- includes: list[str] | None = None
458
+ self, *, id_: int, includes: list[str] | None = None
498
459
  ) -> DtoResponse[models.ClusterPhpPropertiesResource]:
499
460
  local_response = self.api_connector.send_or_fail(
500
461
  "GET",
@@ -508,10 +469,7 @@ class Clusters(Resource):
508
469
  )
509
470
 
510
471
  def read_postgresql_properties(
511
- self,
512
- *,
513
- id_: int,
514
- includes: list[str] | None = None
472
+ self, *, id_: int, includes: list[str] | None = None
515
473
  ) -> DtoResponse[models.ClusterPostgresqlPropertiesResource]:
516
474
  local_response = self.api_connector.send_or_fail(
517
475
  "GET",
@@ -525,10 +483,7 @@ class Clusters(Resource):
525
483
  )
526
484
 
527
485
  def read_rabbitmq_properties(
528
- self,
529
- *,
530
- id_: int,
531
- includes: list[str] | None = None
486
+ self, *, id_: int, includes: list[str] | None = None
532
487
  ) -> DtoResponse[models.ClusterRabbitmqPropertiesResource]:
533
488
  local_response = self.api_connector.send_or_fail(
534
489
  "GET",
@@ -542,10 +497,7 @@ class Clusters(Resource):
542
497
  )
543
498
 
544
499
  def read_redis_properties(
545
- self,
546
- *,
547
- id_: int,
548
- includes: list[str] | None = None
500
+ self, *, id_: int, includes: list[str] | None = None
549
501
  ) -> DtoResponse[models.ClusterRedisPropertiesResource]:
550
502
  local_response = self.api_connector.send_or_fail(
551
503
  "GET",
@@ -559,10 +511,7 @@ class Clusters(Resource):
559
511
  )
560
512
 
561
513
  def read_singlestore_properties(
562
- self,
563
- *,
564
- id_: int,
565
- includes: list[str] | None = None
514
+ self, *, id_: int, includes: list[str] | None = None
566
515
  ) -> DtoResponse[models.ClusterSinglestorePropertiesResource]:
567
516
  local_response = self.api_connector.send_or_fail(
568
517
  "GET",
@@ -576,10 +525,7 @@ class Clusters(Resource):
576
525
  )
577
526
 
578
527
  def read_unix_users_properties(
579
- self,
580
- *,
581
- id_: int,
582
- includes: list[str] | None = None
528
+ self, *, id_: int, includes: list[str] | None = None
583
529
  ) -> DtoResponse[models.ClusterUnixUsersPropertiesResource]:
584
530
  local_response = self.api_connector.send_or_fail(
585
531
  "GET",
@@ -870,7 +816,7 @@ class Clusters(Resource):
870
816
  page: int = 1,
871
817
  per_page: int = 0,
872
818
  include_filters: models.ClustersBorgPropertiesSearchRequest | None = None,
873
- includes: list[str] | None = None
819
+ includes: list[str] | None = None,
874
820
  ) -> DtoResponse[list[models.ClusterBorgPropertiesResource]]:
875
821
  local_response = self.api_connector.send_or_fail(
876
822
  "GET",
@@ -894,7 +840,7 @@ class Clusters(Resource):
894
840
  page: int = 1,
895
841
  per_page: int = 0,
896
842
  include_filters: models.ClustersRedisPropertiesSearchRequest | None = None,
897
- includes: list[str] | None = None
843
+ includes: list[str] | None = None,
898
844
  ) -> DtoResponse[list[models.ClusterRedisPropertiesResource]]:
899
845
  local_response = self.api_connector.send_or_fail(
900
846
  "GET",
@@ -919,7 +865,7 @@ class Clusters(Resource):
919
865
  per_page: int = 0,
920
866
  include_filters: models.ClustersElasticsearchPropertiesSearchRequest
921
867
  | None = None,
922
- includes: list[str] | None = None
868
+ includes: list[str] | None = None,
923
869
  ) -> DtoResponse[list[models.ClusterElasticsearchPropertiesResource]]:
924
870
  local_response = self.api_connector.send_or_fail(
925
871
  "GET",
@@ -943,7 +889,7 @@ class Clusters(Resource):
943
889
  page: int = 1,
944
890
  per_page: int = 0,
945
891
  include_filters: models.ClustersFirewallPropertiesSearchRequest | None = None,
946
- includes: list[str] | None = None
892
+ includes: list[str] | None = None,
947
893
  ) -> DtoResponse[list[models.ClusterFirewallPropertiesResource]]:
948
894
  local_response = self.api_connector.send_or_fail(
949
895
  "GET",
@@ -967,7 +913,7 @@ class Clusters(Resource):
967
913
  page: int = 1,
968
914
  per_page: int = 0,
969
915
  include_filters: models.ClustersGrafanaPropertiesSearchRequest | None = None,
970
- includes: list[str] | None = None
916
+ includes: list[str] | None = None,
971
917
  ) -> DtoResponse[list[models.ClusterGrafanaPropertiesResource]]:
972
918
  local_response = self.api_connector.send_or_fail(
973
919
  "GET",
@@ -991,7 +937,7 @@ class Clusters(Resource):
991
937
  page: int = 1,
992
938
  per_page: int = 0,
993
939
  include_filters: models.ClustersKernelcarePropertiesSearchRequest | None = None,
994
- includes: list[str] | None = None
940
+ includes: list[str] | None = None,
995
941
  ) -> DtoResponse[list[models.ClusterKernelcarePropertiesResource]]:
996
942
  local_response = self.api_connector.send_or_fail(
997
943
  "GET",
@@ -1016,7 +962,7 @@ class Clusters(Resource):
1016
962
  per_page: int = 0,
1017
963
  include_filters: models.ClustersLoadBalancingPropertiesSearchRequest
1018
964
  | None = None,
1019
- includes: list[str] | None = None
965
+ includes: list[str] | None = None,
1020
966
  ) -> DtoResponse[list[models.ClusterLoadBalancingPropertiesResource]]:
1021
967
  local_response = self.api_connector.send_or_fail(
1022
968
  "GET",
@@ -1040,7 +986,7 @@ class Clusters(Resource):
1040
986
  page: int = 1,
1041
987
  per_page: int = 0,
1042
988
  include_filters: models.ClustersMariadbPropertiesSearchRequest | None = None,
1043
- includes: list[str] | None = None
989
+ includes: list[str] | None = None,
1044
990
  ) -> DtoResponse[list[models.ClusterMariadbPropertiesResource]]:
1045
991
  local_response = self.api_connector.send_or_fail(
1046
992
  "GET",
@@ -1065,7 +1011,7 @@ class Clusters(Resource):
1065
1011
  per_page: int = 0,
1066
1012
  include_filters: models.ClustersMeilisearchPropertiesSearchRequest
1067
1013
  | None = None,
1068
- includes: list[str] | None = None
1014
+ includes: list[str] | None = None,
1069
1015
  ) -> DtoResponse[list[models.ClusterMeilisearchPropertiesResource]]:
1070
1016
  local_response = self.api_connector.send_or_fail(
1071
1017
  "GET",
@@ -1089,7 +1035,7 @@ class Clusters(Resource):
1089
1035
  page: int = 1,
1090
1036
  per_page: int = 0,
1091
1037
  include_filters: models.ClustersMetabasePropertiesSearchRequest | None = None,
1092
- includes: list[str] | None = None
1038
+ includes: list[str] | None = None,
1093
1039
  ) -> DtoResponse[list[models.ClusterMetabasePropertiesResource]]:
1094
1040
  local_response = self.api_connector.send_or_fail(
1095
1041
  "GET",
@@ -1113,7 +1059,7 @@ class Clusters(Resource):
1113
1059
  page: int = 1,
1114
1060
  per_page: int = 0,
1115
1061
  include_filters: models.ClustersNewRelicPropertiesSearchRequest | None = None,
1116
- includes: list[str] | None = None
1062
+ includes: list[str] | None = None,
1117
1063
  ) -> DtoResponse[list[models.ClusterNewRelicPropertiesResource]]:
1118
1064
  local_response = self.api_connector.send_or_fail(
1119
1065
  "GET",
@@ -1137,7 +1083,7 @@ class Clusters(Resource):
1137
1083
  page: int = 1,
1138
1084
  per_page: int = 0,
1139
1085
  include_filters: models.ClustersNodejsPropertiesSearchRequest | None = None,
1140
- includes: list[str] | None = None
1086
+ includes: list[str] | None = None,
1141
1087
  ) -> DtoResponse[list[models.ClusterNodejsPropertiesResource]]:
1142
1088
  local_response = self.api_connector.send_or_fail(
1143
1089
  "GET",
@@ -1161,7 +1107,7 @@ class Clusters(Resource):
1161
1107
  page: int = 1,
1162
1108
  per_page: int = 0,
1163
1109
  include_filters: models.ClustersOsPropertiesSearchRequest | None = None,
1164
- includes: list[str] | None = None
1110
+ includes: list[str] | None = None,
1165
1111
  ) -> DtoResponse[list[models.ClusterOsPropertiesResource]]:
1166
1112
  local_response = self.api_connector.send_or_fail(
1167
1113
  "GET",
@@ -1185,7 +1131,7 @@ class Clusters(Resource):
1185
1131
  page: int = 1,
1186
1132
  per_page: int = 0,
1187
1133
  include_filters: models.ClustersPhpPropertiesSearchRequest | None = None,
1188
- includes: list[str] | None = None
1134
+ includes: list[str] | None = None,
1189
1135
  ) -> DtoResponse[list[models.ClusterPhpPropertiesResource]]:
1190
1136
  local_response = self.api_connector.send_or_fail(
1191
1137
  "GET",
@@ -1209,7 +1155,7 @@ class Clusters(Resource):
1209
1155
  page: int = 1,
1210
1156
  per_page: int = 0,
1211
1157
  include_filters: models.ClustersPostgresqlPropertiesSearchRequest | None = None,
1212
- includes: list[str] | None = None
1158
+ includes: list[str] | None = None,
1213
1159
  ) -> DtoResponse[list[models.ClusterPostgresqlPropertiesResource]]:
1214
1160
  local_response = self.api_connector.send_or_fail(
1215
1161
  "GET",
@@ -1233,7 +1179,7 @@ class Clusters(Resource):
1233
1179
  page: int = 1,
1234
1180
  per_page: int = 0,
1235
1181
  include_filters: models.ClustersRabbitmqPropertiesSearchRequest | None = None,
1236
- includes: list[str] | None = None
1182
+ includes: list[str] | None = None,
1237
1183
  ) -> DtoResponse[list[models.ClusterRabbitmqPropertiesResource]]:
1238
1184
  local_response = self.api_connector.send_or_fail(
1239
1185
  "GET",
@@ -1258,7 +1204,7 @@ class Clusters(Resource):
1258
1204
  per_page: int = 0,
1259
1205
  include_filters: models.ClustersSinglestorePropertiesSearchRequest
1260
1206
  | None = None,
1261
- includes: list[str] | None = None
1207
+ includes: list[str] | None = None,
1262
1208
  ) -> DtoResponse[list[models.ClusterSinglestorePropertiesResource]]:
1263
1209
  local_response = self.api_connector.send_or_fail(
1264
1210
  "GET",
@@ -1282,7 +1228,7 @@ class Clusters(Resource):
1282
1228
  page: int = 1,
1283
1229
  per_page: int = 0,
1284
1230
  include_filters: models.ClustersUnixUsersPropertiesSearchRequest | None = None,
1285
- includes: list[str] | None = None
1231
+ includes: list[str] | None = None,
1286
1232
  ) -> DtoResponse[list[models.ClusterUnixUsersPropertiesResource]]:
1287
1233
  local_response = self.api_connector.send_or_fail(
1288
1234
  "GET",
@@ -130,14 +130,14 @@ class Databases(Resource):
130
130
  def list_database_usages(
131
131
  self,
132
132
  *,
133
- database_id: int,
133
+ id_: int,
134
134
  timestamp: str,
135
135
  time_unit: Optional[models.DatabaseUsageResource] = None,
136
136
  includes: list[str] | None = None,
137
137
  ) -> DtoResponse[list[models.DatabaseUsageResource]]:
138
138
  local_response = self.api_connector.send_or_fail(
139
139
  "GET",
140
- f"/api/v1/databases/usages/{database_id}",
140
+ f"/api/v1/databases/{id_}/usages",
141
141
  data=None,
142
142
  query_parameters={
143
143
  "timestamp": timestamp,
@@ -1,5 +1,4 @@
1
1
  from cyberfusion.CoreApiClient import models
2
- from typing import Optional
3
2
 
4
3
  from cyberfusion.CoreApiClient._helpers import construct_includes_query_parameter
5
4
  from cyberfusion.CoreApiClient.http import DtoResponse
@@ -7,50 +6,6 @@ from cyberfusion.CoreApiClient.interfaces import Resource
7
6
 
8
7
 
9
8
  class Logs(Resource):
10
- def list_access_logs(
11
- self,
12
- *,
13
- virtual_host_id: int,
14
- timestamp: Optional[str] = None,
15
- sort: Optional[str] = None,
16
- page: int = 1,
17
- ) -> DtoResponse[list[models.WebServerLogAccessResource]]:
18
- local_response = self.api_connector.send_or_fail(
19
- "GET",
20
- f"/api/v1/logs/access/{virtual_host_id}",
21
- data=None,
22
- query_parameters={
23
- "timestamp": timestamp,
24
- "page": page,
25
- },
26
- )
27
-
28
- return DtoResponse.from_response(
29
- local_response, models.WebServerLogAccessResource
30
- )
31
-
32
- def list_error_logs(
33
- self,
34
- *,
35
- virtual_host_id: int,
36
- timestamp: Optional[str] = None,
37
- sort: Optional[str] = None,
38
- page: int = 1,
39
- ) -> DtoResponse[list[models.WebServerLogErrorResource]]:
40
- local_response = self.api_connector.send_or_fail(
41
- "GET",
42
- f"/api/v1/logs/error/{virtual_host_id}",
43
- data=None,
44
- query_parameters={
45
- "timestamp": timestamp,
46
- "page": page,
47
- },
48
- )
49
-
50
- return DtoResponse.from_response(
51
- local_response, models.WebServerLogErrorResource
52
- )
53
-
54
9
  def list_object_logs(
55
10
  self,
56
11
  *,
@@ -92,14 +92,14 @@ class MailAccounts(Resource):
92
92
  def list_mail_account_usages(
93
93
  self,
94
94
  *,
95
- mail_account_id: int,
95
+ id_: int,
96
96
  timestamp: str,
97
97
  time_unit: Optional[models.MailAccountUsageResource] = None,
98
98
  includes: list[str] | None = None,
99
99
  ) -> DtoResponse[list[models.MailAccountUsageResource]]:
100
100
  local_response = self.api_connector.send_or_fail(
101
101
  "GET",
102
- f"/api/v1/mail-accounts/usages/{mail_account_id}",
102
+ f"/api/v1/mail-accounts/{id_}/usages",
103
103
  data=None,
104
104
  query_parameters={
105
105
  "timestamp": timestamp,
@@ -4,6 +4,7 @@ from typing import Optional
4
4
  from cyberfusion.CoreApiClient.interfaces import Resource
5
5
  from cyberfusion.CoreApiClient._helpers import construct_includes_query_parameter
6
6
  from cyberfusion.CoreApiClient.http import DtoResponse
7
+ from cyberfusion.CoreApiClient.models import NodeGroupEnum
7
8
 
8
9
 
9
10
  class Nodes(Resource):
@@ -119,3 +120,21 @@ class Nodes(Resource):
119
120
  )
120
121
 
121
122
  return DtoResponse.from_response(local_response, models.TaskCollectionResource)
123
+
124
+ def add_node_groups(
125
+ self,
126
+ *,
127
+ id_: int,
128
+ groups: list[NodeGroupEnum],
129
+ callback_url: Optional[str] = None,
130
+ ) -> DtoResponse[models.TaskCollectionResource]:
131
+ local_response = self.api_connector.send_or_fail(
132
+ "POST",
133
+ f"/api/v1/nodes/{id_}/groups",
134
+ data=groups,
135
+ query_parameters={
136
+ "callback_url": callback_url,
137
+ },
138
+ )
139
+
140
+ return DtoResponse.from_response(local_response, models.TaskCollectionResource)
@@ -109,14 +109,14 @@ class UNIXUsers(Resource):
109
109
  def list_unix_user_usages(
110
110
  self,
111
111
  *,
112
- unix_user_id: int,
112
+ id_: int,
113
113
  timestamp: str,
114
114
  time_unit: Optional[models.UNIXUserUsageResource] = None,
115
115
  includes: list[str] | None = None,
116
116
  ) -> DtoResponse[list[models.UNIXUserUsageResource]]:
117
117
  local_response = self.api_connector.send_or_fail(
118
118
  "GET",
119
- f"/api/v1/unix-users/usages/{unix_user_id}",
119
+ f"/api/v1/unix-users/{id_}/usages",
120
120
  data=None,
121
121
  query_parameters={
122
122
  "timestamp": timestamp,
@@ -123,3 +123,47 @@ class VirtualHosts(Resource):
123
123
  )
124
124
 
125
125
  return DtoResponse.from_response(local_response, models.TaskCollectionResource)
126
+
127
+ def list_access_logs(
128
+ self,
129
+ *,
130
+ id_: int,
131
+ timestamp: Optional[str] = None,
132
+ sort: Optional[str] = None,
133
+ page: int = 1,
134
+ ) -> DtoResponse[list[models.WebServerLogAccessResource]]:
135
+ local_response = self.api_connector.send_or_fail(
136
+ "GET",
137
+ f"/api/v1/virtual-hosts/{id_}/logs/access",
138
+ data=None,
139
+ query_parameters={
140
+ "timestamp": timestamp,
141
+ "page": page,
142
+ },
143
+ )
144
+
145
+ return DtoResponse.from_response(
146
+ local_response, models.WebServerLogAccessResource
147
+ )
148
+
149
+ def list_error_logs(
150
+ self,
151
+ *,
152
+ id_: int,
153
+ timestamp: Optional[str] = None,
154
+ sort: Optional[str] = None,
155
+ page: int = 1,
156
+ ) -> DtoResponse[list[models.WebServerLogErrorResource]]:
157
+ local_response = self.api_connector.send_or_fail(
158
+ "GET",
159
+ f"/api/v1/virtual-hosts/{id_}/logs/error",
160
+ data=None,
161
+ query_parameters={
162
+ "timestamp": timestamp,
163
+ "page": page,
164
+ },
165
+ )
166
+
167
+ return DtoResponse.from_response(
168
+ local_response, models.WebServerLogErrorResource
169
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-core-api-client
3
- Version: 2.6
3
+ Version: 2.7
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
@@ -13,7 +13,7 @@ Requires-Dist: pydantic[dotenv,email]==1.10.4
13
13
 
14
14
  Python client for Core API.
15
15
 
16
- This client was built for and tested on the **1.252** version of the API.
16
+ This client was built for and tested on the **1.256** version of the API.
17
17
 
18
18
  ## Support
19
19