Reten Docs
Configuração de Atividades

Configurações de Status de Retenção

Configuração por tenant dos status de retenção de usuário ativos.

O catálogo de cada tenant é semeado a partir dos codes de status de retenção padrão da plataforma no momento do setup do tenant, e pode ser re-sincronizado a qualquer momento a partir do diálogo de importação (que lê GET /api/user-retention-status-configs/defaults). Cada config vive inteiramente dentro do tenant: é identificado pelo seu code (único) e carrega o label de exibição do tenant — não há um catálogo global que o sustente.

GET /api/user-retention-status-configs

Lista todas as configurações de status de retenção de usuário do tenant.

Auth: Obrigatória — permissão activity:view

Exemplo

curl https://api.reten.ai/api/user-retention-status-configs \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>"
import axios from 'axios';

const response = await axios.get(
  'https://api.reten.ai/api/user-retention-status-configs',
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

const configs = response.data;

Resposta 200 OK

[
  {
    "id": "aa0e8400-e29b-41d4-a716-446655440000",
    "code": "habit",
    "label": "En hábito",
    "isActive": true,
    "createdAt": "2026-06-18T06:00:00.000Z",
    "updatedAt": "2026-06-18T06:00:00.000Z"
  },
  {
    "id": "bb0e8400-e29b-41d4-a716-446655440000",
    "code": "dormant",
    "label": "En riesgo",
    "isActive": true,
    "createdAt": "2026-06-18T06:00:00.000Z",
    "updatedAt": "2026-06-18T06:00:00.000Z"
  }
]

GET /api/user-retention-status-configs/defaults

Retorna os status de retenção padrão da plataforma como um catálogo plano { code, label }. O app de administração usa isso para pré-preencher o diálogo de importação com os status que um tenant pode adotar.

Auth: Obrigatória — permissão activity:view

Este endpoint é de pré-preenchimento, não uma entidade. O payload é o catálogo de defaults fixo no código — não autoritativo e NÃO é persistido — e sempre lista todos os defaults, independentemente do que o tenant já possui. Para adotá-los, o admin escolhe os que ainda faltam e os cria via POST /api/user-retention-status-configs/bulk. Nada é criado ao chamar este endpoint.

Exemplo

curl https://api.reten.ai/api/user-retention-status-configs/defaults \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>"
import axios from 'axios';

const response = await axios.get(
  'https://api.reten.ai/api/user-retention-status-configs/defaults',
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

const defaults = response.data;

Resposta 200 OK

[
  {
    "code": "sign_up",
    "label": "Registrado"
  },
  {
    "code": "habit",
    "label": "En hábito"
  }
]

POST /api/user-retention-status-configs

Cria uma configuração de status de retenção para o tenant.

Auth: Obrigatória — permissão activity-config:manage

Corpo da Requisição

CampoTipoObrigatórioDescrição
codestringSimCode canônico do status de retenção (do catálogo)
labelstringSimEtiqueta de exibição para este tenant

Exemplo

curl -X POST https://api.reten.ai/api/user-retention-status-configs \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "habit",
    "label": "En hábito"
  }'
import axios from 'axios';

const response = await axios.post(
  'https://api.reten.ai/api/user-retention-status-configs',
  {
    code: 'habit',
    label: 'En hábito',
  },
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

Resposta 201 Created


POST /api/user-retention-status-configs/bulk

Criação em massa de configurações de status de retenção do tenant.

Auth: Obrigatória — permissão activity-config:manage

Corpo da Requisição

CampoTipoObrigatórioDescrição
itemsarraySimArray de configurações a criar
items[].codestringSimCode canônico do status de retenção (do catálogo)
items[].labelstringSimEtiqueta de exibição para este tenant

Exemplo

curl -X POST https://api.reten.ai/api/user-retention-status-configs/bulk \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "code": "habit",
        "label": "En hábito"
      },
      {
        "code": "dormant",
        "label": "En riesgo"
      }
    ]
  }'
import axios from 'axios';

const response = await axios.post(
  'https://api.reten.ai/api/user-retention-status-configs/bulk',
  {
    items: [
      {
        code: 'habit',
        label: 'En hábito',
      },
      {
        code: 'dormant',
        label: 'En riesgo',
      },
    ],
  },
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

Resposta 201 Created


PATCH /api/user-retention-status-configs/:id

Atualiza uma configuração de status de retenção do tenant.

Auth: Obrigatória — permissão activity-config:manage

Corpo da Requisição

CampoTipoObrigatórioDescrição
labelstringNãoEtiqueta de exibição
is_activebooleanNãoHabilitar ou desabilitar esta configuração

Exemplo

curl -X PATCH https://api.reten.ai/api/user-retention-status-configs/<id> \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Etiqueta Atualizada"
  }'
import axios from 'axios';

const response = await axios.patch(
  'https://api.reten.ai/api/user-retention-status-configs/<id>',
  {
    label: 'Etiqueta Atualizada',
  },
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

Resposta 200 OK


DELETE /api/user-retention-status-configs/:id

Desativa uma configuração de status de retenção do tenant.

Auth: Obrigatória — permissão activity-config:manage

Exemplo

curl -X DELETE https://api.reten.ai/api/user-retention-status-configs/<id> \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>"
import axios from 'axios';

const response = await axios.delete(
  'https://api.reten.ai/api/user-retention-status-configs/<id>',
  {
    headers: {
      Authorization: 'Bearer <token>',
      'x-tenant-id': '<tenant-id>',
    },
  }
);

Resposta 204 No Content