namespace ErsatzTV.Controllers.Api.Requests; // Id 0/absent = new; existing Id = update; existing row whose Id is absent from the request = delete // (design #202 §C4b) — plus a per-row ownership guard and nonblank validation enforced by the handler. public record PathReplacementItemRequest(int Id, string RemotePath, string LocalPath);