Pular para o conteúdo

Endpoints de domínios, templates e publicação

API · v1 · Homologação · Revisado em · Markdown

Estas 45 operações estão em homologação em https://api.staging.agilink.io/v1. Exemplos usam recursos fictícios. A referência interativa contém os schemas completos de cada campo, inclusive objetos internos. Leia também o guia da integração e a migração de tokens.

Todas as requisições usam Authorization: Bearer <credencial>. Sessão humana e chave limitada são indicadas por operação. OAuth depende da Tarefa 2. Mutações exigem Idempotency-Key UUID v4; revisões, quando exigidas, usam If-Match: "<revision>". Nunca envie credenciais em query strings.

Listar domínios autorizados e estados.

Permissão: domains:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId query sim AppId
limit query não integer
cursor query não Cursor
detached query não —

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"id": "domain_loja",
"appId": "app_loja",
"hostname": "go.example.com",
"mode": "external",
"ownership": "unverified",
"dns": "pending",
"https": "pending",
"links": "pending",
"detached": false,
"removalState": null,
"canManageDns": false,
"zoneName": "example.com",
"nameservers": [],
"challenge": null,
"connectionRecords": [],
"nativeConfig": {},
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"lastCheckedAt": null,
"lastError": null
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Solicitar domínio de plataforma ou conectar domínio próprio.

