* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Resource\Provider\Node; use DateTimeImmutable; use KTXF\Json\JsonSerializable; /** * Resource Node Read Interface * * @since 2025.05.01 */ interface NodeBaseInterface extends JsonSerializable { public const RESOURCE_TYPE = 'resource.node'; public const JSON_PROPERTY_PROVIDER = 'provider'; public const JSON_PROPERTY_SERVICE = 'service'; public const JSON_PROPERTY_COLLECTION = 'collection'; public const JSON_PROPERTY_IDENTIFIER = 'identifier'; public const JSON_PROPERTY_SIGNATURE = 'signature'; public const JSON_PROPERTY_CREATED = 'created'; public const JSON_PROPERTY_MODIFIED = 'modified'; public const JSON_PROPERTY_PROPERTIES = 'properties'; /** * Node type * * @since 2025.05.01 */ public function type(): string; /** * Provider identifier * * @since 2025.05.01 */ public function provider(): string; /** * Service identifier * * @since 2025.05.01 */ public function service(): string|int; /** * Collection identifier * * @since 2025.05.01 */ public function collection(): string|int|null; /** * Node identifier * * @since 2025.05.01 */ public function identifier(): string|int|null; /** * Node signature/sync token * * @since 2025.05.01 */ public function signature(): string|null; /** * Node creation date * * @since 2025.05.01 */ public function created(): DateTimeImmutable|null; /** * Node modification date * * @since 2025.05.01 */ public function modified(): DateTimeImmutable|null; /** * Get the node properties * * @since 2025.05.01 */ public function getProperties(): NodePropertiesBaseInterface|NodePropertiesMutableInterface; }