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 ani placement 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ść
  • 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ń

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ć