Pular para o conteúdo principal

Flags

Gerenciamento de feature flags.

Endpoints

MétodoEndpointDescriçãoPermissão
POST/api/v1/feature-flagsCriar flagFEATURE_FLAGS_CREATE
GET/api/v1/feature-flagsListar flagsFEATURE_FLAGS_READ
GET/api/v1/feature-flags/:idObter flagFEATURE_FLAGS_READ
PATCH/api/v1/feature-flags/:idAtualizar flagFEATURE_FLAGS_UPDATE
POST/api/v1/feature-flags/:id/enableAtivar flagFEATURE_FLAGS_TOGGLE
POST/api/v1/feature-flags/:id/disableDesativar flagFEATURE_FLAGS_TOGGLE
DELETE/api/v1/feature-flags/:idExcluir flagFEATURE_FLAGS_DELETE

Atributos

CampoTipoObrigatórioDescrição
keystringSimIdentificador único da flag (alfanumerico, hifens, underscores)
namestringSimNome de exibicao da flag (max 200 caracteres)
descriptionstringNãoDescrição da flag (max 1000 caracteres)
statusenumNãoStatus da flag: ENABLED ou DISABLED (default: DISABLED)
variationsarraySimLista de variações (mínimo 1)
variations[].keystringSimIdentificador da variação
variations[].valueanySimValor da variação (boolean, string, number, object, array)
defaultVariationstringSimKey da variação padrão

Criar Flag

POST /api/v1/feature-flags

Cria uma nova feature flag.

Request

curl -X POST 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"key": "new-checkout-flow",
"name": "New Checkout Flow",
"description": "Novo fluxo de checkout com PIX",
"variations": [
{ "key": "on", "value": true },
{ "key": "off", "value": false }
],
"defaultVariation": "off"
}'

Response (201 Created)

{
"data": {
"type": "feature-flags",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"key": "new-checkout-flow",
"name": "New Checkout Flow",
"description": "Novo fluxo de checkout com PIX",
"status": "DISABLED",
"variations": [
{ "key": "on", "value": true },
{ "key": "off", "value": false }
],
"defaultVariation": "off",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
},
"links": {
"self": "/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000"
}
}
}

Listar Flags

GET /api/v1/feature-flags

Lista feature flags com suporte a paginação e filtros.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da pagina
page[size]integerItens por pagina (max 100)
filter[status]enumFiltrar por status (ENABLED ou DISABLED)
curl 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags?filter[status]=ENABLED' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": [
{
"type": "feature-flags",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"key": "new-checkout-flow",
"name": "New Checkout Flow",
"status": "ENABLED",
"variations": [
{ "key": "on", "value": true },
{ "key": "off", "value": false }
],
"defaultVariation": "off"
}
}
],
"meta": {
"totalItems": 1,
"totalPages": 1,
"currentPage": 1
},
"links": {
"self": "/api/v1/feature-flags?page[number]=1&page[size]=20"
}
}

Obter Flag

GET /api/v1/feature-flags/:id

Obtém detalhes de uma feature flag específica.

curl 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "feature-flags",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"key": "new-checkout-flow",
"name": "New Checkout Flow",
"description": "Novo fluxo de checkout com PIX",
"status": "ENABLED",
"variations": [
{ "key": "on", "value": true },
{ "key": "off", "value": false }
],
"defaultVariation": "off",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
},
"links": {
"self": "/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000"
}
}
}

Atualizar Flag

PATCH /api/v1/feature-flags/:id

Atualiza uma feature flag existente.

curl -X PATCH 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "New Checkout Flow v2",
"description": "Novo fluxo de checkout com PIX e cartao"
}'

Response (200 OK)

{
"data": {
"type": "feature-flags",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"key": "new-checkout-flow",
"name": "New Checkout Flow v2",
"description": "Novo fluxo de checkout com PIX e cartao",
"status": "ENABLED",
"updatedAt": "2024-01-15T11:00:00Z"
}
}
}

Ativar Flag

POST /api/v1/feature-flags/:id/enable

Ativa uma feature flag.

curl -X POST 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000/enable' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "feature-flags",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"key": "new-checkout-flow",
"status": "ENABLED",
"updatedAt": "2024-01-15T11:00:00Z"
}
}
}

Desativar Flag

POST /api/v1/feature-flags/:id/disable

Desativa uma feature flag. Quando desativada, a flag sempre retorna a variação padrão.

curl -X POST 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000/disable' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "feature-flags",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"key": "new-checkout-flow",
"status": "DISABLED",
"updatedAt": "2024-01-15T11:00:00Z"
}
}
}

Excluir Flag

DELETE /api/v1/feature-flags/:id

Remove uma feature flag e todos os seus targeting rules e overrides.

curl -X DELETE 'https://feature-flags.stg.catalisa.app/api/v1/feature-flags/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (204 No Content)

Sem corpo de resposta.


Exemplos de Variações

Flag Boolean

{
"key": "dark-mode",
"name": "Dark Mode",
"variations": [
{ "key": "on", "value": true },
{ "key": "off", "value": false }
],
"defaultVariation": "off"
}

Flag String

{
"key": "checkout-button-color",
"name": "Checkout Button Color",
"variations": [
{ "key": "green", "value": "#00FF00" },
{ "key": "blue", "value": "#0000FF" },
{ "key": "red", "value": "#FF0000" }
],
"defaultVariation": "green"
}

Flag JSON

{
"key": "pricing-config",
"name": "Pricing Configuration",
"variations": [
{
"key": "standard",
"value": {
"discount": 0,
"freeShipping": false
}
},
{
"key": "premium",
"value": {
"discount": 0.15,
"freeShipping": true
}
}
],
"defaultVariation": "standard"
}

Erros Comuns

CódigoErroDescrição
400VALIDATIONCampos obrigatorios ausentes ou inválidos
404NOT_FOUNDFeature flag nao encontrada
409CONFLICTFlag com mesma key ja existe na organização