Créez un nouvel enregistrement (todo) dans Blue avec des champs personnalisés, des étiquettes et des attributions optionnels.


Créer un enregistrement

La mutation createTodo vous permet de créer de nouveaux enregistrements dans Blue avec des options de configuration complètes, y compris des champs personnalisés, des étiquettes, des attributions, et plus encore. Les enregistrements peuvent être créés dans des listes spécifiques ou automatiquement placés dans la liste par défaut.

Exemple de base

Créez un enregistrement simple avec juste un titre :

mutation CreateRecord {
  createTodo(
    input: {
      title: "New Task"
    }
  ) {
    id
    title
    position
  }
}

Exemple avancé

Créez un enregistrement avec toutes les options disponibles :

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
    }
  }
}

Paramètres d'entrée

CreateTodoInput

Paramètre Type Requis Description
todoListId String Non ID de la liste todo à laquelle ajouter l'enregistrement. Si non fourni, utilise la première liste todo du projet
title String! ✅ Oui Titre de l'enregistrement (requis)
position Float Non Position personnalisée dans la liste. Si non fournie, utilise le paramètre de placement
placement CreateTodoInputPlacement Non Où placer l'enregistrement si la position n'est pas spécifiée (HAUT ou BAS)
startedAt DateTime Non Date/heure de début pour l'enregistrement
duedAt DateTime Non Date/heure d'échéance pour l'enregistrement
notify Boolean Non Indique si des notifications doivent être envoyées pour cette création d'enregistrement
description String Non Contenu de la description HTML (sera assaini)
assigneeIds [String!] Non Tableau d'IDs d'utilisateurs à attribuer à cet enregistrement
checklists [CreateChecklistWithoutTodoInput!] Non Tableau de listes de contrôle à créer avec l'enregistrement
customFields [CreateTodoInputCustomField] Non Tableau de valeurs de champs personnalisés
tags [CreateTodoTagInput!] Non Tableau d'étiquettes à attacher à l'enregistrement

Valeurs de CreateTodoInputPlacement

Valeur Description
TOP Placer en haut de la liste (position la plus élevée)
BOTTOM Placer en bas de la liste (position la plus basse)

CreateTodoTagInput

Paramètre Type Requis Description
id String Non* ID de l'étiquette existante à connecter
title String Non* Titre de l'étiquette (crée une nouvelle étiquette si elle n'existe pas)
color String Non Couleur hexadécimale pour la nouvelle étiquette (par défaut #4a9fff)

*Remarque : Vous devez fournir soit id (pour une étiquette existante) OU title (pour créer/trouver par titre)

CreateTodoInputCustomField

Paramètre Type Requis Description
customFieldId String Non ID du champ personnalisé
value String Non Valeur pour le champ personnalisé (voir le guide de format ci-dessous)

CreateChecklistWithoutTodoInput

Paramètre Type Requis Description
title String! ✅ Oui Titre de la liste de contrôle
position Float Non Position de la liste de contrôle dans l'enregistrement

Formats des valeurs de champ personnalisé

Lors de la définition des valeurs des champs personnalisés, utilisez ces formats en fonction du type de champ :

Type de champ Format Exemple
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"

Champs de réponse

La mutation renvoie un objet Todo avec des détails complets sur l'enregistrement :

Champ Type Description
id String! Identifiant unique pour l'enregistrement
uid String! Identifiant unique alternatif
title String! Titre de l'enregistrement
position Float! Position dans la liste
done Boolean! Statut d'achèvement
startedAt DateTime Date/heure de début
duedAt DateTime Date/heure d'échéance
todoList TodoList Détails de la liste todo associée
users [User!] Utilisateurs assignés
tags [Tag!] Étiquettes associées
checklists [Checklist!] Listes de contrôle associées
customFields [CustomFieldValue!] Valeurs des champs personnalisés

Permissions requises

Les utilisateurs doivent avoir un accès approprié au projet pour créer des enregistrements :

Niveau d'accès Peut créer des enregistrements
OWNER ✅ Oui
ADMIN ✅ Oui
MEMBER ✅ Oui
CLIENT ✅ Oui
COMMENT_ONLY ❌ Non
VIEW_ONLY ❌ Non

La mutation nécessite que le niveau d'accès du projet de l'utilisateur soit OWNER, ADMIN, MEMBER, ou CLIENT. Les utilisateurs avec les rôles VIEW_ONLY ou COMMENT_ONLY ne peuvent pas créer d'enregistrements.

Réponses d'erreur

ProjectNotFoundError

{
  "errors": [{
    "message": "Project was not found.",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Quand : Aucun contexte de projet n'est disponible pour l'utilisateur.

TodoListCreateTodoLimitError

{
  "errors": [{
    "message": "Todo list has reached the maximum number of todos.",
    "extensions": {
      "code": "TODO_LIST_CREATE_TODO_LIMIT_ERROR"
    }
  }]
}

Quand : La liste todo contient déjà 100 000 enregistrements (limite maximale).

TodoListNotFoundError

{
  "errors": [{
    "message": "Todo list was not found.",
    "extensions": {
      "code": "TODO_LIST_NOT_FOUND"
    }
  }]
}

Quand : La todoListId spécifiée n'existe pas ou l'utilisateur n'a pas accès.

CustomFieldValueParseError

{
  "errors": [{
    "message": "Invalid phone number format",
    "extensions": {
      "code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
    }
  }]
}

Quand : La valeur du champ personnalisé échoue à la validation (par exemple, téléphone invalide, évaluation hors limites).

Notes importantes

Performance

  • Chaque liste todo peut contenir jusqu'à 100 000 enregistrements
  • La création d'enregistrements déclenche plusieurs processus en arrière-plan (webhooks, automatisations, indexation de recherche)
  • Les opérations par lots sont plus efficaces que la création d'enregistrements un par un

Logique commerciale

  • Gestion de la position : La position par défaut est 65535.0 lorsque ni position ni placement ne sont spécifiés
  • Logique de date :
    • Si seule duedAt est fournie, startedAt est défini au début de ce jour
    • Si seule startedAt est fournie, duedAt est défini à la même valeur
  • Création d'étiquettes : De nouvelles étiquettes sont automatiquement créées si elles n'existent pas avec le titre/couleur spécifié
  • Sélection de liste : Si aucune todoListId n'est fournie, la première liste todo du projet est utilisée

Effets secondaires

La création d'un enregistrement déclenche :

  • Création d'entrée dans le journal d'activité
  • Notifications webhook
  • Mises à jour de l'index de recherche
  • Exécution de règles d'automatisation (si configuré)
  • Notifications par e-mail/push (si notify: true)
  • Calculs de champs personnalisés de formule et de durée
  • Mises à jour d'analytique et de graphiques

Points de terminaison associés

  • Lister les enregistrements : Interroger les todos pour récupérer les enregistrements existants
  • Mettre à jour l'enregistrement : Utiliser la mutation updateTodo pour modifier les enregistrements
  • Lister les champs personnalisés : Interroger pour obtenir les IDs de champs personnalisés disponibles
  • Lister les étiquettes : Interroger pour obtenir les IDs d'étiquettes existants
  • Lister les listes de todo : Interroger pour obtenir les IDs de listes de todo disponibles

Assistant IA

Les réponses sont générées par l'IA et peuvent contenir des erreurs.

Comment puis-je vous aider ?

Posez-moi toutes vos questions sur Blue ou cette documentation.

Entrez pour envoyer • Maj+Entrée pour une nouvelle ligne • ⌘I pour ouvrir