{
  "info": {
    "name": "Sellio CRM REST API v1",
    "description": "Coleção oficial da API REST v1 do Sellio CRM. Autenticação por API key (Bearer). Defina as variáveis apiKey (sk_live_...) e baseUrl na coleção. Documentação: https://www.selliocrm.com/developers  ·  OpenAPI: https://www.selliocrm.com/api/v1/openapi.json  ·  Servidor MCP: https://www.selliocrm.com/api/mcp",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{apiKey}}", "type": "string" }]
  },
  "variable": [
    { "key": "baseUrl", "value": "https://www.selliocrm.com/api/v1", "type": "string" },
    { "key": "apiKey", "value": "sk_live_...", "type": "string" },
    { "key": "object", "value": "contact", "type": "string" },
    { "key": "recordId", "value": "00000000-0000-0000-0000-000000000000", "type": "string" }
  ],
  "item": [
    {
      "name": "Discovery",
      "item": [
        {
          "name": "List objects",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/objects", "host": ["{{baseUrl}}"], "path": ["objects"] },
            "description": "Lista os objetos (tipos de registro) do tenant da chave."
          }
        },
        {
          "name": "Describe object (fields)",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/objects/{{object}}", "host": ["{{baseUrl}}"], "path": ["objects", "{{object}}"] },
            "description": "Descoberta de campos: apiName, label, type, required, options (select), targetObject (lookup), unique, readOnly."
          }
        }
      ]
    },
    {
      "name": "Records",
      "item": [
        {
          "name": "List / search records",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/{{object}}?limit=50&offset=0&order=updated_at:desc",
              "host": ["{{baseUrl}}"],
              "path": ["{{object}}"],
              "query": [
                { "key": "limit", "value": "50", "description": "1 a 500 (padrão 50)" },
                { "key": "offset", "value": "0", "description": "Deslocamento de paginação (total vem no campo total)" },
                { "key": "search", "value": "", "description": "Busca por nome (ignora acento e caixa)", "disabled": true },
                { "key": "filter", "value": "amount:gte:1000", "description": "campo:operador:valor. Repita para combinar (E lógico, máx. 12). Operadores: eq, neq, contains, gt, lt, gte, lte, empty, not_empty. campo:valor sem operador = igualdade exata", "disabled": true },
                { "key": "filter", "value": "stage:eq:won", "description": "Segundo filtro (E lógico com o primeiro)", "disabled": true },
                { "key": "order", "value": "updated_at:desc", "description": "campo[:asc|desc]" }
              ]
            },
            "description": "Lista e pesquisa registros do objeto. Filtros ricos: repita filter=campo:operador:valor (E lógico, sem OU; máx. 12 por chamada)."
          }
        },
        {
          "name": "Get record by id",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/{{object}}/{{recordId}}", "host": ["{{baseUrl}}"], "path": ["{{object}}", "{{recordId}}"] },
            "description": "Obtém um registro pelo uuid."
          }
        },
        {
          "name": "Create record",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Ana Souza\",\n  \"email\": \"ana@acme.com\",\n  \"source\": \"site\"\n}" },
            "url": { "raw": "{{baseUrl}}/{{object}}", "host": ["{{baseUrl}}"], "path": ["{{object}}"] },
            "description": "Cria um registro. Corpo = { apiName: valor }. Chame Describe object antes para saber os campos."
          }
        },
        {
          "name": "Update record",
          "request": {
            "method": "PATCH",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"source\": \"indicacao\"\n}" },
            "url": { "raw": "{{baseUrl}}/{{object}}/{{recordId}}", "host": ["{{baseUrl}}"], "path": ["{{object}}", "{{recordId}}"] },
            "description": "Atualiza apenas os campos enviados (parcial)."
          }
        },
        {
          "name": "Delete record (soft → trash)",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/{{object}}/{{recordId}}", "host": ["{{baseUrl}}"], "path": ["{{object}}", "{{recordId}}"] },
            "description": "Exclusão SUAVE: o registro vai para a lixeira (reversível). Só funciona com uma API key que tenha o escopo de exclusão ligado (desligado por padrão); do contrário responde 403 errors.apiKeyDeleteDenied. Chaves somente-leitura nunca excluem."
          }
        },
        {
          "name": "Bulk create records",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"records\": [\n    { \"name\": \"Ana Souza\", \"email\": \"ana@acme.com\" },\n    { \"name\": \"Bruno Lima\", \"email\": \"bruno@acme.com\" }\n  ]\n}" },
            "url": { "raw": "{{baseUrl}}/{{object}}/bulk", "host": ["{{baseUrl}}"], "path": ["{{object}}", "bulk"] },
            "description": "Cria até 500 registros numa chamada. Sucesso parcial: a resposta traz results[] (index, ok, id | error), created e failed."
          }
        },
        {
          "name": "Bulk update records",
          "request": {
            "method": "PATCH",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"updates\": [\n    { \"id\": \"{{recordId}}\", \"source\": \"referral\" }\n  ]\n}" },
            "url": { "raw": "{{baseUrl}}/{{object}}/bulk", "host": ["{{baseUrl}}"], "path": ["{{object}}", "bulk"] },
            "description": "Atualiza até 500 registros numa chamada. Cada item traz o id e os campos a alterar. Sucesso parcial (results[], updated, failed)."
          }
        }
      ]
    },
    {
      "name": "Data (BI / automation)",
      "item": [
        {
          "name": "Flattened rows",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/data/{{object}}?page=1&pageSize=100",
              "host": ["{{baseUrl}}"],
              "path": ["data", "{{object}}"],
              "query": [
                { "key": "page", "value": "1", "description": "Página (1-based)" },
                { "key": "pageSize", "value": "100", "description": "1 a 200 (padrão 100)" },
                { "key": "updated_since", "value": "", "description": "ISO 8601: incremental por updated_at", "disabled": true },
                { "key": "created_since", "value": "", "description": "ISO 8601: incremental por created_at", "disabled": true },
                { "key": "filter", "value": "", "description": "campo:valor, igualdade exata", "disabled": true }
              ]
            },
            "description": "Registros achatados em linhas tabulares estáveis. Para Power BI/Tableau/Looker e polling de Zapier/Make/n8n."
          }
        }
      ]
    },
    {
      "name": "Activities",
      "item": [
        {
          "name": "List activities",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/activities",
              "host": ["{{baseUrl}}"],
              "path": ["activities"],
              "query": [{ "key": "recordId", "value": "", "description": "uuid de um registro (opcional)", "disabled": true }]
            },
            "description": "Atividades mais recentes do tenant, ou de um registro com ?recordId."
          }
        },
        {
          "name": "Create activity",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"type\": \"call\",\n  \"subject\": \"Ligar para o cliente\",\n  \"relatedObject\": \"contact\",\n  \"relatedRecordId\": \"{{recordId}}\"\n}" },
            "url": { "raw": "{{baseUrl}}/activities", "host": ["{{baseUrl}}"], "path": ["activities"] },
            "description": "Cria uma atividade (type: task|call|email|meeting|note; subject obrigatório) e a vincula opcionalmente a um registro."
          }
        }
      ]
    }
  ]
}
