Ver .md

admin.plans.upsert

Cria ou altera um plano. Cria ou altera o plano identificado por key. Não há operação para apagar planos nesta etapa.

  • Endpoint: POST https://app.atomiks.com.br/api/v1/admin.plans.upsert (corpo JSON)
  • Quem pode chamar: super-admin da plataforma
  • Escopo da chave: admin:write
  • Grava dados: sim
  • Pela chave de API: sim
  • Ferramenta MCP: admin_plans_upsert
  • Ficha em JSON: https://app.atomiks.com.br/api/v1/openapi.json (operationId admin.plans.upsert)

Entrada

CampoTipoObrigatórioNota
keystringsim
namestringsim
isFreebooleansim
modulesstring[]sim
limitsobjectsim
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "minLength": 1,
      "pattern": "^[a-z0-9_-]+$"
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "isFree": {
      "type": "boolean"
    },
    "modules": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "limits": {
      "type": "object",
      "properties": {
        "users": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "channels": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "contacts": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mediaRetentionDays": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "users",
        "channels",
        "contacts",
        "mediaRetentionDays"
      ]
    }
  },
  "required": [
    "key",
    "name",
    "isFree",
    "modules",
    "limits"
  ]
}

Exemplo

curl -X POST https://app.atomiks.com.br/api/v1/admin.plans.upsert \
  -H "Authorization: Bearer $ATOMIKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"teste","name":"Teste","isFree":false,"modules":["messages","crm"],"limits":{"users":5,"channels":2,"contacts":10000,"mediaRetentionDays":7}}'

CLI:

node cli/atomiks.mjs admin.plans.upsert --json '{"key":"teste","name":"Teste","isFree":false,"modules":["messages","crm"],"limits":{"users":5,"channels":2,"contacts":10000,"mediaRetentionDays":7}}'

MCP: ferramenta admin_plans_upsert com a mesma entrada.

Saída

Sucesso: {"data": ...} com o formato abaixo.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "key": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "isFree": {
      "type": "boolean"
    },
    "modules": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "limits": {
      "type": "object",
      "properties": {
        "users": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "channels": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "contacts": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mediaRetentionDays": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "users",
        "channels",
        "contacts",
        "mediaRetentionDays"
      ],
      "additionalProperties": false
    },
    "accounts": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "id",
    "key",
    "name",
    "isFree",
    "modules",
    "limits"
  ],
  "additionalProperties": false
}

Erros

{"error": {"code", "message", "requestId"}}. Códigos: invalid_input (400), unauthorized (401), forbidden / account_pending / scope_missing (403), not_found (404), limit_reached (409), internal (500).