---
title: "The workspace's architecture blueprint with the live state of its parts."
method: GET
path: "/ai/applications/{public_id}/blueprint"
tags: ["AI Chat"]
---

# The workspace's architecture blueprint with the live state of its parts.

`GET /ai/applications/{public_id}/blueprint`

## Request

- Base URL: `/api` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/api/ai/applications/{public_id}/blueprint`
- Auth: HTTP bearer

## Path parameters

- `public_id` string, required

## Response `200`

The workspace's blueprint

- BlueprintResponse: A workspace's architecture: what was accepted, what waits for a decision, and how each bound part is doing.
  - `accepted` BlueprintVersionResponse: What the console needs to draw one version.
    - `change_summary` string, required
    - `created_at` string, required: ISO 8601.
    - `decided_at` string, nullable: ISO 8601, once accepted or rejected.
    - `document` BlueprintDocument, required: The design of an application: what it is for, its parts and its flows.
      - `components` Component[], required
        - `engine` 'postgres' | 'redis' | 'mongodb' | 'mariadb' | 's3': The engines Temps operates as managed services.
        - `holds` string[]: What lives in a data part: tables, key prefixes, buckets, streams.
        - `id` string, required: Stable slug, unique in the document: `web`, `api`, `orders-worker`.
        - `image` string, nullable: The image an app runs, when `runtime` is `image`: `nats:2.10`.
        - `kind` 'client' | 'app' | 'data' | 'external', required: What a part of the application is.
        - `name` string, required
        - `provider` string, nullable: The outside service: "Stripe", "an LLM API", "GitHub OAuth".
        - `purpose` string, required: Why it exists, in one sentence.
        - `role` 'web' | 'api' | 'worker' | 'cron' | 'static'
        - `runtime` 'preset' | 'dockerfile' | 'image': How Temps runs an app.
        - `stack` string, nullable: Free text, as the user wants it: "Next.js", "Bun + Hono", "FastAPI".
        - `surface` 'browser' | 'mobile' | 'cli' | 'third_party'
      - `flows` Flow[]
        - `from` string, required
        - `kind` 'http' | 'websocket' | 'query' | 'publish' | 'subscribe' | 'cache' | 'blob' | 'webhook', required: What travels along a flow.
        - `label` string, required: What travels: "POST /api/tasks", "topic task.created", "tables tasks, users".
        - `to` string, required
      - `summary` string, required: One paragraph: what the application does and for whom.
    - `proposed_by_assistant` boolean, required: Whether the model proposed it (in a chat) rather than the user writing it.
    - `status` 'proposed' | 'accepted' | 'rejected' | 'superseded', required: Where a version stands.
    - `version` integer, required
  - `application_id` string, required
  - `bindings` object, required: Which project or service realises each part, by part id.
  - `live` object, required: The live state of each bound part, by part id.
  - `proposal` BlueprintVersionResponse: What the console needs to draw one version.
    - `change_summary` string, required
    - `created_at` string, required: ISO 8601.
    - `decided_at` string, nullable: ISO 8601, once accepted or rejected.
    - `document` BlueprintDocument, required: The design of an application: what it is for, its parts and its flows.
      - `components` Component[], required
        - `engine` 'postgres' | 'redis' | 'mongodb' | 'mariadb' | 's3': The engines Temps operates as managed services.
        - `holds` string[]: What lives in a data part: tables, key prefixes, buckets, streams.
        - `id` string, required: Stable slug, unique in the document: `web`, `api`, `orders-worker`.
        - `image` string, nullable: The image an app runs, when `runtime` is `image`: `nats:2.10`.
        - `kind` 'client' | 'app' | 'data' | 'external', required: What a part of the application is.
        - `name` string, required
        - `provider` string, nullable: The outside service: "Stripe", "an LLM API", "GitHub OAuth".
        - `purpose` string, required: Why it exists, in one sentence.
        - `role` 'web' | 'api' | 'worker' | 'cron' | 'static'
        - `runtime` 'preset' | 'dockerfile' | 'image': How Temps runs an app.
        - `stack` string, nullable: Free text, as the user wants it: "Next.js", "Bun + Hono", "FastAPI".
        - `surface` 'browser' | 'mobile' | 'cli' | 'third_party'
      - `flows` Flow[]
        - `from` string, required
        - `kind` 'http' | 'websocket' | 'query' | 'publish' | 'subscribe' | 'cache' | 'blob' | 'webhook', required: What travels along a flow.
        - `label` string, required: What travels: "POST /api/tasks", "topic task.created", "tables tasks, users".
        - `to` string, required
      - `summary` string, required: One paragraph: what the application does and for whom.
    - `proposed_by_assistant` boolean, required: Whether the model proposed it (in a chat) rather than the user writing it.
    - `status` 'proposed' | 'accepted' | 'rejected' | 'superseded', required: Where a version stands.
    - `version` integer, required
  - `workspace_name` string, required

## Other responses

- `401`: Unauthorized
- `403`: Insufficient permissions
- `404`: Workspace not found
- `500`: Internal server error

## Changes

> 81 revisions in range; 1 not diffed.

- **2026-10-20** `79089e9f49ee`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/gotempsh/apis/temps/changes/ai/applications/:public_id/blueprint/get.md)

---

[API](https://skmtc.dev/gotempsh/apis/temps.md) · [All operations](https://skmtc.dev/gotempsh/apis/temps/llms.txt) · [OpenAPI document](https://skmtc.dev/gotempsh/apis/temps/revisions/ab6d5d19e930?raw)
