AssetResp
Full asset — returned by GET /assets/{key}, POST /assets, PUT .../versions/draft, and POST .../versions/draft/publish. Carries the asset'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.
Note: for binary asset types, the response carries the fileId reference; download the binary separately via the file endpoint.
- 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 asset's content.
typeis required and determines the asset kind (PDF, HTML, image, CSS), which in turn determines whether the binary content is referenced viafileIdor supplied inline ascontent.- Binary types (
pdf,image) — upload the file first viaPOST .../files/initiate-uploadand pass the returned ID infileId. - Text types (
html,css) — supply the content inline as a string incontent.
HTML assets additionally use
htmlConfigto declare partials, styles, images, the viewModel schema, and PDF rendering options. HTML assets are wrapped by HTML templates and rendered via Handlebars.- typeType: stringenumrequired
Asset kind — determines whether the binary lives at
fileId(binary) or inline atcontent(text).values- html
- image
- pdf
- css
- contentType: string
Inline text content. Required for
htmlandcssasset types. Pass the raw HTML source or CSS rules as a string. - fileType: string
Id Reference to an uploaded binary file. Required for
pdfandimageasset types. Upload viaPOST .../files/initiate-uploadto obtain this ID. - htmlType: object
Config HTML-only. Declares assets the HTML template references (partials, styles, images), the viewModel schema, and PDF rendering options. Combined with the inline
content(a Handlebars template), this configures how the HTML renders to PDF.
- Binary types (
- 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 asset 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
