namespace Acl.Application; /// /// Port to the Objecten API, which holds the authoritative register record (S-19a, ADR-0028). /// Implemented in Infrastructure — as with ZGW, the ACL is the only code that talks to the /// upstream Common Ground module (§8.1). /// public interface IRegisterRecordGateway { /// /// Write the register record for a registration, creating it if absent and updating it if it /// already exists. Idempotent on : a replayed approval updates /// the existing object instead of creating a second one (§8.6). /// Task UpsertAsync(RegisterRecord record, CancellationToken ct = default); /// /// The register record held by the object at , or null if that /// object holds none. The Event Subscriber projects a register write from the notification NRC /// delivers, which carries only the object URL — so it reads the record back through the ACL /// rather than talking to Objecten itself (§8.1, S-19b-2). /// Task GetAsync(Uri objectUrl, CancellationToken ct = default); } /// /// The public-safe register record, matching the RegisterRecord objecttype schema registered /// in S-18c (ADR-0027). No bsn, no name — the register is world-readable. /// public sealed record RegisterRecord(string Id, string Status, string? Reference); /// The register statuses the RegisterRecord objecttype's schema allows (ADR-0027). public static class RegisterRecordStatus { public const string Ingediend = "INGEDIEND"; public const string Ingeschreven = "INGESCHREVEN"; }