Utwórz nowy rekord (zadanie) w Blue z opcjonalnymi polami niestandardowymi, tagami i przypisaniami.
Utwórz rekord
Mutacja createTodo pozwala na tworzenie nowych rekordów w Blue z kompleksowymi opcjami konfiguracyjnymi, w tym polami niestandardowymi, tagami, przypisaniami i innymi. Rekordy mogą być tworzone w określonych listach lub automatycznie umieszczane w domyślnej liście.
Podstawowy przykład
Utwórz prosty rekord z samym tytułem:
mutation CreateRecord {
createTodo(
input: {
title: "New Task"
}
) {
id
title
position
}
}
Zaawansowany przykład
Utwórz rekord ze wszystkimi dostępnymi opcjami:
mutation CreateRecordAdvanced {
createTodo(
input: {
todoListId: "clm4n8qwx000008l0g4oxdqn7"
title: "Product Launch Planning"
placement: TOP
description: "<p>Complete product launch preparation including marketing materials and documentation.</p>"
startedAt: "2025-01-15T09:00:00Z"
duedAt: "2025-02-01T17:00:00Z"
notify: true
assigneeIds: ["user_123", "user_456"]
tags: [
{ id: "tag_existing_123" }
{ title: "Priority", color: "#ff4b4b" }
{ title: "Marketing" }
]
customFields: [
{
customFieldId: "cf_budget_123"
value: "50000 USD"
}
{
customFieldId: "cf_status_456"
value: "In Progress"
}
]
checklists: [
{
title: "Pre-launch Checklist"
position: 1
}
]
}
) {
id
uid
title
position
startedAt
duedAt
todoList {
id
title
}
users {
id
fullName
}
tags {
id
title
color
}
}
}
Parametry wejściowe
CreateTodoInput
Parametr | Typ | Wymagany | Opis |
---|---|---|---|
todoListId |
String | Nie | ID listy zadań, do której ma zostać dodany rekord. Jeśli nie podano, używa pierwszej listy zadań w projekcie |
title |
String! | ✅ Tak | Tytuł rekordu (wymagany) |
position |
Float | Nie | Niestandardowa pozycja na liście. Jeśli nie podano, używa parametru umiejscowienia |
placement |
CreateTodoInputPlacement | Nie | Gdzie umieścić rekord, jeśli pozycja nie jest określona (GÓRA lub DÓŁ) |
startedAt |
DateTime | Nie | Data/godzina rozpoczęcia rekordu |
duedAt |
DateTime | Nie | Data/godzina terminu rekordu |
notify |
Boolean | Nie | Czy wysłać powiadomienia o utworzeniu tego rekordu |
description |
String | Nie | Zawartość opisu HTML (zostanie oczyszczona) |
assigneeIds |
[String!] | Nie | Tablica ID użytkowników do przypisania do tego rekordu |
checklists |
[CreateChecklistWithoutTodoInput!] | Nie | Tablica list kontrolnych do utworzenia wraz z rekordem |
customFields |
[CreateTodoInputCustomField] | Nie | Tablica wartości pól niestandardowych |
tags |
[CreateTodoTagInput!] | Nie | Tablica tagów do przypisania do rekordu |
Wartości CreateTodoInputPlacement
Wartość | Opis |
---|---|
TOP |
Umieść na górze listy (najwyższa pozycja) |
BOTTOM |
Umieść na dole listy (najniższa pozycja) |
CreateTodoTagInput
Parametr | Typ | Wymagany | Opis |
---|---|---|---|
id |
String | Nie* | ID istniejącego tagu do połączenia |
title |
String | Nie* | Tytuł tagu (tworzy nowy, jeśli nie istnieje) |
color |
String | Nie | Kolor szesnastkowy dla nowego tagu (domyślnie #4a9fff) |
*Uwaga: Musisz podać albo id
(dla istniejącego tagu) LUB title
(aby utworzyć/znaleźć według tytułu)
CreateTodoInputCustomField
Parametr | Typ | Wymagany | Opis |
---|---|---|---|
customFieldId |
String | Nie | ID pola niestandardowego |
value |
String | Nie | Wartość dla pola niestandardowego (zobacz przewodnik po formacie poniżej) |
CreateChecklistWithoutTodoInput
Parametr | Typ | Wymagany | Opis |
---|---|---|---|
title |
String! | ✅ Tak | Tytuł listy kontrolnej |
position |
Float | Nie | Pozycja listy kontrolnej w rekordzie |
Format wartości pól niestandardowych
Podczas ustawiania wartości pól niestandardowych użyj tych formatów w zależności od typu pola:
Typ pola | Format | Przykład |
---|---|---|
CHECKBOX |
"true", "1", or "checked" for checked | "true" |
COUNTRY |
Country name or ISO code | "United States" or "US" |
CURRENCY |
Amount with optional currency | "50000 USD" |
DATE |
YYYY-MM-DD or date range | "2025-01-15" or "2025-01-15,2025-01-20" |
NUMBER |
Numeric value | "42" |
PERCENT |
Numeric value (% optional) | "75" or "75%" |
RATING |
Numeric value within range | "4" (if max is 5) |
PHONE |
International phone format | "+1234567890" |
SELECT_SINGLE |
Custom field option ID | "option_123" |
SELECT_MULTI |
Comma-separated option IDs | "option_1,option_2" |
LOCATION |
Latitude,longitude | "40.7128,-74.0060" |
EMAIL |
Valid email address | "user@example.com" |
URL |
Valid URL | "https://example.com" |
TEXT |
Plain text value | "Any text content" |
Pola odpowiedzi
Mutacja zwraca obiekt Todo z kompleksowymi szczegółami rekordu:
Pole | Typ | Opis |
---|---|---|
id |
String! | Unikalny identyfikator rekordu |
uid |
String! | Alternatywny unikalny identyfikator |
title |
String! | Tytuł rekordu |
position |
Float! | Pozycja na liście |
done |
Boolean! | Status ukończenia |
startedAt |
DateTime | Data/godzina rozpoczęcia |
duedAt |
DateTime | Data/godzina terminu |
todoList |
TodoList | Szczegóły powiązanej listy zadań |
users |
[User!] | Przypisani użytkownicy |
tags |
[Tag!] | Powiązane tagi |
checklists |
[Checklist!] | Powiązane listy kontrolne |
customFields |
[CustomFieldValue!] | Wartości pól niestandardowych |
Wymagane uprawnienia
Użytkownicy muszą mieć odpowiedni dostęp do projektu, aby tworzyć rekordy:
Poziom dostępu | Może tworzyć rekordy |
---|---|
OWNER |
✅ Tak |
ADMIN |
✅ Tak |
MEMBER |
✅ Tak |
CLIENT |
✅ Tak |
COMMENT_ONLY |
❌ Nie |
VIEW_ONLY |
❌ Nie |
Mutacja wymaga, aby poziom dostępu użytkownika do projektu był OWNER
, ADMIN
, MEMBER
lub CLIENT
. Użytkownicy z rolami VIEW_ONLY
lub COMMENT_ONLY
nie mogą tworzyć rekordów.
Odpowiedzi błędów
ProjectNotFoundError
{
"errors": [{
"message": "Project was not found.",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Kiedy: Brak kontekstu projektu dostępnego dla użytkownika.
TodoListCreateTodoLimitError
{
"errors": [{
"message": "Todo list has reached the maximum number of todos.",
"extensions": {
"code": "TODO_LIST_CREATE_TODO_LIMIT_ERROR"
}
}]
}
Kiedy: Lista zadań już zawiera 100 000 rekordów (maksymalny limit).
TodoListNotFoundError
{
"errors": [{
"message": "Todo list was not found.",
"extensions": {
"code": "TODO_LIST_NOT_FOUND"
}
}]
}
Kiedy: Określony todoListId
nie istnieje lub użytkownik nie ma dostępu.
CustomFieldValueParseError
{
"errors": [{
"message": "Invalid phone number format",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Kiedy: Wartość pola niestandardowego nie przechodzi walidacji (np. nieprawidłowy telefon, ocena poza zakresem).
Ważne uwagi
Wydajność
- Każda lista zadań może zawierać do 100 000 rekordów
- Tworzenie rekordów uruchamia wiele procesów w tle (webhooki, automatyzacje, indeksowanie wyszukiwania)
- Operacje wsadowe są bardziej wydajne niż tworzenie rekordów pojedynczo
Logika biznesowa
- Zarządzanie pozycją: Domyślna pozycja to 65535.0, gdy ani
position
aniplacement
nie są określone - Logika daty:
- Jeśli podano tylko
duedAt
,startedAt
jest ustawiane na początek tego dnia - Jeśli podano tylko
startedAt
,duedAt
jest ustawiane na tę samą wartość
- Jeśli podano tylko
- Tworzenie tagów: Nowe tagi są automatycznie tworzone, jeśli nie istnieją z określonym tytułem/kolorem
- Wybór listy: Jeśli nie podano
todoListId
, używana jest pierwsza lista zadań w projekcie
Efekty uboczne
Tworzenie rekordu uruchamia:
- Tworzenie wpisu w dzienniku aktywności
- Powiadomienia webhook
- Aktualizacje indeksu wyszukiwania
- Wykonanie reguły automatyzacji (jeśli skonfigurowana)
- Powiadomienia e-mail/push (jeśli
notify: true
) - Obliczenia pól niestandardowych formuły i czasu trwania
- Aktualizacje analityki i wykresów
Powiązane punkty końcowe
- Lista rekordów: Zapytanie o zadania w celu pobrania istniejących rekordów
- Aktualizuj rekord: Użyj mutacji updateTodo, aby zmodyfikować rekordy
- Lista pól niestandardowych: Zapytanie w celu uzyskania dostępnych ID pól niestandardowych
- Lista tagów: Zapytanie w celu uzyskania istniejących ID tagów
- Lista list zadań: Zapytanie w celu uzyskania dostępnych ID list zadań