Atualizar valores de campos personalizados em registros usando parâmetros específicos para cada tipo de campo


Definir Valores de Campos Personalizados

Campos personalizados estendem a estrutura padrão de registros do Blue com dados específicos do negócio. Este endpoint permite que você defina ou atualize valores para qualquer campo personalizado em um registro. Cada tipo de campo requer parâmetros específicos para garantir a integridade dos dados e a validação adequada.

Exemplo Básico

mutation SetTextFieldValue {
  setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_xyz789"
    text: "Project specification document"
  })
}

Exemplo Avançado

mutation SetMultipleFieldTypes {
  # Set a date range field
  dateField: setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_date_001"
    startDate: "2024-01-15T09:00:00Z"
    endDate: "2024-01-31T17:00:00Z"
    timezone: "America/New_York"
  })
  
  # Set a multi-select field
  selectField: setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_select_002"
    customFieldOptionIds: ["option_high", "option_urgent", "option_client"]
  })
  
  # Set a location field
  locationField: setTodoCustomField(input: {
    todoId: "todo_abc123"
    customFieldId: "field_location_003"
    latitude: 40.7128
    longitude: -74.0060
  })
}

Parâmetros de Entrada

SetTodoCustomFieldInput

Parâmetro Tipo Obrigatório Descrição
todoId String! ✅ Sim O ID do registro a ser atualizado
customFieldId String! ✅ Sim O ID do campo personalizado
text String Não Para TEXT_SINGLE, TEXT_MULTI, PHONE, EMAIL, URL
number Float Não Para NUMBER, PERCENT, RATING
currency String Não Código da moeda para o tipo CURRENCY (ex: "USD")
checked Boolean Não Para campos CHECKBOX
startDate DateTime Não Data de início para campos DATE
endDate DateTime Não Data de término para campos de intervalo DATE
timezone String Não Fuso horário para campos DATE (ex: "America/New_York")
latitude Float Não Latitude para campos LOCATION
longitude Float Não Longitude para campos LOCATION
regionCode String Não Código da região para campos PHONE
countryCodes [String!] Não Códigos de países ISO para campos COUNTRY
customFieldOptionId String Não ID da opção para campos SELECT_SINGLE
customFieldOptionIds [String!] Não IDs das opções para campos SELECT_MULTI
customFieldReferenceTodoIds [String!] Não IDs dos registros para campos REFERENCE

Exemplos de Tipos de Campo

Campos de Texto

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_description"
    text: "Detailed project requirements and specifications"
  })
}

Campos Numéricos

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_budget"
    number: 15000.50
  })
}

Campos de Seleção

# Single Select
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_priority"
    customFieldOptionId: "option_high"
  })
}

# Multi Select
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_tags"
    customFieldOptionIds: ["option_frontend", "option_urgent", "option_v2"]
  })
}

Campos de Data

# Single Date
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_deadline"
    startDate: "2024-12-31T23:59:59Z"
  })
}

# Date Range
mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_project_timeline"
    startDate: "2024-01-01T00:00:00Z"
    endDate: "2024-03-31T23:59:59Z"
    timezone: "UTC"
  })
}

Campos de Localização

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_office_location"
    latitude: 37.7749
    longitude: -122.4194
  })
}

Campos de Moeda

mutation {
  setTodoCustomField(input: {
    todoId: "todo_123"
    customFieldId: "field_invoice_amount"
    number: 5000
    currency: "USD"
  })
}

Campos de Arquivo

Campos de arquivo usam mutações separadas:

# Add a file
mutation {
  createTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "field_attachments"
    fileUid: "file_upload_789"
  })
}

# Remove a file
mutation {
  deleteTodoCustomFieldFile(input: {
    todoId: "todo_123"
    customFieldId: "field_attachments"
    fileUid: "file_upload_789"
  })
}

Definindo Valores Durante a Criação de Registros

Você pode definir valores de campos personalizados ao criar um novo registro:

mutation {
  createTodo(input: {
    todoListId: "list_project_123"
    title: "New Feature Development"
    customFields: [
      {
        customFieldId: "field_priority"
        value: "high"
      },
      {
        customFieldId: "field_estimate"
        value: "8"
      }
    ]
  }) {
    id
    customFields {
      customField {
        name
      }
      value
    }
  }
}

