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ł utworzonyTODO_CUSTOM_FIELD
- Kiedy pole niestandardowe się zmieniaTODO_DUE_DATE
- Kiedy data wymagalności jest ustawiana/zmienianaTODO_MARKED_AS_COMPLETE
- Kiedy rekord jest oznaczany jako zakończonyTODO_MOVED
- Kiedy rekord jest przenoszony do innej listyTODO_TAG_ADDED
- Kiedy tag jest dodawanyTODO_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
- Lista pól niestandardowych - Wyświetl istniejące pola niestandardowe
- Aktualizuj pole niestandardowe - Zmodyfikuj właściwości pola
- Usuń pole niestandardowe - Usuń pole niestandardowe
- Utwórz opcje pola - Dodaj opcje do pól wyboru
- Ustaw wartości pól niestandardowych - Ustaw wartości w rekordach