Dodaj nowe pola niestandardowe, aby rozszerzyć strukturę danych swojego projektu o konfiguracje specyficzne dla typu


Utwórz pole niestandardowe

Pola niestandardowe pozwalają dostosować Blue do specyficznych potrzeb Twojego biznesu, dodając strukturalne pola danych do Twoich rekordów. Ten punkt końcowy tworzy nowe pole niestandardowe z konfiguracjami specyficznymi dla każdego typu pola.

Podstawowy przykład

mutation CreateTextField {
  createCustomField(input: {
    name: "Customer Name"
    type: TEXT_SINGLE
    description: "Primary customer contact name"
  }) {
    id
    uid
    name
    type
    position
  }
}

Zaawansowany przykład

mutation CreateAdvancedField {
  createCustomField(input: {
    name: "Project Budget"
    type: CURRENCY
    description: "Total allocated budget for this project"
    currency: "USD"
    min: 0
    max: 1000000
  }) {
    id
    uid
    name
    type
    currency
    min
    max
    position
    createdAt
  }
}

Parametry wejściowe

CreateCustomFieldInput

Parametr Typ Wymagane Opis
name String! ✅ Tak Nazwa wyświetlana pola niestandardowego
type CustomFieldType! ✅ Tak Typ pola (zobacz typy poniżej)
description String Nie Opcjonalny opis wyjaśniający cel pola
min Float Nie Minimalna wartość dla pól NUMBER, RATING, PERCENT
max Float Nie Maksymalna wartość dla pól NUMBER, RATING, PERCENT
currency String Nie Kod waluty ISO dla pól CURRENCY
prefix String Nie Prefiks tekstowy dla pól UNIQUE_ID
isDueDate Boolean Nie Czy pole DATE reprezentuje datę wymagalności
formula JSON Nie Konfiguracja formuły dla pól FORMULA
referenceProjectId String Nie Docelowy identyfikator projektu dla pól REFERENCE
referenceMultiple Boolean Nie Zezwól na wiele wyborów w polach REFERENCE
referenceFilter TodoFilterInput Nie Opcje filtrów dla pól REFERENCE
lookupOption CustomFieldLookupOptionInput Nie Konfiguracja dla pól LOOKUP
timeDurationDisplay CustomFieldTimeDurationDisplayType Nie Format wyświetlania dla TIME_DURATION
timeDurationTargetTime Float Nie Docelowy czas w sekundach dla TIME_DURATION
timeDurationStartInput CustomFieldTimeDurationInput Nie Rozpoczęcie wyzwalacza dla TIME_DURATION
timeDurationEndInput CustomFieldTimeDurationInput Nie Zakończenie wyzwalacza dla TIME_DURATION
buttonType String Nie Typ akcji przycisku dla pól BUTTON
buttonConfirmText String Nie Komunikat potwierdzający dla pól BUTTON
useSequenceUniqueId Boolean Nie Użyj numeracji sekwencyjnej dla UNIQUE_ID
sequenceDigits Int Nie Liczba cyfr w sekwencji (np. 5 → 00001)
sequenceStartingNumber Int Nie Liczba początkowa dla sekwencji
currencyFieldId String Nie Pole waluty odniesienia dla CURRENCY_CONVERSION
conversionDate String Nie Data konwersji dla CURRENCY_CONVERSION
conversionDateType String Nie Typ daty konwersji dla CURRENCY_CONVERSION
metadata JSON Nie Dodatkowe metadane dla pola niestandardowego

Wartości CustomFieldType

