T2Mark Docs
Painel
Docs / API Reference / GET /api/policy

GET /api/policy

GET /api/policy

Obtém a política de marca d’água associada à máquina. Chamada periodicamente para sincronizar mudanças. Requer autenticação via X-API-Key.

Quando é Chamado

Agente em operação normal:

1. A cada ~30 segundos (polling)
2. Verifica se há nova versão de política
3. Se versão_servidor > versão_local → Aplica
4. Caso contrário → Continua com política atual

Requisição

curl -X GET https://t2mark.setor9.net/api/policy \
  -H "X-API-Key: ak_5f1b3c8e9d2a4b6c7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b" \
  -H "Accept: application/json"

Headers

Header Valor
X-API-Key ApiKey da máquina
Accept application/json

Resposta — 200 OK

{
  "status": "success",
  "version": 2,
  "template": "color=#FF0000\\nopacity=0.25\\n---\\nRESTRITO\\n{domain}\\{user}\\n{date}",
  "enabled": true,
  "lastUpdated": "2026-05-05T14:30:00Z"
}

Campos

Campo Tipo Significado
status string "success" = política encontrada
version integer Número da versão (ex: 2)
template string Configuração completa (Front Matter)
enabled boolean Se política está ativa
lastUpdated string Data da última atualização

Template Format

O campo template contém a configuração completa no Front Matter format:

color=#FF0000\nopacity=0.25\n---\nRESTRITO\n{domain}\{user}\n{date}

Quebra-se em:

Metadados:

color=#FF0000
opacity=0.25

Separador:

---

Texto:

RESTRITO
{domain}\{user}
{date}

Veja Template da Marca D’Água para detalhes.


Lógica de Sincronização

GET /api/policy resposta:
{
  "version": 2
}

Agente verifica:
  versão_servidor (2) > versão_local (1)?
  
  Sim:  Aplica novo template imediatamente
  Não:  Continua com template atual

Exemplo: Atualização de Política

Dia 1:
  Admin cria política v1
  Agente recebe v1
  Salva em config.ini: Version=1
  Marca aparece com v1

Dia 2:
  Admin muda cor (cria v2)
  Agente polling: GET /api/policy
  Servidor responde: "version": 2
  Agente vê: 2 > 1? Sim!
  Agente aplica v2
  Marca muda de cor

Dia 3:
  Admin não mexe em nada
  Agente polling: GET /api/policy
  Servidor responde: "version": 2
  Agente vê: 2 > 2? Não
  Agente continua com v2 (sem mudança)

Respostas de Erro

401 Unauthorized

{
  "error": "Unauthorized",
  "message": "Invalid API key"
}

Causas: ApiKey inválida, revogada ou ausente


403 Forbidden

{
  "error": "Forbidden",
  "message": "Machine or tenant is disabled"
}

Causas: Máquina desativada ou tenant inativo


404 Not Found

{
  "error": "Not Found",
  "message": "No policy assigned to this machine"
}

Causas: Máquina registrada mas nenhuma política foi associada

Ação do agente: Continua esperando por atribuição (sem marca)


Comportamento com Política Desativada

Se admin desativar a política (sem deletar):

{
  "status": "success",
  "version": 2,
  "template": "...",
  "enabled": false,
  "message": "Policy is disabled"
}

Ação do agente:


Timings

Operação Tempo
GET /api/policy → Resposta 100-500 ms
Agente processa resposta 50-100 ms
Aplicação da marca (se mudou) ~5 segundos
Próximo polling ~30 segundos

Resumo Rápido

CHAMADO:
  A cada ~30 segundos (polling)

ENVIA:
  GET /api/policy
  Header: X-API-Key: ak_...

RECEBE:
  {
    "version": N,
    "template": "...",
    "enabled": true
  }

LÓGICA:
  Se version > local_version
    → Aplica novo template
  Senão
    → Continua com atual

SEM POLÍTICA ATRIBUÍDA:
  404 Not Found → Agente aguarda