Campos personalizados

Defina campos personalizados de contato. O id retornado aqui é a CHAVE de custom_fields em TODA a API — tanto ao criar/atualizar/importar quanto no detalhe do contato — e é aqui que moram o rótulo e o tipo de cada campo. O slug é derivado do label pelo servidor e é imutável após a criação. A remoção é soft delete. Todos os endpoints exigem plano Enterprise.

escopo: custom_fields:readEnterprise

Lista as definições de campos personalizados ativas.

Resposta (200)

Corpo da resposta
{
  "success": true,
  "data": {
    "fields": [
      {
        "id": "<uuid>",
        "slug": "lead_source",
        "label": "Origem",
        "field_type": "text",
        "select_options": [],
        "ai_description": "De onde o lead veio",
        "is_required": false,
        "display_order": 1,
        "created_at": "2026-07-01T14:00:00.000Z"
      }
    ]
  }
}

Exemplo

curl
curl -s -H "Authorization: Bearer <sua-key>" https://www.prosalab.com/api/v1/custom-fields
escopo: custom_fields:writeEnterprise

Cria uma definição de campo personalizado. O slug é derivado do label pelo servidor.

  • field_type aceita: text, number, date, boolean, select, email, phone, url, currency, cpf.
  • select_options só é usado quando field_type = select.
  • Não há limite de quantidade de campos personalizados por empresa.

Modelo de envio

Corpo da requisição
{
  "label": "Placa do carro",
  "field_type": "text"
}

Resposta (201)

Corpo da resposta
{
  "success": true,
  "data": {
    "field": {
      "id": "<uuid>",
      "slug": "placa_do_carro",
      "label": "Placa do carro",
      "field_type": "text",
      "select_options": [],
      "ai_description": null,
      "is_required": false,
      "display_order": 4,
      "created_at": "2026-07-16T18:00:00.000Z"
    }
  }
}

Erros

StatusCódigoQuando ocorre
409FIELD_EXISTSJá existe campo com o mesmo slug (derivado do label) — inclusive um campo removido (soft delete), que continua ocupando o slug
422VALIDATION_ERRORLabel sem letras ou números (slug derivado vazio)
422RESERVED_FIELDLabel corresponde a um campo nativo/reservado do sistema

Exemplo

curl
curl -s -X POST -H "Authorization: Bearer <sua-key>" -H "Content-Type: application/json" \
  -d '{"label":"Placa do carro","field_type":"text"}' \
  https://www.prosalab.com/api/v1/custom-fields
escopo: custom_fields:writeEnterprise

Edita o rótulo, opções ou obrigatoriedade do campo (o slug é imutável).

Modelo de envio

Corpo da requisição
{
  "label": "Placa"
}

Resposta (200)

Corpo da resposta
{
  "success": true,
  "data": {
    "field": {
      "id": "<uuid>",
      "slug": "placa_do_carro",
      "label": "Placa",
      "field_type": "text",
      "select_options": [],
      "ai_description": null,
      "is_required": false,
      "display_order": 4,
      "created_at": "2026-07-16T18:00:00.000Z"
    }
  }
}

Erros

StatusCódigoQuando ocorre
404NOT_FOUNDCampo não existe ou pertence a outra empresa

Exemplo

curl
curl -s -X PATCH -H "Authorization: Bearer <sua-key>" -H "Content-Type: application/json" \
  -d '{"label":"Placa"}' \
  https://www.prosalab.com/api/v1/custom-fields/{id}
escopo: custom_fields:writeEnterprise

Desativa o campo personalizado (soft delete — idempotente).

Resposta (200)

Corpo da resposta
{
  "success": true,
  "data": {
    "id": "<uuid>"
  }
}

Erros

StatusCódigoQuando ocorre
404NOT_FOUNDCampo não existe ou pertence a outra empresa

Exemplo

curl
curl -s -X DELETE -H "Authorization: Bearer <sua-key>" https://www.prosalab.com/api/v1/custom-fields/{id}
Campos personalizados — Prosalab Developers