SchemaResp
Full schema — returned by GET /schemas/{key}, POST /schemas, PUT .../versions/draft, and POST .../versions/draft/publish. Carries the schema's identity (metadata), content (spec), and audit/publish metadata.
The optimistic-locking handle is returned in the HTTP ETag response header (RFC 7232) — capture it from the response and pass it back as If-Match on the next PUT / DELETE.
- contentType: string
Hash requiredStable hash of the resource's content. Recomputed on every write (Create, Update, Publish), so it's available for both drafts and published versions. Useful for change detection — compare hashes across two snapshots (e.g. "did the draft actually change?" or "is the draft different from the latest published version?").
- createdType: stringFormat: date-time
At requiredWhen this version was created.
- createdType: object
By requiredActor who created this version.
- idType: stringrequired
Stable ID for the actor (UUID for users; the API key's
keyIdfor service accounts). - typeType: stringenumrequiredvalues
- user
- api
_key
- metadataType: objectrequired
The resource's identity and human-facing labels. Shared shape across all five resource kinds (blueprints, templates, schemas, assets, functions). The pair
(key, version)is the canonical handle for any resource within a namespace.- keyType: string
Pattern: ^[a-z][a-z0-9]*(_[a-z0-9]+)*$requiredCaller-supplied identifier, unique within the namespace per kind. Stable across versions — a blueprint's
keydoesn't change when you publish a new version. Snake_case; must start with a lowercase letter. - nameType: stringmax length:200required
Human-readable display name shown in Studio, list responses, and audit trails (max 200 chars).
- versionType: stringrequired
Either
draft(editable; only one draft per key at a time) or a semver like1.2.0(immutable once published). On create you choose: passdraftto iterate, or a semver to publish directly. - descriptionType: stringmax length:1000
Optional longer-form description. Helps both humans and AI assistants pick the right resource when browsing the catalog (max 1000 chars).
- labelsType: object
Arbitrary key/value tags for categorization and filtering — e.g.
{ "team": "people-ops", "env": "prod" }. Filterable on list endpoints via?labels[key]=value.
- specType: objectrequired
The schema's content. SignStack schemas wrap a JSON Schema definition with versioning, identity, and lifecycle on top.
jsonSchemaDraftdeclares which JSON Schema specification draft the body conforms to.schemaDefinitionis the raw JSON Schema body (properties, types, constraints, refs).
Used by blueprint/template
inputsto declare the shape of entity data the caller must supply.- jsonType: stringenum
Schema Draft requiredWhich JSON Schema specification draft the
schemaDefinitionbody conforms to. Newer drafts have richer features; older drafts are widely supported.values- 2020
-12 - 2019
-09 - draft
-07 - draft
-06 - draft
-04
- schemaType: object
Definition requiredThe JSON Schema body — properties, types, validation constraints, refs. Validated against the declared
jsonSchemaDrafton every write.
- updatedType: stringFormat: date-time
At requiredWhen this version was last modified (drafts only — published versions are immutable).
- apiType: string
Version API version of the resource shape this schema was stored against.
- publishedType: stringFormat: date-time
At When this version was published. Absent on drafts.
- publishedType: object
By Actor who published this version. Absent on drafts.
- idType: stringrequired
Stable ID for the actor (UUID for users; the API key's
keyIdfor service accounts). - typeType: stringenumrequiredvalues
- user
- api
_key
