API reference: Blueprint catalog
Cushy blueprint-catalog API: list the managed + own-org catalog, create/update/delete your organization's own blueprints, and import a definition from a connected repo.
Your organization's own blueprints, alongside the read-only platform-managed catalog (synced by staff from a Git source of native .tf blueprint folders — see Build your own Terraform blueprint). Reads are open to members; writes need mutate_infra. Platform rows and cross-org ids answer 404 on mutation.
/api/blueprintsSession or BearerList the catalog visible to your org: platform-managed blueprints plus your own. Own rows include the definition; the response also carries the native .tf file rendering for the catalog view.
{ "blueprints": [ { "id": 4, "blueprintId": "custom/org/team-s3-bucket", "slug": "team-s3-bucket",
"title": "Team S3 bucket", "provider": "AWS", "tfType": "aws_s3_bucket", "enabled": true, "own": true } ] }| Status | When |
|---|---|
401 | Not signed in. |
/api/blueprintsmutate_infraCreate an own-org blueprint from { slug, title, description, provider, resourceType, tfType, fields, module } — or import one from a connected repo with { fromRepo: { connectionId, path } } (the path may point at a native .tf blueprint file or folder; legacy .tf.json/.json still parse). Validation rejects terraform/provider/backend blocks in the module.
{
"slug": "acme-bucket",
"title": "Acme logging bucket",
"provider": "AWS",
"resourceType": "storage",
"tfType": "aws_s3_bucket",
"fields": [ { "key": "name", "label": "Name", "type": "string", "required": true } ],
"module": { "resource": { "aws_s3_bucket": { "this": { "bucket": "${var.name}" } } } }
}
// or import the definition from a connected repo:
// { "fromRepo": { "connectionId": 3, "path": "blueprints/acme-bucket" } }{ "blueprint": { "id": "custom/org/acme-bucket", "slug": "acme-bucket", "title": "Acme logging bucket",
"provider": "AWS", "tier": "custom", "enabled": true } }| Status | When |
|---|---|
400 | Validation failed (the error names the field/block). |
403 | Role lacks mutate_infra. |
409 | Duplicate slug in your catalog. |
PATCH /api/blueprints/{id} updates or toggles { enabled }; DELETE /api/blueprints/{id} removes an own blueprint. The deployable union (built-ins + enabled platform + enabled own) is what `GET /api/terraform/blueprints` returns.