Templates
Bank templates and template sources.
List the caller's personal template sources.
Scoped to the caller's user_id — only returns sources with scope='personal' owned by the authenticated principal.
Args: _auth: Authenticated principal (users and SAs allowed).
Returns: List of SourceResponse for the caller's personal sources.
Authorization
HTTPBearer In: header
Response Body
application/json
curl -X GET "https://example.com/ext/hindclaw/me/template-sources"[ { "name": "string", "url": "string", "scope": "server", "owner": "string", "has_auth": true, "description": "string", "created_at": "string", "updated_at": "string" }]Register a personal template source for the caller.
Source is created with scope='personal' and owner set to the caller's user_id. Name is derived from the URL unless an alias is provided.
Args: request: CreateSourceRequest with url and optional alias/auth_token. _auth: Authenticated principal (users and SAs allowed).
Returns: SourceResponse for the newly created personal source.
Raises: HTTPException: 422 if the source name cannot be derived from the URL. HTTPException: 409 if a personal source with that name already exists.
Authorization
HTTPBearer In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request to register a marketplace source.
Response Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/me/template-sources" \ -H "Content-Type: application/json" \ -d '{ "url": "string" }'{ "name": "string", "url": "string", "scope": "server", "owner": "string", "has_auth": true, "description": "string", "created_at": "string", "updated_at": "string"}Remove a personal template source owned by the caller.
Only deletes sources with scope='personal' that belong to the caller — cannot affect other users' sources or server-scope sources.
Args: name: Template source name to delete. _auth: Authenticated principal (users and SAs allowed).
Raises: HTTPException: 404 if the source is not found in the caller's personal sources.
Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
curl -X DELETE "https://example.com/ext/hindclaw/me/template-sources/string"Authorization
HTTPBearer In: header
Query Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/ext/hindclaw/me/templates"{ "templates": [ { "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {} } ]}Authorization
HTTPBearer In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request to create a personal template by inlining an upstream manifest.
Response Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/me/templates" \ -H "Content-Type: application/json" \ -d '{ "id": "string", "name": "string", "manifest": { "version": "string" } }'{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/ext/hindclaw/me/templates/string"{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update for hand-edited templates. Every field is optional.
Response Body
application/json
application/json
curl -X PATCH "https://example.com/ext/hindclaw/me/templates/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
curl -X DELETE "https://example.com/ext/hindclaw/me/templates/string"Authorization
HTTPBearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request to install a template from a marketplace source.
The {id} in the URL path is the template id WITHIN the source.
The installed-template id is alias_id if provided, else the source
template id. This lets a user install the same source template under a
different installed name (Section 4.3 identity invariant: at most one
row per (id, scope, owner)).
Response Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/me/templates/string/install" \ -H "Content-Type: application/json" \ -d '{ "source_name": "string" }'{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Query Parameters
falseResponse Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/me/templates/string/update"{ "updated": true, "previous_revision": "string", "new_revision": "string", "template": { "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {} }}Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/ext/hindclaw/me/templates/string/check-update"{ "has_update": true, "current_revision": "string", "latest_revision": "string", "source_name": "string", "source_scope": "server"}Authorization
HTTPBearer In: header
Query Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/ext/hindclaw/admin/templates"{ "templates": [ { "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {} } ]}Authorization
HTTPBearer In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request to create a personal template by inlining an upstream manifest.
Response Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/admin/templates" \ -H "Content-Type: application/json" \ -d '{ "id": "string", "name": "string", "manifest": { "version": "string" } }'{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/ext/hindclaw/admin/templates/string"{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Partial update for hand-edited templates. Every field is optional.
Response Body
application/json
application/json
curl -X PATCH "https://example.com/ext/hindclaw/admin/templates/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
curl -X DELETE "https://example.com/ext/hindclaw/admin/templates/string"Authorization
HTTPBearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request to install a template from a marketplace source.
The {id} in the URL path is the template id WITHIN the source.
The installed-template id is alias_id if provided, else the source
template id. This lets a user install the same source template under a
different installed name (Section 4.3 identity invariant: at most one
row per (id, scope, owner)).
Response Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/admin/templates/string/install" \ -H "Content-Type: application/json" \ -d '{ "source_name": "string" }'{ "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {}}Authorization
HTTPBearer In: header
Path Parameters
Query Parameters
falseResponse Body
application/json
application/json
curl -X POST "https://example.com/ext/hindclaw/admin/templates/string/update"{ "updated": true, "previous_revision": "string", "new_revision": "string", "template": { "id": "string", "name": "string", "description": "string", "category": "string", "integrations": [ "string" ], "tags": [ "string" ], "scope": "server", "owner": "string", "source_name": "string", "source_scope": "server", "source_owner": "string", "source_revision": "string", "installed_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "manifest": {} }}Authorization
HTTPBearer In: header
Path Parameters
Response Body
application/json
application/json
curl -X GET "https://example.com/ext/hindclaw/admin/templates/string/check-update"{ "has_update": true, "current_revision": "string", "latest_revision": "string", "source_name": "string", "source_scope": "server"}Marketplace repository URL
1 <= lengthOverride auto-derived source name
Auth token for private repositories
1 <= length <= 1281 <= lengthA bank template manifest for import/export.
Version field enables forward-compatible schema evolution: the API auto-upgrades older manifest versions to the current schema on import.
1 <= lengthTemplate visibility scope.
"server"Value in
- "server"
- "personal"
1 <= length <= 1281 <= lengthA bank template manifest for import/export.
Version field enables forward-compatible schema evolution: the API auto-upgrades older manifest versions to the current schema on import.
1 <= lengthTemplate visibility scope.
"server"Value in
- "server"
- "personal"