Ir para o conteúdo

Atualizar configuração de campo do funil

PATCH/api/v1/pipelines/{seq}/fields/{field}

Adiciona, oculta ou configura a obrigatoriedade de um campo no funil e retorna o resultado. Todas as propriedades são opcionais; omitir preserva o valor atual. As listas de etapas substituem as regras somente deste funil. As regras de outros funis permanecem iguais. Todo identificador de etapa deve pertencer a este funil, ou a API responde 400.

  • isVisible: true inclui o campo no funil; false o oculta. Campos personalizados existentes começam ocultos em um novo funil. Um novo campo também começa oculto nos funis existentes.
  • requiredStageIds define a obrigatoriedade validada pelo servidor. Criar ou mover um negócio para uma dessas etapas, ou uma etapa posterior, exige o preenchimento. Caso contrário, responde 422 UNPROCESSABLE_ENTITY, com os campos ausentes em fieldErrors, tanto pelo aplicativo quanto pela API. Uma regra na etapa de perda vale somente nela. Movimentações por automação são isentas.
  • isRequired marca o campo como obrigatório no funil para os formulários do aplicativo. Sozinho, não impõe uma validação no servidor: use requiredStageIds para exigir o preenchimento também por API. isRequired: true e uma lista requiredStageIds não vazia são incompatíveis e resultam em 400. Alterar isRequired sem enviar a lista limpa as etapas obrigatórias.
  • visibilityOverrideStageIds define as etapas que invertem isVisible. Alterar isVisible sem enviar essa lista limpa as exceções.
  • isSuggested e suggestedStageIds representam o nível sugerido. O aplicativo solicita o preenchimento ao mover o negócio para a etapa, mas permite pular. O servidor não o exige e a sugestão não se propaga às etapas posteriores. Obrigatório implica sugerido e visível: ativar isRequired também ativa isSuggested e isVisible. Uma etapa nas duas listas permanece apenas em requiredStageIds. Desativar isRequired sem enviar isSuggested desativa também a sugestão. Ocultar um campo que permanece sugerido ou obrigatório resulta em 400; envie também isSuggested: false e isRequired: false. isSuggested: true e uma lista suggestedStageIds não vazia também são incompatíveis. Alterar isSuggested sem enviar a lista limpa as etapas sugeridas.

Campos padrão aceitam somente requiredStageIds e suggestedStageIds; outras propriedades resultam em 400. Exige settings.pipelines.

Exemplos

A URL usa o servidor de produção. Defina PIPEFACIL_API_KEY e as variáveis de caminho (como SEQ ou ID) com os identificadores reais. Ajuste o corpo antes de executar: requisições de escrita alteram dados do workspace.

cURL

curl --request PATCH \
  --url "https://pipefacil-server.matchsales.com.br/api/v1/pipelines/$SEQ/fields/$FIELD" \
  --header "Authorization: Bearer $PIPEFACIL_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "isVisible": true,
  "requiredStageIds": [
    "stage-id-of-proposal"
  ]
}'
JavaScript
const response = await fetch(`https://pipefacil-server.matchsales.com.br/api/v1/pipelines/${process.env.SEQ}/fields/${process.env.FIELD}`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${process.env.PIPEFACIL_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "isVisible": true,
  "requiredStageIds": [
    "stage-id-of-proposal"
  ]
}),
});

if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const text = await response.text();
const data = text ? JSON.parse(text) : null;
Python
import os
import json
import requests

response = requests.request(
    "PATCH",
    f"https://pipefacil-server.matchsales.com.br/api/v1/pipelines/{os.environ['SEQ']}/fields/{os.environ['FIELD']}",
    headers={"Authorization": f"Bearer {os.environ['PIPEFACIL_API_KEY']}"},
    json=json.loads("{\n  \"isVisible\": true,\n  \"requiredStageIds\": [\n    \"stage-id-of-proposal\"\n  ]\n}"),
)
response.raise_for_status()
data = response.json() if response.content else None

Parâmetros

NomeLocalTipoObrigatórioDescrição
seqpathintegerSimNúmero sequencial do funil no workspace (seq).
fieldpathstringSimIdentificador de campo personalizado de negócio (GET /api/v1/custom-fields?entity=deal) ou uma chave padrão: value, name, email, phone, expectedCloseAt.

Corpo da requisição

Content-Type: application/json · obrigatório

{
  "isVisible": true,
  "requiredStageIds": [
    "stage-id-of-proposal"
  ]
}
CampoTipoObrigatório no objetoDescrição
isVisiblebooleanNãoSomente campos personalizados.
isRequiredbooleanNãoSomente campos personalizados. Não impõe exigência no servidor; consulte requiredStageIds. Incompatível com uma lista requiredStageIds não vazia; alterar limpa a lista, a menos que ela seja enviada.
requiredStageIdsarrayNãoSubstitui as etapas deste funil que exigem o campo. [] limpa a lista.
visibilityOverrideStageIdsarrayNãoSomente campos personalizados. Substitui as etapas que invertem isVisible neste funil.
isSuggestedbooleanNãoSomente campos personalizados. Sem exigência no servidor. Incompatível com uma lista suggestedStageIds não vazia. Alterar limpa a lista, salvo quando enviada. É verdadeiro enquanto isRequired for verdadeiro; desligar isRequired desliga a sugestão, a menos que isSuggested seja enviado.
suggestedStageIdsarrayNãoSubstitui as etapas deste funil que sugerem o preenchimento. [] limpa a lista. Etapas também presentes em requiredStageIds permanecem apenas como obrigatórias.
Esquema OpenAPI
{
  "type": "object",
  "description": "Todas as propriedades são opcionais; omitir preserva o valor atual.",
  "properties": {
    "isVisible": {
      "type": "boolean",
      "description": "Somente campos personalizados."
    },
    "isRequired": {
      "type": "boolean",
      "description": "Somente campos personalizados. Não impõe exigência no servidor; consulte `requiredStageIds`. Incompatível com uma lista `requiredStageIds` não vazia; alterar limpa a lista, a menos que ela seja enviada."
    },
    "requiredStageIds": {
      "type": "array",
      "maxItems": 200,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "description": "Substitui as etapas deste funil que exigem o campo. `[]` limpa a lista."
    },
    "visibilityOverrideStageIds": {
      "type": "array",
      "maxItems": 200,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "description": "Somente campos personalizados. Substitui as etapas que invertem `isVisible` neste funil."
    },
    "isSuggested": {
      "type": "boolean",
      "description": "Somente campos personalizados. Sem exigência no servidor. Incompatível com uma lista suggestedStageIds não vazia. Alterar limpa a lista, salvo quando enviada. É verdadeiro enquanto isRequired for verdadeiro; desligar isRequired desliga a sugestão, a menos que isSuggested seja enviado."
    },
    "suggestedStageIds": {
      "type": "array",
      "maxItems": 200,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "description": "Substitui as etapas deste funil que sugerem o preenchimento. `[]` limpa a lista. Etapas também presentes em requiredStageIds permanecem apenas como obrigatórias."
    }
  },
  "example": {
    "isVisible": true,
    "requiredStageIds": [
      "stage-id-of-proposal"
    ]
  }
}

Respostas