Permissão: domains:create. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
appId AppId sim Consulte o schema para restrições e campos internos
mode — sim Valores: platform, managed, external
prefix string não Máximo 32 caracteres
hostname Domain não Consulte o schema para restrições e campos internos
apexProfileId string não Máximo 100 caracteres
{
"appId": "app_loja",
"mode": "platform",
"prefix": "minhaloja"
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/domains' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'Content-Type: application/json' \
--data '{"appId":"app_loja","mode":"platform","prefix":"minhaloja"}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Operação a acompanhar. /v1/operations/op_example
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "op_example",
"appId": "app_loja",
"type": "link.resync",
"status": "queued",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"revision": "20000000-0000-4000-8000-000000000001",
"result": null,
"error": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500, 503. Veja códigos e repetição.

Detalhe, instruções e pendências.

Permissão: domains:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"id": "domain_loja",
"appId": "app_loja",
"hostname": "go.example.com",
"mode": "external",
"ownership": "unverified",
"dns": "pending",
"https": "pending",
"links": "pending",
"detached": false,
"removalState": null,
"canManageDns": false,
"zoneName": "example.com",
"nameservers": [],
"challenge": null,
"connectionRecords": [],
"nativeConfig": {},
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"lastCheckedAt": null,
"lastError": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Desvincular com dependências e operação recuperável.

Permissão: domains:delete. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request DELETE 'https://api.staging.agilink.io/v1/domains/domain_example' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Operação a acompanhar. /v1/operations/op_example
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "op_example",
"appId": "app_loja",
"type": "link.resync",
"status": "queued",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"revision": "20000000-0000-4000-8000-000000000001",
"result": null,
"error": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 422, 428, 429, 500, 503. Veja códigos e repetição.

Ações possíveis para aquele modo e usuário.

Permissão: capabilities:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/capabilities' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"mode": "external",
"actions": {
"verify": true,
"detach": true,
"dns": false,
"nativeConfig": false,
"webConfig": false,
"recovery": false,
"templates": true
},
"reasons": {
"dns": "DNS externo permanece no seu provedor."
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Verificar propriedade, DNS, TLS e prontidão.

Permissão: domains:verify. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
{}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/domains/domain_example/verify' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Operação a acompanhar. /v1/operations/op_example
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "op_example",
"appId": "app_loja",
"type": "link.resync",
"status": "queued",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"revision": "20000000-0000-4000-8000-000000000001",
"result": null,
"error": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Configuração Android, iOS, scheme e rotas.

Permissão: native_config:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/native-config' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"config": {},
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Configuração Android, iOS, scheme e rotas.

Permissão: native_config:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
androidPackage string não Máximo 255 caracteres
fingerprints array não Consulte o schema para restrições e campos internos
ios object / null não Consulte o schema para restrições e campos internos
routing object / null não Consulte o schema para restrições e campos internos
{
"androidPackage": "com.example.loja",
"fingerprints": [
"AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA"
]
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/domains/domain_example/native-config' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"androidPackage":"com.example.loja","fingerprints":["AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA"]}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"config": {},
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Destino web, metadados e prefixo.

Permissão: web_config:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/web-config' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"config": {},
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Destino web, metadados e prefixo.

Permissão: web_config:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
flutterUrl string não Máximo 4096 caracteres
flutterName string não Máximo 100 caracteres
flutterDescription string não Máximo 300 caracteres
flutterRoutePrefix string não Máximo 200 caracteres
{
"flutterUrl": "https://shop.example.com",
"flutterRoutePrefix": "/produtos/",
"flutterName": "Loja"
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/domains/domain_example/web-config' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"flutterUrl":"https://shop.example.com","flutterRoutePrefix":"/produtos/","flutterName":"Loja"}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"config": {},
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Opções de recuperação disponíveis.

Permissão: recovery_config:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/recovery-config' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"config": {},
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Opções de recuperação disponíveis.

Permissão: recovery_config:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
enabled boolean sim Consulte o schema para restrições e campos internos
sdkReady boolean sim Consulte o schema para restrições e campos internos
appClipBundleId string não Máximo 255 caracteres
detection object não Consulte o schema para restrições e campos internos
{
"enabled": false,
"sdkReady": false
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/domains/domain_example/recovery-config' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"enabled":false,"sdkReady":false}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"config": {},
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Diagnóstico estruturado das associações e publicação.

Permissão: domains:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/diagnostics' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"domainId": "domain_loja",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"configurationSaved": true,
"publication": {
"status": "pending",
"desiredRevision": "20000000-0000-4000-8000-000000000001",
"confirmedRevision": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"ownership": "unverified",
"dns": "pending",
"https": "pending",
"links": "pending",
"androidConfigured": false,
"iosConfigured": false,
"deviceAssociationTested": false,
"appClipVerified": false,
"notes": [
"Configuração salva não prova associação em aparelho."
]
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Opções de plataforma e orientações suportadas de domínio raiz.

Permissão: domains:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId query sim AppId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domain-options?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"enabled": true,
"mutationsEnabled": true,
"platformDomain": "links.staging.agilink.io",
"modes": [
"platform"
],
"externalDns": {
"enabled": false,
"apexProfiles": []
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Listar registros administráveis.

Permissão: dns:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
limit query não integer
cursor query não Cursor

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/dns-records' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"id": "record_example",
"name": "_example.go.example.com",
"type": "TXT",
"content": "example",
"ttl": 300,
"proxied": false,
"priority": null,
"version": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"revision": "20000000-0000-4000-8000-000000000001",
"canEdit": true,
"canDelete": true,
"protectedReason": null
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Criar registro permitido.

Permissão: dns:create. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
type — sim Valores: A, AAAA, CNAME, TXT, MX
name string sim Máximo 253 caracteres
content string sim Máximo 2048 caracteres
ttl integer sim Consulte o schema para restrições e campos internos
proxied boolean não Consulte o schema para restrições e campos internos
priority integer não Consulte o schema para restrições e campos internos
{
"type": "TXT",
"name": "_example.go.example.com",
"content": "example",
"ttl": 300,
"proxied": false
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/domains/domain_example/dns-records' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"type":"TXT","name":"_example.go.example.com","content":"example","ttl":300,"proxied":false}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Operação a acompanhar. /v1/operations/op_example
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "op_example",
"appId": "app_loja",
"type": "link.resync",
"status": "queued",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"revision": "20000000-0000-4000-8000-000000000001",
"result": null,
"error": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Alterar/remover registro permitido.

Permissão: dns:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
recordId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
type — sim Valores: A, AAAA, CNAME, TXT, MX
name string sim Máximo 253 caracteres
content string sim Máximo 2048 caracteres
ttl integer sim Consulte o schema para restrições e campos internos
proxied boolean não Consulte o schema para restrições e campos internos
priority integer não Consulte o schema para restrições e campos internos
{
"type": "TXT",
"name": "_example.go.example.com",
"content": "example",
"ttl": 300,
"proxied": false
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PATCH 'https://api.staging.agilink.io/v1/domains/domain_example/dns-records/record_example' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"type":"TXT","name":"_example.go.example.com","content":"example","ttl":300,"proxied":false}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Operação a acompanhar. /v1/operations/op_example
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "op_example",
"appId": "app_loja",
"type": "link.resync",
"status": "queued",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"revision": "20000000-0000-4000-8000-000000000001",
"result": null,
"error": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Alterar/remover registro permitido.

Permissão: dns:delete. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
recordId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request DELETE 'https://api.staging.agilink.io/v1/domains/domain_example/dns-records/record_example' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Operação a acompanhar. /v1/operations/op_example
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "op_example",
"appId": "app_loja",
"type": "link.resync",
"status": "queued",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"revision": "20000000-0000-4000-8000-000000000001",
"result": null,
"error": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 422, 428, 429, 500, 503. Veja códigos e repetição.

Padrões por app.

Permissão: template_bindings:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/apps/app_loja/template-defaults' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"scope": "app",
"revision": "20000000-0000-4000-8000-000000000001",
"enabled": true,
"current": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"effective": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"inherited": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"templateData": {}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Padrões por app.

Permissão: template_bindings:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
baseTemplateId — sim Valores: android, ios, recovery
choice TemplateChoice sim Consulte o schema para restrições e campos internos
{
"baseTemplateId": "android",
"choice": {
"mode": "official"
}
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/apps/app_loja/template-defaults' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"baseTemplateId":"android","choice":{"mode":"official"}}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"scope": "app",
"revision": "20000000-0000-4000-8000-000000000001",
"enabled": true,
"current": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"effective": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"inherited": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"templateData": {}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Padrões de templates por plataforma.

Permissão: template_bindings:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/domains/domain_example/template-defaults' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"scope": "app",
"revision": "20000000-0000-4000-8000-000000000001",
"enabled": true,
"current": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"effective": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"inherited": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"templateData": {}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Padrões de templates por plataforma.

Permissão: template_bindings:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
domainId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
baseTemplateId — sim Valores: android, ios, recovery
choice TemplateChoice sim Consulte o schema para restrições e campos internos
{
"baseTemplateId": "android",
"choice": {
"mode": "official"
}
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/domains/domain_example/template-defaults' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"baseTemplateId":"android","choice":{"mode":"official"}}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"scope": "app",
"revision": "20000000-0000-4000-8000-000000000001",
"enabled": true,
"current": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"effective": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"inherited": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"templateData": {}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Ler/alterar apresentação por plataforma.

Permissão: template_bindings:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
linkId path sim LinkId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/links/go.example.com~-ofertas~-tenis/template-selection' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"scope": "app",
"revision": "20000000-0000-4000-8000-000000000001",
"enabled": true,
"current": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"effective": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"inherited": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"templateData": {}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Ler/alterar apresentação por plataforma.

Permissão: template_bindings:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
linkId path sim LinkId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
baseTemplateId — sim Valores: android, ios, recovery
choice TemplateChoice sim Consulte o schema para restrições e campos internos
{
"baseTemplateId": "android",
"choice": {
"mode": "official"
}
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/links/go.example.com~-ofertas~-tenis/template-selection' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"baseTemplateId":"android","choice":{"mode":"official"}}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"appId": "app_loja",
"scope": "app",
"revision": "20000000-0000-4000-8000-000000000001",
"enabled": true,
"current": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"effective": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"inherited": {
"android": {
"mode": "inherit"
},
"ios": {
"mode": "inherit"
},
"recovery": {
"mode": "inherit"
}
},
"templateData": {}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Modelos oficiais, plataformas e capacidades.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId query sim AppId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/template-catalog?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"id": "android",
"rendererContractVersion": 1,
"states": [
"manual",
"opening",
"fallback"
],
"actions": [
"open-app",
"open-browser"
],
"nativeVariables": [
"link.titulo",
"link.descricao",
"app.nome"
],
"themes": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
}
}
},
{
"id": "ios",
"rendererContractVersion": 1,
"states": [
"opening",
"fallback"
],
"actions": [
"open-app",
"install",
"open-browser"
],
"nativeVariables": [
"link.titulo",
"link.descricao",
"app.nome"
],
"themes": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#0f172a",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#27272a",
"tertiary": "#1c1d20"
}
}
},
{
"id": "recovery",
"rendererContractVersion": 1,
"states": [
"copy-only",
"default",
"copied",
"manual",
"fallback"
],
"actions": [
"copy-install",
"install",
"open-app",
"copy-clip"
],
"nativeVariables": [
"link.titulo",
"link.descricao",
"app.nome"
],
"themes": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
}
}
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Campos, variáveis, tipos e restrições.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
baseId path sim OpaqueId
appId query sim AppId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/template-catalog/android/schema?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"baseTemplateId": "android",
"limits": {
"configBytes": 12288,
"dataBytes": 8192,
"variables": 20,
"details": 4
},
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"schemaVersion": {
"const": 1
},
"kind": {
"const": "preset"
},
"baseTemplateId": {
"enum": [
"android",
"ios",
"recovery"
]
},
"rendererContractVersion": {
"const": 1
},
"appearance": {
"type": "object",
"additionalProperties": false,
"properties": {
"light": {
"type": "object",
"additionalProperties": false,
"properties": {
"background": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"surface": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"text": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"muted": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"secondary": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"tertiary": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"required": []
},
"dark": {
"type": "object",
"additionalProperties": false,
"properties": {
"background": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"surface": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"text": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"muted": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"secondary": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"tertiary": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"required": []
},
"fontFamily": {
"enum": [
"system",
"sans",
"serif"
]
},
"radius": {
"enum": [
"small",
"medium",
"large"
]
},
"spacing": {
"enum": [
"compact",
"comfortable"
]
},
"logoAssetId": {
"type": "string",
"maxLength": 100
}
},
"required": []
},
"content": {
"type": "object",
"additionalProperties": false,
"properties": {
"heading": {
"type": "string",
"maxLength": 120
},
"supportingText": {
"type": "string",
"maxLength": 1000
},
"actionLabels": {
"type": "object",
"additionalProperties": {
"type": "string",
"maxLength": 120
}
},
"details": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"label": {
"type": "string",
"maxLength": 80
},
"value": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"label",
"value"
]
},
"maxItems": 4
}
},
"required": []
},
"variables": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,39}$"
},
"label": {
"type": "string",
"maxLength": 80
},
"type": {
"enum": [
"text",
"number",
"boolean"
]
},
"required": {
"type": "boolean"
},
"maxLength": {
"type": "integer",
"minimum": 1,
"maximum": 4000
},
"defaultValue": {
"type": [
"string",
"number",
"boolean"
]
}
},
"required": [
"key"
]
},
"maxItems": 20
}
},
"required": []
},
"example": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
}
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Seleções válidas para contexto app/domínio/link.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId query sim AppId
limit query não integer
cursor query não Cursor

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/template-choices?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1,
"baseTemplateId": "android",
"name": "Página da loja",
"variables": []
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Biblioteca e criação por app.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId query sim AppId
limit query não integer
cursor query não Cursor
archived query não —

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/templates?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"archived": false,
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z"
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Biblioteca e criação por app.

