Обновите значения пользовательских полей в записях, используя специфические для типа параметры для каждого типа поля


Установить значения пользовательских полей

Пользовательские поля расширяют стандартную структуру записей Blue специфическими для бизнеса данными. Этот конечный пункт позволяет вам установить или обновить значения для любого пользовательского поля в записи. Каждый тип поля требует специфических параметров для обеспечения целостности данных и правильной валидации.

Простой пример

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

Расширенный пример

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
  })
}

Входные параметры

SetTodoCustomFieldInput

Параметр Тип Обязательный Описание
todoId String! ✅ Да Идентификатор записи для обновления
customFieldId String! ✅ Да Идентификатор пользовательского поля
text String Нет Для TEXT_SINGLE, TEXT_MULTI, PHONE, EMAIL, URL
number Float Нет Для NUMBER, PERCENT, RATING
currency String Нет Код валюты для типа CURRENCY (например, "USD")
checked Boolean Нет Для полей CHECKBOX
startDate DateTime Нет Дата начала для полей DATE
endDate DateTime Нет Дата окончания для полей диапазона DATE
timezone String Нет Часовой пояс для полей DATE (например, "America/New_York")
latitude Float Нет Широта для полей LOCATION
longitude Float Нет Долгота для полей LOCATION
regionCode String Нет Код региона для полей PHONE
countryCodes [String!] Нет ISO коды стран для полей COUNTRY
customFieldOptionId String Нет Идентификатор опции для полей SELECT_SINGLE
customFieldOptionIds [String!] Нет Идентификаторы опций для полей SELECT_MULTI
customFieldReferenceTodoIds [String!] Нет Идентификаторы записей для полей REFERENCE

Примеры типов полей

Текстовые поля

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

Числовые поля

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

Поля выбора

# 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"]
  })
}

Дата

# 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"
  })
}

Поля местоположения

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

Поля валюты

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

Поля файлов

Поля файлов используют отдельные мутации:

# 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"
  })
}

Установка значений при создании записи

Вы можете установить значения пользовательских полей при создании новой записи:

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
    }
  }
}

Поля ответа

Мутация возвращает логическое значение, указывающее на успех:

Поле Тип Описание
setTodoCustomField Boolean! True, если операция успешна

Обязательные разрешения

Пользователи должны иметь разрешение на редактирование как записи, так и конкретного пользовательского поля:

Роль Может устанавливать значения полей
OWNER ✅ Да
ADMIN ✅ Да
MEMBER ✅ Да (если не ограничено пользовательской ролью)
CLIENT ✅ Да (если не ограничено пользовательской ролью)

Для пользователей с пользовательскими ролями проекта система выполняет двухуровневую проверку:

  1. Сначала проверяется, есть ли у пользователя доступ на уровне проекта
  2. Затем проверяется, отмечено ли конкретное поле как editable в их конфигурации пользовательской роли

Это означает, что у пользователя может быть общий доступ к проекту, но он все равно может быть ограничен в редактировании определенных полей в зависимости от своей пользовательской роли.

Ответы об ошибках

Пользовательское поле не найдено

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

Неавторизованный доступ

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

Неверное значение поля

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

Важные заметки

  • Поведение Upsert: Мутация создает новое значение поля, если оно не существует, или обновляет существующее значение
  • Безопасность типов: Предоставляйте только параметры, которые соответствуют типу поля (например, не отправляйте text для поля NUMBER)
  • Побочные эффекты: Установка значений вызывает:
    • Пересчеты формульных полей
    • Правила автоматизации
    • Уведомления вебхуков
    • Записи в журнале активности
    • Обновления графиков
  • Специальные поведения:
    • Поля CURRENCY автоматически обрабатывают расчеты конверсии
    • Поля REFERENCE обновляют двунаправленные отношения
    • Поля FORMULA являются только для чтения и не могут быть установлены напрямую (они рассчитываются автоматически)
    • Поля LOOKUP являются только для чтения и не могут быть установлены напрямую (они извлекают данные из ссылочных записей)
    • Поля BUTTON вызывают события автоматизации при "нажатии"
  • Валидация: API проверяет, что:
    • Запись существует в проекте
    • Пользовательское поле существует в том же проекте
    • У пользователя есть разрешения на редактирование
    • Значение соответствует требованиям типа поля

Справочник формата значений

Тип поля Параметр Формат Пример
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

Связанные конечные точки

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия