Criar ou copiar um template
Cria um template novo (global, para a plataforma) ou copia um existente para um cliente (source_template_id). Um chamador que alcança um só cliente pode omitir tenant_id na cópia; um cliente inexistente ou fora do alcance responde 404 TENANT_NOT_FOUND. Aceita Idempotency-Key (opcional).
Autorização
bearer templates:writeCredencial da v3: o JWT da sessão (o mesmo da v2) ou um token pessoal dom_pat_…. A lista de escopos de cada operação diz o que ela exige: uma capacidade (agents:read), authenticated ou session-only. Segredo de máquina (X-Agent-Secret, X-API-Token, sdk_…) não é aceito.
Em: header
Escopo: templates:write
Parâmetros de cabeçalho
Chave opcional de 1 a 255 caracteres ASCII visíveis; quando enviada, vale o mesmo contrato da §8.
Corpo da requisição
application/json
Definições TypeScript
Use o tipo request body no TypeScript.
O corpo de POST /templates: um template novo global OU uma cópia de outro.
A variante New é bem maior que Copy, mas este é um DTO de request de vida
curta (um por chamada, nunca em coleção), então o custo de tamanho não paga o
Box que atrapalharia o match. Cada variante é fechada: um campo que
nenhuma das duas conhece não casa com nenhuma (422).
Copia um template existente para um cliente. Um chamador que alcança um
cliente só omite tenant_id; master/revenda informam.
Corpo da resposta
application/json
application/json
curl -X POST "https://example.com/templates" \ -H "Idempotency-Key: b3f0c1e2-4a5b-4c6d-8e9f-0a1b2c3d4e5f" \ -H "Content-Type: application/json" \ -d '{ "source_template_id": "7bb1bee0-a40f-46a0-83fc-d70ade5dfeb2" }'{ "agent_instructions": "string", "agent_mode": "simple", "agent_type": "sdr", "apply_policy": null, "config": null, "created_at": "string", "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4", "description": "string", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "is_default": true, "name": "string", "origin_template_id": "059a4309-9d59-48c5-b0fa-7a904a9be6f8", "output_contract": "string", "owner_tenant_id": 0, "promptforge_recipe": null, "setup_mode": "direct", "status": "active", "template_version": 0, "type": "text", "updated_at": "string", "wizard_schema": null}