Date de fin des projets et des tâches

NOUVEAU v2.35.0 · xoCRM

Point de terminaison des projets

Gérez les projets et les tâches de xoCRM via l'API JSON : exportez, créez, mettez à jour et supprimez — y compris les descriptions multilingues, les chefs de projet, les affectations aux collaborateurs et l'historique des statuts.


Points de terminaison

MéthodePoint de terminaisonPortéeDescription
GET/Export/JSON/projectsprojects:readTous les projets (optionnel : ?include_tasks=1)
GET/Export/JSON/project/{id}projects:readProjet individuel
POST/Import/JSON/projectsprojects:writeCréer de nouveaux projets
PUT/Import/JSON/projectsprojects:writeMettre à jour des projets (project_id obligatoire)
DELETE/Delete/JSON/project/{id}projects:deleteSupprimer un projet (suppression en cascade, y compris les tâches)
GET/Export/JSON/project_tasksproject_tasks:readToutes les tâches (filtres ci-dessous)
GET/Export/JSON/project_task/{id}project_tasks:readTâche individuelle
POST/Import/JSON/project_tasksproject_tasks:writeCréer de nouvelles tâches (project_id obligatoire)
PUT/Import/JSON/project_tasksproject_tasks:writeMettre à jour des tâches (task_id obligatoire)
DELETE/Delete/JSON/project_task/{id}project_tasks:deleteSupprimer une tâche (le projet est conservé)

Filtre (exportation)

Projets

  • ?status={id} — Statut du projet
  • ?customer_id={id} — client associé
  • ?category_id={id} — Catégorie du projet
  • ?leader_admin_id={id} — chef de projet
  • ?is_private=0|1 — projets privés
  • ?date_from / ?date_to — Date de création
  • ?last_modified={ts} — modifié depuis
  • ?include_tasks=1 — tâches intégrées

Tâches

  • ?project_id={id} — Tâches d'un projet
  • ?status={id} — Statut des tâches
  • ?priority=1-5 — Priorité
  • ?admin_id={id} — responsable attribué
  • ?customer_id={id} / ?category_id={id}
  • ?due_from / ?due_to — Plage de dates d'échéance
  • ?progress_min / ?progress_max — Progression (0-100)
  • ?last_modified={ts} — modifié depuis

?language=de|en détermine la langue des noms de statuts/catégories. Les méta-blocs project_statuses[] et task_statuses[] fournissent toutes les valeurs de statut disponibles.


Structure de la charge utile (projet)

{
  "type": "projects",
  "data": [
    {
      "name": "Website-Relaunch",
      "description": "<p>Beschreibung (Default-Sprache)</p>",
      "descriptions": [
        { "language_id": 1, "project_name": "Website Relaunch", "project_description": "<p>EN</p>" }
      ],
      "customer_scope": "specific",
      "customer_ids": [4711],
      "date_start": "2026-07-01",
      "date_end": "2026-09-30",
      "is_private": false,
      "leader_admin_ids": [1],
      "category_ids": [2],
      "relationships": [ { "target_type": "orders_id", "target_id": 12345 }, { "target_type": "contracts_id", "target_id": 318 } ],
      "admin_id": 1,
      "status_comment": "Projekt via API angelegt"
    }
  ]
}

Structure de la charge utile (tâche)

{
  "type": "project_tasks",
  "data": [
    {
      "project_id": 126,
      "name": "Konzept erstellen",
      "priority": 4,
      "progress_percent": 0,
      "date_start": "2026-07-01",
      "due_date": "2026-07-15",
      "hours_planned": 8.5,
      "hours_actual": null,
      "status_id": 60,
      "assigned_admin_ids": [1],
      "admin_id": 1,
      "status_comment": "Aufgabe via API angelegt"
    }
  ]
}

Liens vers les commandes, les tickets et les contrats v2.122.11

relationships[] associe un projet à des commandes (orders_id), des tickets (ticket_id) et, depuis la v2.122.11, également à des contrats (contracts_id), comme dans le backend. Si la clé est présente dans l'enregistrement, PUT remplace tous les liens du projet.

{
  "type": "projects",
  "data": [{
    "project_id": 126,
    "relationships": [
      {"target_type": "orders_id",    "target_id": 12345},
      {"target_type": "ticket_id",    "target_id": 8812},
      {"target_type": "contracts_id", "target_id": 318}
    ],
    "admin_id": 1
  }]
}
Casjusqu’à la v2.122.10à partir de la v2.122.11
La clé est manquante ou nullles liens restent inchangéscomme auparavant
[]PUT supprime tous les liens du projetcomme auparavant
L'entrée avec contracts_idl'enregistrement échoue (« Relations non valides »)La relation est enregistrée
target_type inconnu, target_id ≤ 0 ou l'entrée n'est pas un objetL'enregistrement échoueL'enregistrement échoue, le message mentionne orders_id|ticket_id|contracts_id; aucune partie de cet enregistrement n'est écrite
relationships Ce n'est pas une liste, mais par exemple un textePOST crée le projet sans relations, PUT supprime silencieusement toutes les entréesL'enregistrement échoue (« Invalid relationships (must be a list …) »), rien n'est modifié
La commande, le ticket ou le contrat n’existe pasLa relation est tout de même enregistréecette relation n’est pas créée, mais le reste de l’enregistrement l’est ; warnings[] signale PROJECT_RELATIONSHIP
l’exportationsignale également les entrées sans type, qui ont entraîné l’échec d’une exportation renvoyéeuniquement les entrées des trois types
"warnings": [{"type": "PROJECT_RELATIONSHIP", "field": "relationships", "entity": "projects",
  "message": "relationships: not found: contracts_id 999 — these links were not written.", "first_occurrence": "record 1"}]
Exportation renvoyée : comme PUT remplace tous les liens et que l’importation n’écrit que les cibles existantes, une exportation renvoyée perd ses liens vers les commandes, tickets et contrats supprimés. Ils ne renvoyaient de toute façon vers rien ; l’avertissement les mentionne.

Remarques

  • NOUVEAU v2.36.0 : les projets et les tâches contiennent dans l’exportation status_history[] — toutes les entrées de statut, y compris les commentaires (comptes-rendus de réunion), progress_percent, status_name et user_name.
  • admin_id = administrateur responsable (enregistré commecreated_by/modified_by et dans l’historique des statuts comme user_id; si non spécifié = 0/système).
  • status_id est validé par rapport à la gestion des statuts (type « projects » ou « tasks ») ; s’il n’est pas spécifié, le statut par défaut est utilisé. Un changement de statut via PUT génère automatiquement une entrée dans l’historique des statuts avec status_comment — depuis la v2.40.0, status_comment crée également une entrée même sans changement de statut (notes de travail/comptes-rendus) ; pour les tâches, progress_percent est intégré à l’entrée en tant que pourcentage d’avancement.
  • descriptions[] est multilingue ; lors d’une requête PUT, la sémantique de fusion s’applique — seules les langues/champs fournis sont remplacés.
  • leader_admin_ids, relationships (projets) et assigned_admin_ids (tâches) ne sont remplacés que si la clé est présente dans la charge utile (replace-on-present).
  • Une requête POST avec un ID déjà attribué renvoie « Already exists » — dans ce cas, utilisez PUT (et inversement, « Not found » lors d’une requête PUT sur des ID inconnus).
  • Attention : la commande DELETE /project/{id} supprime en cascade toutes les tâches du projet. Les commandes, tickets et contrats associés sont uniquement dissociés, et non supprimés. La réponse contient deleted_tasks.