diff --git a/src/Client/Endpoint/ProductEndpoint.php b/src/Client/Endpoint/ProductEndpoint.php index 224ddce..e7ff1d4 100644 --- a/src/Client/Endpoint/ProductEndpoint.php +++ b/src/Client/Endpoint/ProductEndpoint.php @@ -21,6 +21,11 @@ final class ProductEndpoint extends Endpoint implements ProductEndpointInterface use DeletableEndpointTrait; + /** + * @use UpdatableEndpointTrait + */ + use UpdatableEndpointTrait; + /** * @return PaginatedCollection */ diff --git a/src/Client/Endpoint/UpdatableEndpointInterface.php b/src/Client/Endpoint/UpdatableEndpointInterface.php index ab2ed1d..888b21d 100644 --- a/src/Client/Endpoint/UpdatableEndpointInterface.php +++ b/src/Client/Endpoint/UpdatableEndpointInterface.php @@ -12,7 +12,7 @@ interface UpdatableEndpointInterface { /** - * @param mixed $id This is (most likely) the host id + * @param mixed|null $id This is (most likely) the host id. Some endpoints require this to be set */ - public function update(mixed $id, AbstractDataTransferObject $data): void; + public function update(AbstractDataTransferObject $data, mixed $id = null): void; } diff --git a/src/Client/Endpoint/UpdatableEndpointTrait.php b/src/Client/Endpoint/UpdatableEndpointTrait.php index c383eb4..c8933eb 100644 --- a/src/Client/Endpoint/UpdatableEndpointTrait.php +++ b/src/Client/Endpoint/UpdatableEndpointTrait.php @@ -16,8 +16,9 @@ trait UpdatableEndpointTrait /** * @param T|AbstractDataTransferObject $data */ - public function update(mixed $id, AbstractDataTransferObject $data): void + public function update(AbstractDataTransferObject $data, mixed $id = null): void { - $this->client->put(sprintf('%s/%s', $this->endpoint, (string) $id), $data); + $endpoint = null === $id ? $this->endpoint : sprintf('%s/%s', $this->endpoint, (string) $id); + $this->client->put($endpoint, $data); } }