All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog. Please note this changelog affects this package and not the Core API. See the changelog of the Core API for detailed information.
- Add NextCloud endpoints.
- Add
index
property toCmsConfigurationContstant
and add it to the request body. - Add plugin methods to CMSes endpoint.
- Add
reference
property to theTaskCollection
model. - Add
deploymentResults
method to theCluster
endpoint. - Add
ClamAV
as node group. - Add
AWS
as option for theexternal_provider_name
property of theFirewallRule
model. - Add
name
property to theBorgArchiveMetadata
model. - Add
load_balancing_method
property to theCluster
model. - Add
load_balancing_method
property to theHAProxyListen
model. - Add compatibility for this client for PHP 8.4.
- Update to API version 1.238.0.
- Fix task collection return when just the
task_collection_uuid
is returned.
- Removed the
show_raw_message
parameter from the LogFilter as the raw message is now always returned. - Removed the
restore
method of theCertificateManagers
endpoint as Certificate Manager are no longer soft-deleted.
- Fix cluster
create()
andupdate()
not working due to incorrect and missing parameters
nodes_ids
to HAProxy listens
- Fix the initialization of the Daemon model.
- CPU limits and memory limits to daemons.
- Memory limits to FPM pools.
Note: new updatePartial
methods were added to update these attributes, as they can only be updated using the new PATCH endpoints
in the Core API (not the now deprecated PUT endpoints, which the existing update
methods used).
- Drop Carbon as dependency as it is already present in illuminate/support, and it prevents issues when your project already uses Carbon v3.
- Custom config update.
- Bump minimum PHP version to 8.1.
- Update default production URL from
cluster-api.cyberfusion.nl
tocore-api.cyberfusion.io
.
- Fix DatabaseUser::$phpmyadminFirewallGroupsIds must not be accessed before initialization
- Add
gmp
,vips
,excimer
,mailparse
,uv
andtideways
toCustomPhpModuleName
enum. - Add Nextcloud CMS installation endpoint.
- Updated WordPress CMS installation endpoint.
- Added support for Daemons
- Updated the minimum password length validation for the
HtpasswdUser
model.
- Change the
directory_path
to be nullable for theBasicAuthenticationRealm
model.
- Add support for Laravel 11.
- Redis memory limit validation.
- Cluster malware toolkit attributes.
- Firewall rules update endpoint.
- In clusters, add
nullable()
tomeilisearchEnvironment
validator. This one was missed in 1.108.1.
- In clusters, add
nullable()
to validators where missing.
- Add
NodeAddons
endpoints. - Add
Customers
endpoints. - Add IP-address endpoints to Customers.
- Add IP-address endpoints to Clusters.
- Add
FirewallRules
endpoints. - Add 'firewall_rules_external_providers_enabled' property to clusters.
- Add 'Docker' node group option.
- Add
Products
endpoint to Nodes. - Add
callback_url
to thecreate
method of theNodes
endpoint. - Add
xgrade
method to theNodes
endpoint. - Add
Sites
endpoints. - Add
site_id
property to theCluster
model. - Add
MariaDbEncryptionKeys
endpoints. - Add
category
andfirewall_groups_ids
properties to domain router. - Add Grafana, SingleStore, Metabase, Elasticsearch and RabbitMQ as Node groups.
- Add
grafana_domain
,singlestore_studio_domain
,singlestore_api_domain
,singlestore_license_key
,singlestore_root_password
,metabase_domain
,metabase_database_password
,kibana_domain
,rabbitmq_management_domain
,rabbitmq_admin_password
andrabbitmq_erlang_cookie
properties to theCluster
model. - Add
CustomConfigs
endpoints.
- Change the minimum values of backup interval properties of the cluster.
- Update to API version 1.227.0.
- Renamed
istMalwareToolkitEnabled
toisMalwareToolkitEnabled
at theCluster
model. - Make sure all properties in the
Cluster
model are set infromArray
.
- Add
HostsEntries
endpoints.
- Add option to the
Client
to provide your own Guzzle HTTP client. Which is, for example, useful for adding your own Guzzle middleware.
- Add
ipAddresses
endpoint for customers. - Add
ipAddresses
endpoint for clusters. - Add
automatic_upgrades_enabled
property to the Cluster model. - Add
retry
endpoint for task collections. - Add option to list filter to include soft deleted items (currently only used for CertificateManagers).
- Update to API version 1.214.0.
- TaskCollection: use int|null as proper type for the object ID instead of string.
- UnixUser: the validation of the files when retrieving the usages was incorrect.
- Update to Core API version 1.208.
- Clusters: create and update, due to typo in required 'unix_users_home_directory'.
- Redis Instances: create.
- Certificates: create.
- Cast empty array to object for fields that require an object.
- SshKeys: create private.
- CustomConfigSnippets: create and update.
- UnixUsers: password type annotation.
- CustomConfigSnippets: name regex has been updated.
- DomainRouters: add
security_txt_policy_id
to model and endpoint.
- CustomConfigSnippets: create endpoints have been split.
- Clusters:
customer_id
is no longer validated.
- RootSshKeys: Add
cluster_id
when creating a public or private SSH key.
- Node: Add
hostname
field back to the update endpoint.
- Add missing endpoints to Core API entry point.
- Clusters: Add
name
field back to the update endpoint.
- CertificateManagers: Add restore endpoint.
- Clusters: Add common properties endpoint.
- Clusters: Add create endpoint.
- Clusters: Add update endpoint.
- Clusters: Add destroy endpoint.
- Crons: Add
timeout_seconds
. - Databases: Add update endpoint.
- HAProxy Listens: Add completely new endpoints.
- HAProxy Listens To Nodes: Add completely new endpoints.
- Nodes: Add create endpoint.
- Nodes: Add update endpoint.
- Nodes: Add destroy endpoint.
- Nodes: Add
maldet
node group. - SecurityTxtPolicies: Add completely new endpoints.
- Clusters: Change
customer_id
validation. - Update to API version 1.198.2.
- Clusters: Remove
name
fields. - Nodes: Remove
hostname
field. - Nodes: Remove
Main
node group.
- Fix the database create endpoint by providing the correct properties.
- Use proper name for
groups_properties
in theNode
model. - Improve handling connection issues, for example when an invalid API url is provided, which resulted in an error in the
isUp
check.
- Add
kernelcare_license_key
,redis_password
,redis_memory_limit
,nodejs_version
,mariadb_version
,mariadb_cluster_name
,mariadb_backup_interval
,postgresql_version
andpostgresql_backup_interval
attributes to theCluster
model. - Add
optimizing_enabled
andbackups_enabled
attribute to theDatabase
model. - Add
group_poperties
to theNode
model. - Add
Tombstone
endpoint. - Add
ApiUsers
endpoint, which is just a basic endpoint that returns the raw data. - Add the
children
call to theClusters
endpoint, which is just a basic endpoint that returns the raw data.
- Update to API version 1.187.1.
- Add missing
load_balancer_health_checks_groups_pairs
property to theNode
model.
- Add Firewall Groups endpoint.
- Add the new Node groups.
- Add
php_sessions_spread_enabled
,automatic_borg_repositories_prune_enabled
andphp_settings
properties to theCluster
model. - Add
CustomPhpModuleName
enum, to easily see which extensions are available. - Add
is_default
property to theCustomConfigSnippet
model.
- Allow underscores in the name of a custom config snippet instead of a dash.
- Allow
null
as password for UNIX users to limit to SSH key login only. - Update to API version 1.185.3.
- FTP users endpoint.
- Custom config snippets endpoint.
- Update mailaccount validation.
- Update to API version 1.183.
- Support for sandbox environment.
OPTIONS
to allowed log methods.
- Increase SSH key name max length.
- Unit name from Redis instances, FPM pools, and Passenger apps.
- Async support endpoints and attributes. Async support is now enabled by default.
- Do not return task collection on virtual host delete. Virtual hosts are now deleted immediately.
eviction_policy
attribute for Redis instances.
nologin
shell.
- Add Laravel 10 support.
- Add the missing mail hostnames endpoint.
- Updated the code with Rector to PHP >= 8.0.
- Bump minimum PHP version to 8.0.
- CMS endpoints that do not manipulate the CMS object no longer return the CMS object.
- Cluster deployments: endpoint, client configuration for deploy/commit/auto-deploy, affected clusters
- RabbitMQ attributes from UNIX user.
- The
files
attribute of theUnixUserUsage
model is now nullable.
- Properly apply nullable validation in
BorgRepository
,DatabaseUser
andPassengerApp
models.
- Do not filter fields for the login endpoints.
- Also allow nullable values when filtering fields.
- Do not require
rabbitmq
for unix users as those are nullable.
- CMS theme install endpoint.
- CMS user credentials update endpoint.
- Allow the public key to be null in
getPublicKey
method.
- Removed
databases_data_directory
from clusters.
- Return task collection on virtual host delete.
- Add
certificate_id
to Domain Routers. - Add
MailHostnames
endpoints.
- Change
raw_message
to be nullable on theAccessLog
andErrorLog
models, as those are turned off by default and will returnnull
in that case.
- Certificate managers:
lastRequestTaskCollectionUuid
attribute.
- Improve the usage of the list filter.
- There should be just one breaking change, the
SORT_*
constants of theListFilter
are moved to a separate Enum, seeEnums\Sort
.
- Fix UUID casing for task collections
results
endpoint. - Make task result
message
nullable.
- Add default value for logs
timestamp
. - Make logs
timestamp
nullable.
- Rename the property
provider_names
toprovider_name
in theCertificateManager
model.
- Certificate managers.
- Certificates:
expiresAt
attribute. UserInfo
model:id
attribute.
- Update to API version 1.155.
- Certificates: make certificate + CA chain + private key required and non-nullable.
- Certificates: remove
isLetsEncrypt
. - Certificates: remove
statusMessage
. - Logs: remove
rawMessage
regex validation. - Logs: remove
errorMessage
regex validation.
- Remove
mixed
type as that requires PHP 8+.
- Certificates:
createLetsEncryptCertificate
endpoint. This has been replaced by certificate managers. - Certificates:
createCertificateWithOwnMaterial
endpoint. This has been replaced by thecreate
endpoint. - Remove unused import.
- Change
unit_name
to be nullable. - Fix the getters/setters of
port
to accept null value.
- Add missing endpoint for destroying a RedisInstance.
- No longer require
max_databases
andmemory_limit
when creating or updating a RedisInstance. - Make RedisInstance port nullable as it's only available after creation.
- Add default values for
max_databases
andmemory_limit
.
- RabbitMQ encryption key attribute to UNIX users.
- Borg archive content symbolic mode regex has been updated.
- UNIX user RabbitMQ username + RabbitMQ password + RabbitMQ virtual host name is now required on update.
- UNIX user RabbitMQ username + RabbitMQ virtual host name regex has been updated.
- Domain routers.
- Balancer backend name and force SSL from URL redirects and virtual hosts. These have been replaced by domain routers.
- Add
unit_name
as required field to the FPM pool update endpoint to match spec. - Add
record_usage_files
to the unix user create endpoint to match spec. - Add
home_directory
andssh_directory
to the fields and required fields for the unix user update endpoint to match spec. - Remove
domain_root
from the virtual host create endpoint to match spec.
- UNIX users home directory usages.
- Use UUID instead of ID for task collection results endpoint.
allowOverrideOptionDirectives
andallowOverrideDirectives
are now nullable.- Default values for
allowOverrideOptionDirectives
andallowOverrideDirectives
are now set based on server software.
serverSoftwareName
attribute is now sent on create and update of virtual hosts.
serverSoftwareName
attribute has been added to virtual hosts.- Values
TEMPORARY_REDIRECT
andPERMANENT_REDIRECT
have been added toStatusCode
Enum.
objectId
andobjectModelName
attributes of task collections are now non-nullable.- Database user password is no longer pre-hashed.
- Regex and length validations have been updated and added.
tokenType
attribute of login model now usesTokenType
Enum.
- Added missing
password
attribute to Redis instances.
- Unix user might not have a default nodejs version but validation was not allowing
null
.
- Apply path validation on several setters.
- Add ability to validate multiple values, just call
->each()
after initializing the validator with a value. - Pattern validation to NodeJS versions.
- Remove
positiveInteger
validation.
- Add the
expiresIn
attribute to tokens. - Add the
description
attribute to clusters.
- Update to API version 1.143.
- Add max length to
CmsInstallation
(database_user_password
+admin_password
) andCmsConfigurationConstant
(value
) - Remove min length validation from strings.
- Renamed package and namespace.
- Add the required
domainRoot
attribute to virtual host update payload.
- Add the
primaryNodeId
attribute to Redis instances.
- Add Redis instances endpoints.
- Add the required
domainRoot
attribute to virtual host update payload. - Remove the
deployCommands
attribute from virtual host, which was removed from the API earlier.
- Add CMS regenerate salts endpoint.
- Add CMS search & replace endpoint.
- Add htpasswd files endpoint.
- Add htpasswd users endpoint.
- Add basic authentication realms endpoints.
- Add CMS update option endpoint.
- Add CMS update configuration constant endpoint.
- Add virtual host sync domain root endpoint.
- Add Borg repository archives metadata endpoint.
- Borg archive metadata now has its own model,
BorgArchiveMetadata
.
- Add database sync endpoint.
- Update Passenger app restart + FPM pool restart endpoints: add callback URL + return task collection model
- Add the
objectId
attribute to task collection. - Add the
objectModelName
attribute to task collection.
- Add the
syncToolkitEnabled
attribute to cluster. - Add UNIX user comparison endpoint.
- Add the
domainRoot
attribute to virtual host.
- Add database comparison endpoint.
- Update docblocks.
- Remove unused imports.
- Remove
sprintf
calls without parameters.
- Use
DatabaseUserGrantPrivilegeName
enum for database user grant privilege names. - Make new
SELECT
database user grant privilege name available. - Update to API version 1.127.
- Update database and database user name regex.
- Update to API version 1.126.1.
- Add support for Borg SSH key for clusters.
- Update to API version 1.125.
- Change validation of
startup_file
ofPassengerApp
to end with.js
. - Update to API version 1.124.1.
- Add the
defaultNodejsVersion
attribute to UNIX user. - Add the
cpuLimit
,appRoot
andisNamespaced
attributes to Passenger app.
- Add
RootSshKeys
endpoint.
- Add
path
to Borg archive contents, restore and download requests.
- Add Borg archive download endpoint.
- Fix capitalisation of Enum values of
PassengerAppTypeEnum
andPassengerEnvironmentEnum
. - Update to API version 1.119.
- After talking to @WilliamDEdwards the task collection works a bit different then I thought. In short: a task collection contains at least 2 task and always returns the results of all those tasks. Updated the endpoint to reflect that setup. The official documentation will be improved to provide more information about task collections and the results.
- Laravel 9 support failed due to using an old version of ramsey/uuid package to still support PHP 7.4. I intend to support PHP 7.4 until its EOL date (28 Nov 2022) when possible.
- Properly implement the task collection results.
- Update to API version 1.118.3.
- Changed the
nodeId
property of theCron
model to optional.
- Add callback url for deployments.
- Add callback url for the automatic deployments.
- Update to API version 1.117.
- A commit will now return a task collection.
- Return type of
getRecordUsageFiles
has been updated from string to bool.
- Add the optional
recordUsageFiles
attribute to UNIX users.
- Update to API version 1.116.
- Add missing attribute to create and update payload for FPM pools:
is_namespaced
- Add missing attributes to create and update payloads for UNIX users:
shell_path
,borg_repositories_directory
,description
- Add missing attributes to create and update payloads for URL redirects:
description
- Add the optional
timeUnit
to database, mail account, borg repository and unix user usage.
- Update to API version 1.115.
- Renamed
from_timestamp_date
parameter totimestamp
. This does not affect the usage of the package.
- Add
TaskCollection
endpoint. - Add
callbackUrl
to cms install and fpm reload requests.
- Update to API version 1.110.
- The cms install and fpm reload request now return a
TaskCollection
.
- Add support for Laravel 9.
- Isolated Laravel helper.
- The cron
toArray
usedsetRandomDelayMaxSeconds
instead ofgetRandomDelayMaxSeconds
.
- Add nodes endpoint.
- Add
random_delay_max_seconds
attribute to theCron
model.
- Add
node_id
attribute to theCron
model.
- Add the ability to reload an FPM pool.
- Full rework of the validation logic in the models including tests.
- Update to API version 1.106.2.
- Update regex for mail account and mail alias local part
- Add
log_slow_requests_threshold
attribute to theFpmPool
model. - Add
createPublic
andcreatePrivate
methods to theSshKeys
endpoint for creating a public or private SSH key. - Add several validations for several attributes.
- Add
sort
attribute to theLogFilter
.
- Update to API version 1.106.
- Moved the sort and limit constants to their own enums.
- Make sure the
allow_override_directives
andallow_override_option_directives
are in the request body of theVirtualHost
.
- Replace 300 by 303 in
StatusCode
- Add
description
to theUrlRedirect
model.
- Update to API version 1.105.0.
- Remove the
update
method from theCertificate
endpoint.
- Add URL redirects endpoint.
- Update to API version 1.104.1.
- Update to API version 1.103.
- Use the proper snake_case fields when using the ListFilter.
- Remove the database user grant delete endpoint as it's no longer available.
- Add the
is_lets_encrypt
property to theCertificate
model.
- Update to API version 1.102.
- Add the Let's Encrypt certificate endpoint:
createLetsEncryptCertificate
. - Add the endpoint to provide your own SSL certificates:
createCertificateWithOwnMaterial
.
- Update to API version 1.101.
- Issue templates to assign the correct user instead of the organisation. Also made the bug report a bit easier to use.
- Not all headers in this changelog were of the correct depth.
- Remove the
common_names
andmain_common_name
from the certificate update as it can't be changed. - Remove the SSH key update endpoint as it's no longer available.
- The MariaDB password hash for Database Users is now generated correctly.
- Update to API version 1.97.
- Always send the hashed password for the Database User but be able to set the hashed password with
setHashedPassword
or plain text password withsetPassword
. Thanks to @mbardelmeijer. - Setting the Database Engine of the Database User after setting the password will result in a
ModelException
as the password hash is based on the engine.
- Make e-mailaddress of the Cron and the unit name of the FPM pool optional.
- Use reflection instead of toArray to determine the available fields to prevent accessing fields which aren't initialized.
- Improve the ListFilter.
- Add documentation about the filter.
- Throw exception when filtered on a field which doesn't belong to the model.
- Removed Psalm in favor of PHPStan.
- Fix the type of the unix name in the FPMPool model. Thanks to @szepeviktor.
- Add
oneTimeLogin
endpoint for CMS. - Add
documentRootFiles
endpoint for Virtual Hosts.
- Restored the ability to track cluster deployments when installing a CMS and still returns the CMS object (required because the Core API no longer returns the CMS object).
- The FPM pool restart endpoint no longer returns the FPM pool object (as the Core API no longer returns the FPM pool object).
- Update to API version 1.88.
- The
ListFilter
can now be initialized for models which enables checks for available fields to filter or sort on.
- Properly encode timestamps in usage endpoints.
- Remove
$oneTimeLogin
parameter from CMS get endpoint in favor of theoneTimeLogin
endpoint. - Remove
$documentRootContainsFiles
parameter from VirtualHost get endpoint in favor of thedocumentRootFiles
endpoint instead.
- After an FPM pool restart, there's no need to deploy the cluster.
- Add
disableAsync
to theUnixUsers
endpoint. Thanks to @WilliamDEdwards. - Add
unit name
property to the FPM pool. Thanks to @WilliamDEdwards. - Add version based user agent, i.e.
cyberfusion-core-api-client/1.29
. Thanks to @WilliamDEdwards.
- Add positive integer validation to
keep_hourly
,keep_daily
,keep_weekly
,keep_monthly
,keep_yearly
of Borg Repositories. - Add positive integer validation to
error_count
of Crons. - Add positive integer validation to
max_children
,max_requests
,process_idle_timeout
andcpu_limit
of FPM pools. - Add positive integer validation to
quota
of Mail accounts. - Update to API version 1.77
- Add the ability to restart a FPM pool. Thanks to @Arne-Jan.
- The
from_timestamp_date
parameter is now required for Borg Repository Usages, Database Usages, Mail Account Usages and Unix User Usages. - Update to API version 1.65
- Add
description
to unix user. - Add
borg_repositories_directory
to unix user. - Add user agent for this client, see
USER_AGENT
inClient
.
- Change
process_idle_timeout
to10
.
- Remove commands endpoint and model.
- Remove
command_toolkit_enabled
from cluster.
- Add
bubblewrap_toolkit_enabled
to cluster. - Add
main_common_name
to certificate.
- The CMS model required fields which might not be present when creating a CMS.
- The list filter now works properly and works with multiple filter arguments.
- Add create, delete and install methods to the CMS endpoint.
- Add
is_active
property to crons. - Add async support to UnixUsers.
- Add the max limit to list requests.
- Change the email address to be optional for crons.
- Update to API version 1.56
- Change the databases usages endpoint which now correctly handles empty usage. Thanks to @Arne-Jan.
- Requesting a Let's Encrypt certificate not longer requires a cluster deployment.
- Update to API version 1.48
- Change the
Str::match
toStr::doesMatch
to not conflict with new Laravel helper.
- Add regex validation to the name of a database user.
- Add
locking_enabled
property to crons.
- Change regex validation to allow capticals for the
table_name
of a database user grant. - Update to API version 1.47
- Add default of empty string to setName in Cluster model's fromArray
- Fix error with deployment due to affected clusters not being initialized.
- Fix error with the document root files being
null
when no files are present but an array is expected.
- Improve the contract for the client to support the deployment.
- Add (auto) deployment of affected clusters. See the README.md for more information about the usage of deployments.
- Add
get_document_root_contains_files
parameter to theget
method on VirtualHost.
- Borg repository usages and update endpoint.
- Borg archives get endpoint.
- Add the
BORG_SERVER
cluster group. - Add
private_key
property to SSH keys. - Add malware toolkit fields to Cluster.
- Add
unix_user_id
property to Malware.
- Renamed
BORG
cluster group toBORG_CLIENT
to match the spec. - Retention fields of a borg repository are now nullable.
- Renamed
name
attribute of a CMS tosoftware_name
to match the spec.
- Removed the
virtual_host_id
property from malware.
- Fix empty string for all tables on database grants.
- Add Borg Repositories endpoint.
- Update to API version 1.35.1
- Add
command_toolkit_enabled
attribute to Clusters.
- Update to API version 1.34
- The
nologin
shell path is no longer available.
- Change the required fields to match the latest spec.
- Add jsonSerializable support to the models. This allows you to
json_encode
the models.
- Fix pattern validation on models.
- Add
is_namespaced
attribute to FPM pools. - Add
shell_path
enum attribute to Unix Users.
- Update to API version 1.32
- Update to API version 1.29.1
- Add support for one time login url for cmses.
- Add several attributes to clusters.
- Add validation to several properties.
- Update to API version 1.28
- Change to getters and setters for the properties to allow validation of the properties. To prevent breaking implementations, property access is still available but the use of the getters and setters is recommended.
- Add crud for databases.
- Add crud for database users.
- Add crud for database user grants.
- Update to API version 1.22
- Add
host
attribute to database users. - Add endpoint for retrieving the malware of a virtual host.
- Update to API version 1.21
- Fix issue with cluster deployments (#19)
- Add
from
parameter to unix user, database and mail accounts usages. - Add mail domains update method.
- Add mail domains
is_local
property.
- Update to API version 1.19
- Add commands endpoint which were added in API version 1.16.
- Update to API version 1.17
- Fix the parsing of the unix user usage response, which could be an empty array of multiple objects.
- Fix general validation check to not mark a boolean with
false
or an empty array as invalid. - Fix validation field for FPM pool endpoint
- Add database users endpoint.
- Add mail aliases endpoint.
- Add
balancer_backend_name
to virtualhosts. - Add
catch_all_forward_email_addresses
to mail domain. - Add commit call to the cluster endpoint. See the readme for more information.
- Update to API version 1.12
- Remove
forward_email_addresses
from mail accounts.
- Add directory fields to the unix user.
- Properly handle HTTP 500 errors.
- Fix several issues with the mixed body schemas.
- Update to API version 1.9.
- Update to API version 1.7.
- When the client is initialized, the availability of the API is checked. An exception will be thrown when the API isn't available.
- Add sandbox mode. Enable the sandbox mode in the configuration class, see the readme for more information.
- Add the
databases
endpoint, which allows you to list and get databases and view the disk usage. - Add the
data_directory
attribute to the cluster model. - Add psalm as static analysis tool.
- Add the initial Core API implementation.