Get seed
Fetch one seed by UUID or slug. Returns 404 if not found or cross-tenant.
Path Parameters
Response
Seed record
Response shape for a single seed row.
A thin projection over :class:StorySeedRecord - JSONB columns
surface as dict so dashboards can render them without a second
round-trip; large list views can slim this down later if needed.
The 6 seed lifecycle states.
Source: mechanics/lifecycle-state-machine.md §1 - wire-form values
match the DB CHECK (state IN ('raw',...)) exactly.
raw, triaged, promoted, used, rejected, dead Discrete provenance vocabulary (5 values) per R4 R127-C1.
Source of truth:
docs/design/concepts/green-source-scout/mechanics/provenance-contract.md§2docs/design/concepts/seed-lifecycle-store/mechanics/schema.md(CHECK constraint)docs/design/concepts/story-seed-object/design.md§3.1
Notable absence: there is NO scraped value - the gate enforces by
absence. The DB-level CHECK constraint lists exactly these five.
generated, public-domain, licensed, opt-in, operator-inspired Controlled risk-flag vocabulary (C-SSD-7 contract §2).
ANY flag set on a seed → mandatory human review (cannot auto-promote).
Stored as TEXT[] with a GIN index so the SC8 audit
(WHERE risk_flags @> ARRAY[...]) is a single index scan.
Source: docs/design/concepts/green-source-scout/mechanics/provenance-contract.md §2.
pii-present, sensitive-data, identifiable-real-event, copyrighted-phrasing-detected, platform-restriction, minor-or-sensitive-subject