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.

  • contentHash
    Type: string
    required

    Stable 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?").

  • createdAt
    Type: stringFormat: date-time
    required

    When this version was created.

  • createdBy
    Type: object
    required

    Actor who created this version.

    • id
      Type: string
      required

      Stable ID for the actor (UUID for users; the API key's keyId for service accounts).

    • type
      Type: stringenum
      required
      values
      • user
      • api_key
  • metadata
    Type: object
    required

    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.

    • key
      Type: string Pattern: ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
      required

      Caller-supplied identifier, unique within the namespace per kind. Stable across versions — a blueprint's key doesn't change when you publish a new version. Snake_case; must start with a lowercase letter.

    • name
      Type: string
      max length:  
      200
      required

      Human-readable display name shown in Studio, list responses, and audit trails (max 200 chars).

    • version
      Type: string
      required

      Either draft (editable; only one draft per key at a time) or a semver like 1.2.0 (immutable once published). On create you choose: pass draft to iterate, or a semver to publish directly.

    • description
      Type: string
      max length:  
      1000

      Optional longer-form description. Helps both humans and AI assistants pick the right resource when browsing the catalog (max 1000 chars).

    • labels
      Type: object

      Arbitrary key/value tags for categorization and filtering — e.g. { "team": "people-ops", "env": "prod" }. Filterable on list endpoints via ?labels[key]=value.

  • spec
    Type: object
    required

    The schema's content. SignStack schemas wrap a JSON Schema definition with versioning, identity, and lifecycle on top.

    • jsonSchemaDraft declares which JSON Schema specification draft the body conforms to.
    • schemaDefinition is the raw JSON Schema body (properties, types, constraints, refs).

    Used by blueprint/template inputs to declare the shape of entity data the caller must supply.

    • jsonSchemaDraft
      Type: stringenum
      required

      Which JSON Schema specification draft the schemaDefinition body conforms to. Newer drafts have richer features; older drafts are widely supported.

      values
      • 2020-12
      • 2019-09
      • draft-07
      • draft-06
      • draft-04
    • schemaDefinition
      Type: object
      required

      The JSON Schema body — properties, types, validation constraints, refs. Validated against the declared jsonSchemaDraft on every write.

  • updatedAt
    Type: stringFormat: date-time
    required

    When this version was last modified (drafts only — published versions are immutable).

  • apiVersion
    Type: string

    API version of the resource shape this schema was stored against.

  • publishedAt
    Type: stringFormat: date-time

    When this version was published. Absent on drafts.

  • publishedBy
    Type: object

    Actor who published this version. Absent on drafts.

    • id
      Type: string
      required

      Stable ID for the actor (UUID for users; the API key's keyId for service accounts).

    • type
      Type: stringenum
      required
      values
      • user
      • api_key