Wartość Opis Wymagane parametry
TEXT_SINGLE Pole tekstowe jednoliniowe Brak
TEXT_MULTI Pole tekstowe wieloliniowe Brak
SELECT_SINGLE Rozwijane menu z pojedynczym wyborem Create options separately
SELECT_MULTI Rozwijane menu z wieloma wyborami Create options separately
CHECKBOX Pole typu Boolean (checkbox) Brak
RATING Pole oceny w gwiazdkach Optional: max (default: 5)
PHONE Numer telefonu z walidacją Brak
NUMBER Wprowadzenie numeryczne Optional: min, max
CURRENCY Kwota waluty Optional: currency, min, max
PERCENT Procent (0-100) Optional: min, max
EMAIL Email z walidacją Brak
URL URL strony internetowej z walidacją Brak
UNIQUE_ID Identyfikator generowany automatycznie Optional: prefix, useSequenceUniqueId
LOCATION Współrzędne geograficzne Brak
FILE Załącznik pliku Brak
DATE Wybór daty Optional: isDueDate
COUNTRY Wybór kraju Brak
FORMULA Pole obliczeniowe Required: formula
REFERENCE Link do innych rekordów Required: referenceProjectId
LOOKUP Pobierz dane z odniesień Required: lookupOption
TIME_DURATION Śledzenie czasu Required: duration inputs (see below)
BUTTON Przycisk akcji Optional: buttonType, buttonConfirmText
CURRENCY_CONVERSION Konwerter walut Special configuration

Przykłady konfiguracji typu pola

Pole numeryczne z ograniczeniami

mutation CreateQuantityField {
  createCustomField(input: {
    name: "Quantity"
    type: NUMBER
    description: "Number of items"
    min: 1
    max: 999
  }) {
    id
    name
    min
    max
  }
}

Pole walutowe

mutation CreateBudgetField {
  createCustomField(input: {
    name: "Budget"
    type: CURRENCY
    currency: "EUR"
    min: 0
  }) {
    id
    name
    currency
    min
  }
}

Pole daty z flagą daty wymagalności

mutation CreateDeadlineField {
  createCustomField(input: {
    name: "Project Deadline"
    type: DATE
    isDueDate: true
    description: "When this project must be completed"
  }) {
    id
    name
    isDueDate
  }
}

Pole odniesienia

mutation CreateRelatedTasksField {
  createCustomField(input: {
    name: "Dependencies"
    type: REFERENCE
    referenceProjectId: "proj_abc123"
    referenceMultiple: true
    referenceFilter: {
      statusIds: ["status_open", "status_inprogress"]
    }
  }) {
    id
    name
    referenceProjectId
    referenceMultiple
  }
}

Pole wyszukiwania

mutation CreateLookupField {
  createCustomField(input: {
    name: "Customer Email"
    type: LOOKUP
    lookupOption: {
      referenceId: "field_customer_ref"
      lookupId: "field_email"
      lookupType: TODO_CUSTOM_FIELD
    }
  }) {
    id
    name
    customFieldLookupOption {
      referenceId
      lookupId
      lookupType
    }
  }
}

Unikalny identyfikator z sekwencją

mutation CreateOrderNumberField {
  createCustomField(input: {
    name: "Order Number"
    type: UNIQUE_ID
    prefix: "ORD-"
    useSequenceUniqueId: true
    sequenceDigits: 6
    sequenceStartingNumber: 1000
  }) {
    id
    name
    prefix
  }
}

Pole czasu trwania

mutation CreateTimeTrackingField {
  createCustomField(input: {
    name: "Time to Resolution"
    type: TIME_DURATION
    timeDurationDisplay: FULL_DATE_STRING
    timeDurationStartInput: {
      type: TODO_CREATED_AT
      condition: FIRST
    }
    timeDurationEndInput: {
      type: TODO_MARKED_AS_COMPLETE
      condition: FIRST
    }
  }) {
    id
    name
  }
}

Ważne typy czasu trwania

  • TODO_CREATED_AT - Kiedy rekord został utworzony
  • TODO_CUSTOM_FIELD - Kiedy pole niestandardowe się zmienia
  • TODO_DUE_DATE - Kiedy data wymagalności jest ustawiana/zmieniana
  • TODO_MARKED_AS_COMPLETE - Kiedy rekord jest oznaczany jako zakończony
  • TODO_MOVED - Kiedy rekord jest przenoszony do innej listy
  • TODO_TAG_ADDED - Kiedy tag jest dodawany
  • TODO_ASSIGNEE_ADDED - Kiedy przypisany jest nowy użytkownik

Tworzenie opcji wyboru