Campos de Resposta

A mutação retorna um booleano indicando sucesso:

Campo Tipo Descrição
setTodoCustomField Boolean! Verdadeiro se a operação foi bem-sucedida

Permissões Necessárias

Os usuários devem ter permissão para editar tanto o registro quanto o campo personalizado específico:

Papel Pode Definir Valores de Campo
OWNER ✅ Sim
ADMIN ✅ Sim
MEMBER ✅ Sim (a menos que restrito por papel personalizado)
CLIENT ✅ Sim (a menos que restrito por papel personalizado)

Para usuários com papéis de projeto personalizados, o sistema realiza uma verificação em dois níveis:

  1. Primeiro, verifica se o usuário tem acesso ao nível do projeto
  2. Em seguida, verifica se o campo específico está marcado como editable na configuração do papel personalizado deles

Isso significa que um usuário pode ter acesso geral ao projeto, mas ainda estar restrito de editar certos campos com base em seu papel personalizado.

Respostas de Erro

Campo Personalizado Não Encontrado

{
  "errors": [{
    "message": "Custom field was not found.",
    "extensions": {
      "code": "CUSTOM_FIELD_NOT_FOUND"
    }
  }]
}

Acesso Não Autorizado

{
  "errors": [{
    "message": "You are not authorized.",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Valor de Campo Inválido

{
  "errors": [{
    "message": "Invalid value for field type NUMBER",
    "extensions": {
      "code": "VALIDATION_ERROR"
    }
  }]
}

Notas Importantes

  • Comportamento Upsert: A mutação cria um novo valor de campo se nenhum existir, ou atualiza o valor existente
  • Segurança de Tipo: Forneça apenas parâmetros que correspondam ao tipo de campo (ex: não envie text para um campo NUMBER)
  • Efeitos Colaterais: Definir valores aciona:
    • Recalculos de campos de fórmula
    • Regras de automação
    • Notificações de webhook
    • Entradas de log de atividade
    • Atualizações de gráfico
  • Comportamentos Especiais:
    • Campos CURRENCY lidam automaticamente com cálculos de conversão
    • Campos REFERENCE atualizam relacionamentos bidirecionais
    • Campos FORMULA são somente leitura e não podem ser definidos diretamente (são calculados automaticamente)
    • Campos LOOKUP são somente leitura e não podem ser definidos diretamente (eles puxam dados de registros referenciados)
    • Campos BUTTON acionam eventos de automação quando "clicados"
  • Validação: A API valida que:
    • O registro existe no projeto
    • O campo personalizado existe no mesmo projeto
    • O usuário tem permissões de edição
    • O valor corresponde aos requisitos do tipo de campo

Referência de Formato de Valor

Tipo de Campo Parâmetro Formato Exemplo
TEXT_SINGLE text String "Project Alpha"
TEXT_MULTI text String with newlines "Line 1\nLine 2"
NUMBER number Float 42.5
CURRENCY number + currency Float + ISO code 1000.00 + "USD"
PERCENT number Float (0-100) 75
RATING number Float (within min/max) 4.5
CHECKBOX checked Boolean true
DATE startDate ISO 8601 DateTime "2024-01-15T00:00:00Z"
DATE (range) startDate + endDate ISO 8601 DateTimes See example above
SELECT_SINGLE customFieldOptionId Option ID "option_123"
SELECT_MULTI customFieldOptionIds Array of Option IDs ["opt_1", "opt_2"]
PHONE text String "+1-555-123-4567"
EMAIL text String "user@example.com"
URL text String "https://example.com"
LOCATION latitude + longitude Floats 40.7128, -74.0060
COUNTRY countryCodes ISO 3166 codes ["US", "CA"]
REFERENCE customFieldReferenceTodoIds Array of record IDs ["todo_1", "todo_2"]
FORMULA N/A Read-only - calculated automatically N/A
LOOKUP N/A Read-only - pulls from references N/A

Endpoints Relacionados

Assistente de IA

As respostas são geradas usando IA e podem conter erros.

Como posso ajudá-lo?

Pergunte-me qualquer coisa sobre o Blue ou esta documentação.

Digite para enviar • Shift+Enter para nova linha • ⌘I para abrir