200Sucesso
CampoTipoDescrição
dataPipelineFieldSettingsConfiguração de um campo de negócio neste funil. Os identificadores seguem a ordem das etapas do funil.
data.fieldstringID do campo personalizado ou chave do campo padrão.
data.kindstringValores: standard, custom.
data.namestring—
data.slugstringChave do valor em customFields do negócio; null para campo padrão. Aceita null.
data.isVisiblebooleanIndica se o campo aparece no funil. null para campo padrão. Aceita null.
data.isRequiredbooleanSinaliza obrigatoriedade nos formulários do aplicativo, sem validação do servidor por si só. null para campo padrão. Aceita null.
data.requiredStageIdsarrayEtapas a partir das quais o campo é obrigatório no servidor. Lista vazia quando não há exigência.
data.visibilityOverrideStageIdsarrayEtapas que invertem isVisible. null para campo padrão. Aceita null.
data.isSuggestedbooleanSinaliza sugestão nos formulários do aplicativo em toda movimentação, com opção de pular. Sem exigência no servidor. Sempre true quando isRequired é verdadeiro. null para campo padrão. Aceita null.
data.suggestedStageIdsarrayEtapas onde o aplicativo sugere o preenchimento, com opção de pular e sem propagação. Não repete etapas de requiredStageIds. Lista vazia quando não há sugestão.
messagestringAceita null.
Esquema OpenAPI
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/PipelineFieldSettings"
    },
    "message": {
      "type": "string",
      "nullable": true
    }
  }
}
400Falha de validação dos campos; `fieldErrors` contém os erros.
CampoTipoDescrição
errorstring—
codestringValores: BAD_REQUEST, VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, FEATURE_DISABLED, NOT_FOUND, CONFLICT, QUOTA_EXCEEDED, UNPROCESSABLE_ENTITY, INTERNAL_ERROR, SERVICE_UNAVAILABLE.
requestIdstring—
detailsstringAceita null.
fieldErrorsarrayAceita null.
fieldErrors[].fieldstring—
fieldErrors[].messagestring—
Esquema OpenAPI
{
  "type": "object",
  "description": "Formato padrão de erro. `details` e `fieldErrors` são omitidos quando ausentes.",
  "properties": {
    "error": {
      "type": "string"
    },
    "code": {
      "type": "string",
      "enum": [
        "BAD_REQUEST",
        "VALIDATION_ERROR",
        "UNAUTHORIZED",
        "FORBIDDEN",
        "FEATURE_DISABLED",
        "NOT_FOUND",
        "CONFLICT",
        "QUOTA_EXCEEDED",
        "UNPROCESSABLE_ENTITY",
        "INTERNAL_ERROR",
        "SERVICE_UNAVAILABLE"
      ]
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "type": "string",
      "nullable": true
    },
    "fieldErrors": {
      "type": "array",
      "nullable": true,
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "error",
    "code",
    "requestId"
  ]
}
401Chave ausente, malformada, desconhecida, revogada ou expirada, ou membro emissor inativo.
CampoTipoDescrição
errorstring—
codestringValores: BAD_REQUEST, VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, FEATURE_DISABLED, NOT_FOUND, CONFLICT, QUOTA_EXCEEDED, UNPROCESSABLE_ENTITY, INTERNAL_ERROR, SERVICE_UNAVAILABLE.
requestIdstring—
detailsstringAceita null.
fieldErrorsarrayAceita null.
fieldErrors[].fieldstring—
fieldErrors[].messagestring—
Esquema OpenAPI
{
  "type": "object",
  "description": "Formato padrão de erro. `details` e `fieldErrors` são omitidos quando ausentes.",
  "properties": {
    "error": {
      "type": "string"
    },
    "code": {
      "type": "string",
      "enum": [
        "BAD_REQUEST",
        "VALIDATION_ERROR",
        "UNAUTHORIZED",
        "FORBIDDEN",
        "FEATURE_DISABLED",
        "NOT_FOUND",
        "CONFLICT",
        "QUOTA_EXCEEDED",
        "UNPROCESSABLE_ENTITY",
        "INTERNAL_ERROR",
        "SERVICE_UNAVAILABLE"
      ]
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "type": "string",
      "nullable": true
    },
    "fieldErrors": {
      "type": "array",
      "nullable": true,
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "error",
    "code",
    "requestId"
  ]
}
403Autenticado, mas sem acesso: falta de permissão (`FORBIDDEN`), recurso desligado no workspace (`FEATURE_DISABLED`) ou tentativa de acessar uma agenda não permitida.
CampoTipoDescrição
errorstring—
codestringValores: BAD_REQUEST, VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, FEATURE_DISABLED, NOT_FOUND, CONFLICT, QUOTA_EXCEEDED, UNPROCESSABLE_ENTITY, INTERNAL_ERROR, SERVICE_UNAVAILABLE.
requestIdstring—
detailsstringAceita null.
fieldErrorsarrayAceita null.
fieldErrors[].fieldstring—
fieldErrors[].messagestring—
Esquema OpenAPI
{
  "type": "object",
  "description": "Formato padrão de erro. `details` e `fieldErrors` são omitidos quando ausentes.",
  "properties": {
    "error": {
      "type": "string"
    },
    "code": {
      "type": "string",
      "enum": [
        "BAD_REQUEST",
        "VALIDATION_ERROR",
        "UNAUTHORIZED",
        "FORBIDDEN",
        "FEATURE_DISABLED",
        "NOT_FOUND",
        "CONFLICT",
        "QUOTA_EXCEEDED",
        "UNPROCESSABLE_ENTITY",
        "INTERNAL_ERROR",
        "SERVICE_UNAVAILABLE"
      ]
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "type": "string",
      "nullable": true
    },
    "fieldErrors": {
      "type": "array",
      "nullable": true,
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "error",
    "code",
    "requestId"
  ]
}
404Recurso não encontrado ou fora da visibilidade do membro.
CampoTipoDescrição
errorstring—
codestringValores: BAD_REQUEST, VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, FEATURE_DISABLED, NOT_FOUND, CONFLICT, QUOTA_EXCEEDED, UNPROCESSABLE_ENTITY, INTERNAL_ERROR, SERVICE_UNAVAILABLE.
requestIdstring—
detailsstringAceita null.
fieldErrorsarrayAceita null.
fieldErrors[].fieldstring—
fieldErrors[].messagestring—
Esquema OpenAPI
{
  "type": "object",
  "description": "Formato padrão de erro. `details` e `fieldErrors` são omitidos quando ausentes.",
  "properties": {
    "error": {
      "type": "string"
    },
    "code": {
      "type": "string",
      "enum": [
        "BAD_REQUEST",
        "VALIDATION_ERROR",
        "UNAUTHORIZED",
        "FORBIDDEN",
        "FEATURE_DISABLED",
        "NOT_FOUND",
        "CONFLICT",
        "QUOTA_EXCEEDED",
        "UNPROCESSABLE_ENTITY",
        "INTERNAL_ERROR",
        "SERVICE_UNAVAILABLE"
      ]
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "type": "string",
      "nullable": true
    },
    "fieldErrors": {
      "type": "array",
      "nullable": true,
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "error",
    "code",
    "requestId"
  ]
}
429Limite de requisições excedido por workspace ou IP.
CampoTipoDescrição
errorstring—
codestringValores: BAD_REQUEST, VALIDATION_ERROR, UNAUTHORIZED, FORBIDDEN, FEATURE_DISABLED, NOT_FOUND, CONFLICT, QUOTA_EXCEEDED, UNPROCESSABLE_ENTITY, INTERNAL_ERROR, SERVICE_UNAVAILABLE.
requestIdstring—
detailsstringAceita null.
fieldErrorsarrayAceita null.
fieldErrors[].fieldstring—
fieldErrors[].messagestring—
Esquema OpenAPI
{
  "type": "object",
  "description": "Formato padrão de erro. `details` e `fieldErrors` são omitidos quando ausentes.",
  "properties": {
    "error": {
      "type": "string"
    },
    "code": {
      "type": "string",
      "enum": [
        "BAD_REQUEST",
        "VALIDATION_ERROR",
        "UNAUTHORIZED",
        "FORBIDDEN",
        "FEATURE_DISABLED",
        "NOT_FOUND",
        "CONFLICT",
        "QUOTA_EXCEEDED",
        "UNPROCESSABLE_ENTITY",
        "INTERNAL_ERROR",
        "SERVICE_UNAVAILABLE"
      ]
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "type": "string",
      "nullable": true
    },
    "fieldErrors": {
      "type": "array",
      "nullable": true,
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "error",
    "code",
    "requestId"
  ]
}

Precisa de ajuda?

Encontrou um problema ou ficou com uma dúvida? Fale com a equipe pelo WhatsApp.

Chamar no WhatsApp