diff --git a/lib/Controllers/DefaultController.php b/lib/Controllers/DefaultController.php index 80cf87c..58f5219 100644 --- a/lib/Controllers/DefaultController.php +++ b/lib/Controllers/DefaultController.php @@ -499,18 +499,20 @@ class DefaultController extends ControllerAbstract { // ==================== Entity Operations ==================== private function entityListBulk(string $tenantId, string $userId, array $data): mixed { - if (!isset($data['sources'])) { - throw new InvalidArgumentException(self::ERR_MISSING_SOURCES); - } - if (!is_array($data['sources'])) { - throw new InvalidArgumentException(self::ERR_INVALID_SOURCES); - } - $sources = ResourceIdentifiers::fromArray($data['sources']); - foreach ($sources as $source) { - if (!$source instanceof EntityIdentifier) { - throw new InvalidArgumentException('Invalid parameter: sources must contain provider:service:collection:entity identifiers'); + if (isset($data['sources'])) { + if (!is_array($data['sources'])) { + throw new InvalidArgumentException(self::ERR_INVALID_SOURCES); } + + $sources = ResourceIdentifiers::fromArray($data['sources']); + foreach ($sources as $source) { + if (!$source instanceof ServiceIdentifier && !$source instanceof CollectionIdentifier) { + throw new InvalidArgumentException('Invalid parameter: sources must contain provider:service or provider:service:collection identifiers'); + } + } + } else { + $sources = null; } $filter = $data['filter'] ?? null; @@ -522,19 +524,22 @@ class DefaultController extends ControllerAbstract { } private function entityListStream(string $tenantId, string $userId, array $data, int $version, string $transaction): StreamedNdJsonResponse { - if (!isset($data['sources'])) { - throw new InvalidArgumentException(self::ERR_MISSING_SOURCES); - } - if (!is_array($data['sources'])) { - throw new InvalidArgumentException(self::ERR_INVALID_SOURCES); + + if (isset($data['sources'])) { + if (!is_array($data['sources'])) { + throw new InvalidArgumentException(self::ERR_INVALID_SOURCES); + } + + $sources = ResourceIdentifiers::fromArray($data['sources']); + foreach ($sources as $source) { + if (!$source instanceof ServiceIdentifier && !$source instanceof CollectionIdentifier) { + throw new InvalidArgumentException('Invalid parameter: sources must contain provider:service or provider:service:collection identifiers'); + } + } + } else { + $sources = null; } - $sources = ResourceIdentifiers::fromArray($data['sources']); - foreach ($sources as $source) { - if (!$source instanceof ServiceIdentifier && !$source instanceof CollectionIdentifier) { - throw new InvalidArgumentException('Invalid parameter: sources must contain provider:service or provider:service:collection identifiers'); - } - } $filter = $data['filter'] ?? null; $sort = $data['sort'] ?? null;