Po utworzeniu pola SELECT_SINGLE lub SELECT_MULTI, dodaj opcje:

mutation CreateSelectOptions {
  createCustomFieldOptions(input: {
    customFieldId: "field_xyz789"
    customFieldOptions: [
      { title: "High", color: "#FF0000", position: 1 }
      { title: "Medium", color: "#FFA500", position: 2 }
      { title: "Low", color: "#00FF00", position: 3 }
    ]
  }) {
    id
    title
    color
    position
  }
}

Pola odpowiedzi

CustomField

Pole Typ Opis
id String! Unikalny identyfikator
uid String! Przyjazny dla użytkownika unikalny identyfikator
name String! Nazwa wyświetlana
type CustomFieldType! Typ pola
description String Opis pola
position Float! Pozycja w kolejności wyświetlania
createdAt DateTime! Znacznik czasu utworzenia
updatedAt DateTime! Znacznik czasu ostatniej aktualizacji
min Float Minimalna wartość (jeśli dotyczy)
max Float Maksymalna wartość (jeśli dotyczy)
currency String Kod waluty (typ CURRENCY)
prefix String Prefiks ID (typ UNIQUE_ID)
isDueDate Boolean Flaga daty wymagalności (typ DATE)
formula JSON Konfiguracja formuły (typ FORMULA)
referenceProjectId String Projekt odniesienia (typ REFERENCE)
customFieldLookupOption CustomFieldLookupOption Konfiguracja wyszukiwania (typ LOOKUP)

Wymagane uprawnienia

Tworzenie pól niestandardowych wymaga dostępu do projektu:

Rola Może tworzyć pola niestandardowe
OWNER ✅ Tak
ADMIN ✅ Tak
MEMBER ✅ Tak
CLIENT ❌ Nie

Uwaga: Niestandardowe role mogą mieć dodatkowe ograniczenia dotyczące zarządzania polami.

Odpowiedzi błędów

Nieprawidłowy typ pola

{
  "errors": [{
    "message": "Variable \"$input\" got invalid value \"INVALID\" at \"input.type\"; Value \"INVALID\" does not exist in \"CustomFieldType\" enum.",
    "extensions": {
      "code": "GRAPHQL_VALIDATION_FAILED"
    }
  }]
}

Projekt odniesienia nie znaleziony

{
  "errors": [{
    "message": "Reference project not found or access denied",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Brak wymaganej konfiguracji

{
  "errors": [{
    "message": "REFERENCE fields require referenceProjectId",
    "extensions": {
      "code": "VALIDATION_ERROR"
    }
  }]
}

Ważne uwagi

  • Pozycja pola: Automatycznie obliczana, aby pojawić się na końcu istniejących pól
  • Limity pól: Projekty mogą mieć limity dotyczące liczby pól niestandardowych
  • Natychmiastowa dostępność: Utworzone pola są natychmiast dostępne do użycia
  • Efekty uboczne: Tworzenie pola wyzwala:
    • Wpis w dzienniku aktywności
    • Aktualizacje w czasie rzeczywistym dla połączonych użytkowników
    • Powiadomienia webhook
    • Zadania w tle dla pól FORMULA, LOOKUP i UNIQUE_ID
  • Specjalne uwagi:
    • Pola REFERENCE wymagają dostępu do docelowego projektu
    • Pola LOOKUP zależą od istniejących pól REFERENCE
    • Pola FORMULA nie mogą odnosić się do siebie
    • Sekwencje UNIQUE_ID są przetwarzane asynchronicznie
    • Pola SELECT wymagają osobnego tworzenia opcji
  • Nazwa: Nazwy pól powinny być jasne i opisowe, tak jak pojawiają się w interfejsie użytkownika

Powiązane punkty końcowe

Asystent AI

Odpowiedzi są generowane przy użyciu sztucznej inteligencji i mogą zawierać błędy.

Jak mogę Ci pomóc?

Zapytaj mnie o cokolwiek dotyczącego Blue lub tej dokumentacji.

Wciśnij Enter, aby wysłać • Shift+Enter, aby dodać nową linię • ⌘I, aby otworzyć