Permissão: templates:create. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
appId AppId sim Consulte o schema para restrições e campos internos
name string sim Máximo 100 caracteres
baseTemplateId — sim Valores: android, ios, recovery
config TemplateConfig não Consulte o schema para restrições e campos internos
{
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
}
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'Content-Type: application/json' \
--data '{"appId":"app_loja","name":"Página da loja","baseTemplateId":"android","config":{"schemaVersion":1,"kind":"preset","baseTemplateId":"android","rendererContractVersion":1,"appearance":{"light":{"background":"#f8fafc","surface":"#ffffff","border":"#e2e8f0","text":"#0f172a","muted":"#64748b","accent":"#0284c7","secondary":"#059669","tertiary":"#f1f5f9"},"dark":{"background":"#0c0d0e","surface":"#141517","border":"#26272b","text":"#f4f4f5","muted":"#a1a1aa","accent":"#0284c7","secondary":"#10b981","tertiary":"#1c1d20"},"fontFamily":"system","radius":"large","spacing":"comfortable"},"content":{},"variables":[]}}'

Resposta: 201. Criado. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Endereço relativo do recurso criado. /v1/templates/60000000-0000-4000-8000-000000000001
{
"data": {
"template": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"archived": false,
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z"
},
"draft": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"revision": "20000000-0000-4000-8000-000000000001"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500, 503. Veja códigos e repetição.

Detalhe, nome e arquivamento.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"template": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"archived": false,
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z"
},
"draft": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"revision": "20000000-0000-4000-8000-000000000001"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Detalhe, nome e arquivamento.

