Skip to content

One version of a template

GET
/orgs/{org}/templates/{id}/versions/{version}
curl --request GET \
--url https://api.sloose.com/orgs/org_9f3c/templates/b3f1c8a2/versions/3 \
--header 'Authorization: Bearer <token>'

What that version held — its recipe, migrated to the current schema version on read, who made it and the import it was saved from — however old it is: an import that copied a version long ago reads that one by its number, where paging the history newest first might never reach it (#1065 review). The template is seen as GET …/templates/{id} sees it: shared with the org, or the caller’s own.

org
required

The org id the session was issued for. A token for one org can never read another.

string
Example
org_9f3c

The org id the session was issued for. A token for one org can never read another.

id
required

The template id.

string
Example
b3f1c8a2

The template id.

version
required

The version’s number: 1 for the first.

string
Example
3

The version’s number: 1 for the first.

The version.

Media typeapplication/json
object
version
required
object
id
required
string
templateId
required
string
version
required
integer
config
required

The recipe at this version, migrated to the current schema version on read. Null when it could not be migrated.

object | null
unreadable
required

Why config could not be migrated, when it could not.

string | null
enabledModules
required
Array<string>
registryVersion
required

The configuration version the recipe was built against, as its save REPORTED it (#616): an agent’s save over MCP stamps the version it checked the recipe against, and a repository’s push the version it wrote (none when another write landed while it wrote the configuration, which it checks before its templates; one landing while the templates are saved is outside that check, and the stamp stays, #650); any other save, the registryVersion it sent — a label the server stores for any version the org has reached, not one it checked. null when the save said none.

number | null
madeBy
required

Who made it: a person, a person’s API token, an agent over MCP, or a configuration repo’s push. History, not a lock — only managedBy on the template refuses changes.

string
Allowed values: user token mcp sdk
madeByUserId
required

The person, or the person a token or an agent acted for.

string | null
madeByName
required

Their name, or their address when they have cleared it — including somebody who has since left the org. A deleted person reads as one.

string | null
fromImportId
required

The import it was saved from. Null for a version that came from no import, or once that import has gone.

string | null
note
required
string | null
createdAt
required
string
Example
{
"version": {
"madeBy": "user"
}
}

No bearer, or one that is expired, revoked or no longer resolves to a member.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

The bearer’s role is too low, or it was issued for a different org.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

No such template, or version (code: VERSION_NOT_FOUND) — a number the template has not reached, or not a number, or it is not visible to this session.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

Report a problem with this page