feat: full CRUD parity for domains — PATCH update, DELETE deprecate
musehub#117 Phase 5 (DOM_16, DOM_17): - PATCH /api/domains/@{author_slug}/{slug} — owner-only partial update of display_name, description, capabilities, viewer_type, version. Recomputes manifest_hash when capabilities changes. Reuses DomainCapabilities for the same 422 validation as create. - DELETE /api/domains/@{author_slug}/{slug} — owner-only, sets the existing is_deprecated flag rather than a hard row delete (avoids orphaning MusehubRepo.marketplace_domain_id / MusehubDomainInstall.domain_id rows). list_domains already unconditionally excludes deprecated rows, so this alone removes a domain from /domains browsing while it stays individually fetchable by scoped ID. - New service functions: update_domain, set_domain_deprecated. - 20 new tests (integration + E2E: ownership 403, not-found 404, malformed update 422, deprecated-exclusion-from-list, idempotent-delete 404).
Bump version to 0.2.0rc16.
Semantic Changes
42 symbols
Files Changed
~5
1003 in snapshot
0 comments
muse hub commit comment sha256:6a1eb85823e45a8dae769b123f2f0034624daa0024d63ae697dfaaa08918830d --body "your comment"
No comments yet. Be the first to start the discussion.