Permissão: templates:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
name string não Máximo 100 caracteres
archived boolean não Consulte o schema para restrições e campos internos
{
"name": "Página editada"
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PATCH 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"name":"Página editada"}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"template": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"archived": false,
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z"
},
"draft": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"revision": "20000000-0000-4000-8000-000000000001"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Duplicar rascunho ou versão.

Permissão: templates:create. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
name string sim Máximo 100 caracteres
sourceVersion integer não Consulte o schema para restrições e campos internos
draftRevision Revision não Consulte o schema para restrições e campos internos
{
"name": "Cópia",
"draftRevision": "20000000-0000-4000-8000-000000000001"
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/duplicate' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'Content-Type: application/json' \
--data '{"name":"Cópia","draftRevision":"20000000-0000-4000-8000-000000000001"}'

Resposta: 201. Criado. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Endereço relativo do recurso criado. /v1/templates/60000000-0000-4000-8000-000000000001
{
"data": {
"template": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"archived": false,
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z"
},
"draft": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"revision": "20000000-0000-4000-8000-000000000001"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500, 503. Veja códigos e repetição.

Consultar/salvar rascunho com revisão própria.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/draft' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Consultar/salvar rascunho com revisão própria.

Permissão: templates:update. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
config TemplateConfig sim Consulte o schema para restrições e campos internos
{
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
}
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request PUT 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/draft' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"config":{"schemaVersion":1,"kind":"preset","baseTemplateId":"android","rendererContractVersion":1,"appearance":{"light":{"background":"#f8fafc","surface":"#ffffff","border":"#e2e8f0","text":"#0f172a","muted":"#64748b","accent":"#0284c7","secondary":"#059669","tertiary":"#f1f5f9"},"dark":{"background":"#0c0d0e","surface":"#141517","border":"#26272b","text":"#f4f4f5","muted":"#a1a1aa","accent":"#0284c7","secondary":"#10b981","tertiary":"#1c1d20"},"fontFamily":"system","radius":"large","spacing":"comfortable"},"content":{},"variables":[]}}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": null,
"updatedAt": "2026-10-19T20:00:00Z"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Validar configuração e variáveis.

Permissão: templates:validate. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
config TemplateConfig sim Consulte o schema para restrições e campos internos
usage — não Valores: link, default
{
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"usage": "link"
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/validate' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'Content-Type: application/json' \
--data '{"config":{"schemaVersion":1,"kind":"preset","baseTemplateId":"android","rendererContractVersion":1,"appearance":{"light":{"background":"#f8fafc","surface":"#ffffff","border":"#e2e8f0","text":"#0f172a","muted":"#64748b","accent":"#0284c7","secondary":"#059669","tertiary":"#f1f5f9"},"dark":{"background":"#0c0d0e","surface":"#141517","border":"#26272b","text":"#f4f4f5","muted":"#a1a1aa","accent":"#0284c7","secondary":"#10b981","tertiary":"#1c1d20"},"fontFamily":"system","radius":"large","spacing":"comfortable"},"content":{},"variables":[]},"usage":"link"}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"valid": true,
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"usage": "link"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500, 503. Veja códigos e repetição.

Prévia com dados autorizados, sem publicação.

Permissão: templates:preview. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
config TemplateConfig não Consulte o schema para restrições e campos internos
linkId LinkId não Consulte o schema para restrições e campos internos
templateData object não Consulte o schema para restrições e campos internos
{
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
}
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/preview' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'Content-Type: application/json' \
--data '{"config":{"schemaVersion":1,"kind":"preset","baseTemplateId":"android","rendererContractVersion":1,"appearance":{"light":{"background":"#f8fafc","surface":"#ffffff","border":"#e2e8f0","text":"#0f172a","muted":"#64748b","accent":"#0284c7","secondary":"#059669","tertiary":"#f1f5f9"},"dark":{"background":"#0c0d0e","surface":"#141517","border":"#26272b","text":"#f4f4f5","muted":"#a1a1aa","accent":"#0284c7","secondary":"#10b981","tertiary":"#1c1d20"},"fontFamily":"system","radius":"large","spacing":"comfortable"},"content":{},"variables":[]}}'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"templateId": "60000000-0000-4000-8000-000000000001",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"content": {
"heading": "Loja"
},
"sideEffects": false,
"rendererContractVersion": 1
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 413, 415, 422, 429, 500, 503. Veja códigos e repetição.

Listar/preparar snapshots imutáveis.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
limit query não integer
cursor query não Cursor

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/versions' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1,
"state": "prepared",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"checksum": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"usage": "link",
"authorId": "40000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z"
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Listar/preparar snapshots imutáveis.

Permissão: templates:snapshot. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
draftRevision Revision sim Consulte o schema para restrições e campos internos
usage — não Valores: link, default
{
"draftRevision": "20000000-0000-4000-8000-000000000001",
"usage": "link"
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/versions' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"draftRevision":"20000000-0000-4000-8000-000000000001","usage":"link"}'

Resposta: 201. Criado. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Endereço relativo do recurso criado. /v1/templates/60000000-0000-4000-8000-000000000001/versions/1
{
"data": {
"template": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"name": "Página da loja",
"baseTemplateId": "android",
"archived": false,
"revision": "20000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z"
},
"version": {
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1,
"state": "prepared",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"checksum": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"usage": "link",
"authorId": "40000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z"
},
"draft": {
"revision": "20000000-0000-4000-8000-000000000001",
"baseVersion": 1,
"updatedAt": "2026-10-19T20:00:00Z"
},
"revision": "20000000-0000-4000-8000-000000000001"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Consultar snapshot.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
version path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/versions/1' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1,
"state": "prepared",
"config": {
"schemaVersion": 1,
"kind": "preset",
"baseTemplateId": "android",
"rendererContractVersion": 1,
"appearance": {
"light": {
"background": "#f8fafc",
"surface": "#ffffff",
"border": "#e2e8f0",
"text": "#0f172a",
"muted": "#64748b",
"accent": "#0284c7",
"secondary": "#059669",
"tertiary": "#f1f5f9"
},
"dark": {
"background": "#0c0d0e",
"surface": "#141517",
"border": "#26272b",
"text": "#f4f4f5",
"muted": "#a1a1aa",
"accent": "#0284c7",
"secondary": "#10b981",
"tertiary": "#1c1d20"
},
"fontFamily": "system",
"radius": "large",
"spacing": "comfortable"
},
"content": {},
"variables": []
},
"checksum": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"usage": "link",
"authorId": "40000000-0000-4000-8000-000000000001",
"createdAt": "2026-10-19T20:00:00Z"
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Versões disponíveis para associação.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
limit query não integer
cursor query não Cursor

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/availability' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"version": 1,
"confirmedAt": "2026-10-19T20:00:00Z"
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Publicar versão com alvos explícitos.

Permissão: templates:publish. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
version integer não Consulte o schema para restrições e campos internos
draftRevision Revision não Consulte o schema para restrições e campos internos
usage — não Valores: link, default
targets array sim Consulte o schema para restrições e campos internos
{
"version": 1,
"targets": []
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/publish' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"version":1,"targets":[]}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Publicação a acompanhar. /v1/template-publications/60000000-0000-4000-8000-000000000001
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"action": "publish",
"baseTemplateId": "android",
"choice": {
"mode": "custom",
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1
},
"state": "queued",
"phase": "version",
"error": null,
"versionAvailability": "prepared",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"targets": []
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Restaurar versão confirmada.

Permissão: templates:publish. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
templateId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
version integer não Consulte o schema para restrições e campos internos
mode — não Valores: official, inherit
targets array sim Consulte o schema para restrições e campos internos
{
"version": 1,
"targets": []
}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/templates/60000000-0000-4000-8000-000000000001/restore' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{"version":1,"targets":[]}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Publicação a acompanhar. /v1/template-publications/60000000-0000-4000-8000-000000000001
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"action": "publish",
"baseTemplateId": "android",
"choice": {
"mode": "custom",
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1
},
"state": "queued",
"phase": "version",
"error": null,
"versionAvailability": "prepared",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"targets": []
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.

Listar publicações por app/template/alvo.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
appId query sim AppId
limit query não integer
cursor query não Cursor
baseTemplateId query não BaseId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/template-publications?appId=app_loja' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
{
"data": [
{
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"action": "publish",
"baseTemplateId": "android",
"choice": {
"mode": "custom",
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1
},
"state": "queued",
"phase": "version",
"error": null,
"versionAvailability": "prepared",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"targets": []
}
],
"pagination": {
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Estado detalhado por destino.

Permissão: templates:read. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
publicationId path sim OpaqueId

Sem corpo de requisição.

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request GET 'https://api.staging.agilink.io/v1/template-publications/70000000-0000-4000-8000-000000000001' \
--header 'Authorization: Bearer <credencial>'

Resposta: 200. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
{
"data": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"action": "publish",
"baseTemplateId": "android",
"choice": {
"mode": "custom",
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1
},
"state": "queued",
"phase": "version",
"error": null,
"versionAvailability": "prepared",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"targets": []
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 422, 429, 500, 503. Veja códigos e repetição.

Repetir tentativa recuperável.

Permissão: templates:retry. Credencial: sessão humana ou chave de API com acesso ao aplicativo.

Parâmetro Local Obrigatório Significado
publicationId path sim OpaqueId
Idempotency-Key header sim UUID v4 por intenção. Recibo por 24h. Mudança de payload/precondição retorna 409. Segredo de chave não é reexibido.
If-Match header sim ETag forte obtido em consulta. Ausência 428; revisão antiga 412.

Corpo: application/json. Campos desconhecidos são rejeitados.

Campo Tipo Obrigatório Restrição
{}

Exemplo completo de requisição (substitua os identificadores fictícios):

Janela do terminal
curl --request POST 'https://api.staging.agilink.io/v1/template-publications/70000000-0000-4000-8000-000000000001/retry' \
--header 'Authorization: Bearer <credencial>' \
--header 'Idempotency-Key: 10000000-0000-4000-8000-000000000001' \
--header 'If-Match: "20000000-0000-4000-8000-000000000001"' \
--header 'Content-Type: application/json' \
--data '{}'

Resposta: 202. Sucesso. Exemplo fictício.

Header Significado Exemplo
X-Request-Id Identificador gerado pelo servidor, inclusive para falhas e replays. —
Cache-Control Respostas administrativas não podem ser armazenadas. no-store, no-transform
ETag Revisão forte, a enviar em If-Match na alteração. “20000000-0000-4000-8000-000000000001”
Location Publicação a acompanhar. /v1/template-publications/60000000-0000-4000-8000-000000000001
Retry-After Segundos até a próxima consulta. 1
{
"data": {
"id": "60000000-0000-4000-8000-000000000001",
"appId": "app_loja",
"revision": "20000000-0000-4000-8000-000000000001",
"action": "publish",
"baseTemplateId": "android",
"choice": {
"mode": "custom",
"templateId": "60000000-0000-4000-8000-000000000001",
"version": 1
},
"state": "queued",
"phase": "version",
"error": null,
"versionAvailability": "prepared",
"createdAt": "2026-10-19T20:00:00Z",
"updatedAt": "2026-10-19T20:00:00Z",
"targets": []
},
"meta": {
"requestId": "req_00000000000040008000000000000001"
}
}

Erros previstos: 400, 401, 403, 404, 409, 412, 413, 415, 422, 428, 429, 500, 503. Veja códigos e repetição.