Not yet as code
Five Kinds with no manifest path yet, and the reason the registry itself gives for each.
Not yet as code
Seven Kinds are registered and applyable through a sync: see the Kind reference. Five more are recognized by name but deliberately not registered, so a manifest naming one of them, or a up0 schema explain call against one, reads as "not yet supported" with a reason, rather than the generic "unknown kind" error reserved for an actual typo.
| Kind | Why it is not yet a manifest |
|---|---|
Workflow | No *Create Pydantic model exists yet to generate a spec from; workflow creation today validates a raw dictionary rather than a typed schema. |
IngestionToken | Creating a real token mints its secret server-side. A plain column upsert, the mechanism every registered Kind's apply builds on, would silently skip that step, so this Kind needs its own apply function, not built yet. |
EscalationPolicy | Its backing table shipped, but it has no CRUD API yet, so there is no *Create model to generate a spec from either. |
DataView | Depends on the presentation-half columns on the underlying saved_queries table, which this deployment does not yet carry. |
IssuePolicy | Built with no CRUD API by design: a Kind's write path is meant to be GitOps, not a REST editor, and whether to expose one at all is still an open, deliberately deferred call. The console's read-only surface exists; the write path does not. |
None of these is a promise that stayed unbuilt by accident. Each is missing exactly one prerequisite (a schema to generate from, an apply function, or a settled design decision), named above, and each is the actual reason recorded in the registry itself rather than a guess.
Also never a Kind
NotificationChannel. upzero's V2 scope is mobile push only; there is no multi-channel notification resource (email, SMS, Slack, webhooks) to declare. The one real per-user resource that exists, a push notification schedule, is a personal preference tied to one person, not organization-owned infrastructure a platform team declares in git.
OnCallSchedule. Escalation policies (once EscalationPolicy itself is a manifest) cover ordered levels and timeouts. A rotation calendar, on top of that, answers a different question ("who is on duty right now" rather than "who do we try next") and is out of scope for now, not ruled out permanently.
Checking this yourself
$ up0 schema explain Workflow --version v1
Error: kind "Workflow" is not yet supported — no `*Create` Pydantic model exists
yet to generate a spec model from — `create_workflow` validates a raw dictNaming a deferred Kind returns its specific reason, the same text as the table above, generated from the registry rather than copied here by hand. Naming a Kind that was never registered at all, or was mistyped, returns a different error naming every currently registered Kind instead:
$ up0 schema explain Widget --version v1
Error: unknown kind "Widget" — not a registered UP0 resource type. Registered
kinds: Dashboard (up0.io/v1), Monitor (up0.io/v1), Objective (up0.io/v1),
Organization (up0.io/v1), Rule (up0.io/v1), Service (up0.io/v1), StatusPage
(up0.io/v1), Tag (up0.io/v1)