Fügen Sie neue benutzerdefinierte Felder hinzu, um die Datenstruktur Ihres Projekts mit typenspezifischen Konfigurationen zu erweitern
Erstellen eines benutzerdefinierten Feldes
Benutzerdefinierte Felder ermöglichen es Ihnen, Blue an Ihre spezifischen Geschäftsbedürfnisse anzupassen, indem Sie strukturierte Datenfelder zu Ihren Datensätzen hinzufügen. Dieser Endpunkt erstellt ein neues benutzerdefiniertes Feld mit konfigurationsspezifischen Einstellungen für jeden Feldtyp.
Einfaches Beispiel
mutation CreateTextField {
createCustomField(input: {
name: "Customer Name"
type: TEXT_SINGLE
description: "Primary customer contact name"
}) {
id
uid
name
type
position
}
}
Fortgeschrittenes Beispiel
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
}
}
Eingabeparameter
CreateCustomFieldInput
Parameter | Typ | Erforderlich | Beschreibung |
---|---|---|---|
name |
String! | ✅ Ja | Der Anzeigename des benutzerdefinierten Feldes |
type |
CustomFieldType! | ✅ Ja | Der Feldtyp (siehe Typen unten) |
description |
String | Nein | Optionale Beschreibung, die den Zweck des Feldes erklärt |
min |
Float | Nein | Mindestwert für NUMBER-, RATING-, PERCENT-Felder |
max |
Float | Nein | Höchstwert für NUMBER-, RATING-, PERCENT-Felder |
currency |
String | Nein | ISO-Währungs-Code für CURRENCY-Felder |
prefix |
String | Nein | Textpräfix für UNIQUE_ID-Felder |
isDueDate |
Boolean | Nein | Ob das DATUM-Feld ein Fälligkeitsdatum darstellt |
formula |
JSON | Nein | Formelkonfiguration für FORMEL-Felder |
referenceProjectId |
String | Nein | Zielprojekt-ID für REFERENZ-Felder |
referenceMultiple |
Boolean | Nein | Erlaubt mehrere Auswahlen in REFERENZ-Feldern |
referenceFilter |
TodoFilterInput | Nein | Filteroptionen für REFERENZ-Felder |
lookupOption |
CustomFieldLookupOptionInput | Nein | Konfiguration für LOOKUP-Felder |
timeDurationDisplay |
CustomFieldTimeDurationDisplayType | Nein | Anzeigeformat für TIME_DURATION |
timeDurationTargetTime |
Float | Nein | Zielzeit in Sekunden für TIME_DURATION |
timeDurationStartInput |
CustomFieldTimeDurationInput | Nein | Startauslöser für TIME_DURATION |
timeDurationEndInput |
CustomFieldTimeDurationInput | Nein | Endauslöser für TIME_DURATION |
buttonType |
String | Nein | Schaltflächenaktionstyp für BUTTON-Felder |
buttonConfirmText |
String | Nein | Bestätigungsaufforderung für BUTTON-Felder |
useSequenceUniqueId |
Boolean | Nein | Verwenden Sie eine fortlaufende Nummerierung für UNIQUE_ID |
sequenceDigits |
Int | Nein | Anzahl der Ziffern in der Sequenz (z. B. 5 → 00001) |
sequenceStartingNumber |
Int | Nein | Startnummer für die Sequenz |
currencyFieldId |
String | Nein | Referenzwährungsfeld für CURRENCY_CONVERSION |
conversionDate |
String | Nein | Umrechnungsdatum für CURRENCY_CONVERSION |
conversionDateType |
String | Nein | Art des Umrechnungsdatums für CURRENCY_CONVERSION |
metadata |
JSON | Nein | Zusätzliche Metadaten für das benutzerdefinierte Feld |
CustomFieldType-Werte
Wert | Beschreibung | Erforderliche Parameter |
---|---|---|
TEXT_SINGLE |
Eingabe für einzeiliges Textfeld | Keine |
TEXT_MULTI |
Mehrzeiliges Textfeld | Keine |
SELECT_SINGLE |
Dropdown mit einfacher Auswahl | Create options separately |
SELECT_MULTI |
Dropdown mit Mehrfachauswahl | Create options separately |
CHECKBOX |
Boolesches Kontrollkästchen | Keine |
RATING |
Sternebewertungsfeld | Optional: max (default: 5) |
PHONE |
Telefonnummer mit Validierung | Keine |
NUMBER |
Numerische Eingabe | Optional: min , max |
CURRENCY |
Währungsbetrag | Optional: currency , min , max |
PERCENT |
Prozentsatz (0-100) | Optional: min , max |
EMAIL |
E-Mail mit Validierung | Keine |
URL |
Web-URL mit Validierung | Keine |
UNIQUE_ID |
Automatisch generierte Kennung | Optional: prefix , useSequenceUniqueId |
LOCATION |
Geografische Koordinaten | Keine |
FILE |
Dateianhang | Keine |
DATE |
Datumswähler | Optional: isDueDate |
COUNTRY |
Länderauswahl | Keine |
FORMULA |
Berechnetes Feld | Required: formula |
REFERENCE |
Link zu anderen Datensätzen | Required: referenceProjectId |
LOOKUP |
Daten aus Referenzen abrufen | Required: lookupOption |
TIME_DURATION |
Zeiterfassung | Required: duration inputs (see below) |
BUTTON |
Aktionsschaltfläche | Optional: buttonType , buttonConfirmText |
CURRENCY_CONVERSION |
Währungsumrechner | Special configuration |
Beispiele zur Feldtypkonfiguration
Zahlenfeld mit Einschränkungen
mutation CreateQuantityField {
createCustomField(input: {
name: "Quantity"
type: NUMBER
description: "Number of items"
min: 1
max: 999
}) {
id
name
min
max
}
}
Währungsfeld
mutation CreateBudgetField {
createCustomField(input: {
name: "Budget"
type: CURRENCY
currency: "EUR"
min: 0
}) {
id
name
currency
min
}
}
Datumsfeld mit Fälligkeitsflag
mutation CreateDeadlineField {
createCustomField(input: {
name: "Project Deadline"
type: DATE
isDueDate: true
description: "When this project must be completed"
}) {
id
name
isDueDate
}
}
Referenzfeld
mutation CreateRelatedTasksField {
createCustomField(input: {
name: "Dependencies"
type: REFERENCE
referenceProjectId: "proj_abc123"
referenceMultiple: true
referenceFilter: {
statusIds: ["status_open", "status_inprogress"]
}
}) {
id
name
referenceProjectId
referenceMultiple
}
}
Lookup-Feld
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
}
}
}
Eindeutige ID mit Sequenz
mutation CreateOrderNumberField {
createCustomField(input: {
name: "Order Number"
type: UNIQUE_ID
prefix: "ORD-"
useSequenceUniqueId: true
sequenceDigits: 6
sequenceStartingNumber: 1000
}) {
id
name
prefix
}
}
Zeitdauerfeld
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
}
}
Gültige Zeitdauer-Typen
TODO_CREATED_AT
- Wann der Datensatz erstellt wurdeTODO_CUSTOM_FIELD
- Wann sich ein benutzerdefiniertes Feld ändertTODO_DUE_DATE
- Wann das Fälligkeitsdatum festgelegt/geändert wirdTODO_MARKED_AS_COMPLETE
- Wann der Datensatz als abgeschlossen markiert wirdTODO_MOVED
- Wann der Datensatz in eine andere Liste verschoben wirdTODO_TAG_ADDED
- Wann ein Tag hinzugefügt wirdTODO_ASSIGNEE_ADDED
- Wann ein Zuweiser hinzugefügt wird
Erstellen von Auswahloptionen
Nach dem Erstellen eines SELECT_SINGLE- oder SELECT_MULTI-Feldes fügen Sie Optionen hinzu:
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
}
}
Antwortfelder
CustomField
Feld | Typ | Beschreibung |
---|---|---|
id |
String! | Eindeutige Kennung |
uid |
String! | Benutzerfreundliche eindeutige ID |
name |
String! | Anzeigename |
type |
CustomFieldType! | Feldtyp |
description |
String | Feldbeschreibung |
position |
Float! | Anzeigeordnungsposition |
createdAt |
DateTime! | Erstellungszeitstempel |
updatedAt |
DateTime! | Letzter Aktualisierungszeitstempel |
min |
Float | Mindestwert (falls zutreffend) |
max |
Float | Höchstwert (falls zutreffend) |
currency |
String | Währungs-Code (CURRENCY-Typ) |
prefix |
String | ID-Präfix (UNIQUE_ID-Typ) |
isDueDate |
Boolean | Fälligkeitsflag (DATE-Typ) |
formula |
JSON | Formelkonfiguration (FORMULA-Typ) |
referenceProjectId |
String | Referenziertes Projekt (REFERENCE-Typ) |
customFieldLookupOption |
CustomFieldLookupOption | Lookup-Konfiguration (LOOKUP-Typ) |
Erforderliche Berechtigungen
Das Erstellen benutzerdefinierter Felder erfordert Projektzugriff:
Rolle | Kann benutzerdefinierte Felder erstellen |
---|---|
OWNER |
✅ Ja |
ADMIN |
✅ Ja |
MEMBER |
✅ Ja |
CLIENT |
❌ Nein |
Hinweis: Benutzerdefinierte Rollen können zusätzliche Einschränkungen bei der Feldverwaltung haben.
Fehlermeldungen
Ungültiger Feldtyp
{
"errors": [{
"message": "Variable \"$input\" got invalid value \"INVALID\" at \"input.type\"; Value \"INVALID\" does not exist in \"CustomFieldType\" enum.",
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}]
}
Referenzprojekt nicht gefunden
{
"errors": [{
"message": "Reference project not found or access denied",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Fehlende erforderliche Konfiguration
{
"errors": [{
"message": "REFERENCE fields require referenceProjectId",
"extensions": {
"code": "VALIDATION_ERROR"
}
}]
}
Wichtige Hinweise
- Feldposition: Automatisch berechnet, um am Ende der vorhandenen Felder angezeigt zu werden
- Feldgrenzen: Projekte können Grenzen für die Anzahl der benutzerdefinierten Felder haben
- Sofortige Verfügbarkeit: Erstellte Felder sind sofort verfügbar
- Nebenwirkungen: Das Erstellen eines Feldes löst aus:
- Eintrag im Aktivitätsprotokoll
- Echtzeit-Updates für verbundene Benutzer
- Webhook-Benachrichtigungen
- Hintergrundjobs für FORMULA-, LOOKUP- und UNIQUE_ID-Felder
- Besondere Überlegungen:
- REFERENZ-Felder erfordern Zugriff auf das Zielprojekt
- LOOKUP-Felder hängen von vorhandenen REFERENZ-Feldern ab
- FORMULA-Felder können sich nicht selbst referenzieren
- UNIQUE_ID-Sequenzen werden asynchron verarbeitet
- SELECT-Felder benötigen separat erstellte Optionen
- Benennung: Feldnamen sollten klar und beschreibend sein, wie sie in der Benutzeroberfläche erscheinen
Verwandte Endpunkte
- Liste benutzerdefinierter Felder - Bestehende benutzerdefinierte Felder anzeigen
- Aktualisieren eines benutzerdefinierten Feldes - Eigenschaften des Feldes ändern
- Löschen eines benutzerdefinierten Feldes - Ein benutzerdefiniertes Feld entfernen
- Erstellen von Feldoptionen - Optionen zu Auswahlfeldern hinzufügen
- Festlegen von benutzerdefinierten Feldwerten - Werte in Datensätzen festlegen