> For the complete documentation index, see [llms.txt](https://docs.recital.ai/products/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.recital.ai/products/changelogs/version-26.8.x-06-10-2026.md).

# Version 26.8.x (06/10/2026)

## Quoi de neuf dans cette version ?

Cette version apporte des évolutions majeures pour accélérer vos traitements documentaires et fiabiliser la validation humaine :

* **Classification générative par LLM :** Déployez de nouveaux agents de classification capables de catégoriser vos documents et e-mails avec une grande précision grâce aux modèles de langage.
* **Automatisation enrichie dans les Workflows :** Planifiez vos exécutions avec des déclencheurs CRON, ajoutez une étape d'OCR indépendante et sécurisez vos chaînes de traitement avec la reprise sur erreur des sous-workflows.
* **Nouvelle expérience de Révision & Tri :** Bénéficiez d'une vue cluster avec réorganisation par glisser-déposer pour la classification, de listes déroulantes dépendantes en cascade, et d'une saisie ultra-fluide sans risque d'écrasement de données.

##

## Pour les utilisateurs de ces endpoints, voici les modifications à prendre en compte :

### 1) Review : <https://extract.review.recital.ai/>

| Endpoints                                                                                                                                                                                                                                                                                                                                                                                                                             | Avant (v26.6.24)                                                                                                                                                              | Après (v26.8.17)                                                                                                                                                                                                           | Description / Paramètres                                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET /extract-review/api/v1/queues/{queue_id}/documents/`                                                                                                                                                                                                                                                                                                                                                                             | <p><strong>Query param <code>sort\_by</code></strong> : <em>Inexistant</em><br><br><strong>Query param <code>sort\_desc</code></strong> : type <code>boolean                  | null</code></p>                                                                                                                                                                                                            | <p><strong>Query param <code>sort\_by</code></strong> : <strong>Ajouté</strong> (optionnel, enum : <code>\["id", "due\_date", "created\_at"]</code>, défaut : <code>"due\_date"</code>)<br><br><strong>Query param <code>sort\_desc</code></strong> : type strictement <code>boolean</code> (défaut : <code>true</code>)</p> | **Nouveau critère de tri :** Possibilité de trier les documents d'une file d'attente par ID, date d'échéance (`due_date`) ou date de création (`created_at`). Le typage de `sort_desc` n'accepte plus `null`. |
| `POST /extract-review/api/v1/queues/`                                                                                                                                                                                                                                                                                                                                                                                                 | **Body (`QueueCreate`)** : contenait le champ optionnel `use_latest` (`boolean \| null`)                                                                                      | **Body (`QueueCreate`)** : le champ `use_latest` a été **supprimé**                                                                                                                                                        | **Nettoyage du schéma de création :** Le paramètre `use_latest` n'est plus accepté lors de la création d'une file (il reste disponible en mise à jour `QueueUpdate`).                                                                                                                                                        |                                                                                                                                                                                                               |
| <p><code>POST /extract-review/api/v1/queues/{queue\_id}/maturities/</code><br><br><code>PATCH /extract-review/api/v1/queues/{queue\_id}/maturities/{maturity\_id}/</code></p>                                                                                                                                                                                                                                                         | <p><strong>Body (<code>MaturityCreate</code> / <code>MaturityUpdate</code>)</strong> :<br><code>days\_threshold</code> : <code>integer</code> sans bornes explicites</p>      | <p><strong>Body (<code>MaturityCreate</code> / <code>MaturityUpdate</code>)</strong> :<br><code>days\_threshold</code> : <code>integer</code><br><code>minimum: -2147483647</code><br><code>maximum: 2147483647</code></p> | **Support des seuils négatifs :** Autorise explicitement les valeurs négatives ou nulles pour le nombre de jours avant l'échéance (`days_threshold`), permettant de déclencher des niveaux de priorité après échéance dépassée.                                                                                              |                                                                                                                                                                                                               |
| `GET /extract-review/api/v1/queues/{queue_id}/download-layout/`                                                                                                                                                                                                                                                                                                                                                                       | <p><strong>Description OpenAPI :</strong><br><em>"Download the layout file for the active queue version."</em></p>                                                            | <p><strong>Description OpenAPI :</strong><br><em>"Download the layout file for the <strong>selected (or active)</strong> queue version."</em></p>                                                                          | **Précision fonctionnelle :** Clarification du comportement : l'endpoint télécharge le layout de la version demandée via `queue_version_id`, ou celui de la version active si non spécifié.                                                                                                                                  |                                                                                                                                                                                                               |
| <p><strong>Routes de récupération et manipulation de documents :</strong><br>• <code>GET /v1/.../documents/</code><br>• <code>POST /v1/.../documents/</code><br>• <code>POST /v1/.../documents/upload/</code><br>• <code>GET /v1/.../documents/{document\_id}/</code><br>• <code>DELETE /v1/.../documents/{document\_id}/</code><br>• <code>GET /v2/.../documents/</code><br>• <code>GET /v2/.../documents/{document\_id}/</code></p> | <p><strong>Schémas de réponse :</strong><br><code>DocumentOut</code> et <code>ReviewableDocument</code> ne contenaient <strong>pas</strong> de champ de date de création.</p> | <p><strong>Schémas de réponse :</strong><br>Ajout du champ obligatoire :<br><code>created\_at</code>: <code>string</code> (<code>date-time</code>) dans <code>DocumentOut</code> et <code>ReviewableDocument</code></p>    | **Enrichissement de la donnée retournée :** Les réponses JSON des documents incluent désormais systématiquement l'horodatage de création (`created_at`) dans la liste des champs obligatoires (`required`).                                                                                                                  |                                                                                                                                                                                                               |

***

#### Résumé des impacts pour vos intégrations

1. **Non-bloquant / Améliorations :**
   * Vous pouvez désormais exploiter le paramètre `?sort_by=created_at` ou `?sort_by=id` pour paginer ou afficher vos documents dans l'ordre voulu.
   * Vous pouvez configurer des niveaux de maturité/priorité avec des nombres de jours négatifs.
2. **Attention aux contrats d'API stricts :**
   * Si vos requêtes `POST /queues/` envoyaient le champ `"use_latest": ...`, retirez-le pour éviter de futures erreurs de validation.
   * Si vous désérialisez les réponses documents avec un validateur strict, prenez en compte le nouveau champ obligatoire `created_at`.

### 2) Authenticator : <https://extract.auth.recital.ai/>

| Endpoints de                                                                                                                                                                         | Avant (v26.6.24)                                                                                                                                                                                                      | Après (v26.8.17)                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Description / Paramètres                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <p><strong>LLM Providers</strong><br><code>GET /auth/api/v1/llm-providers/models</code></p>                                                                                          | **Route inexistante**                                                                                                                                                                                                 | <p><strong>Nouvelle route ajoutée</strong><br>Retourne la liste des modèles LLM supportés par fournisseur.</p>                                                                                                                                                                                                                                                                                                                                                             | Permet de récupérer les modèles LLM configurés et disponibles par défaut par provider (OpenAI, Scaleway, Azure, etc.).                                                   |
| <p><strong>Gestion des Groupes</strong><br><code>GET /auth/api/v1/groups/users/</code></p>                                                                                           | **Route inexistante**                                                                                                                                                                                                 | <p><strong>Nouvelle route ajoutée</strong><br>Retourne la liste des groupes avec le détail de leurs membres (<code>GroupOutWithUsers</code>).</p>                                                                                                                                                                                                                                                                                                                          | Route dédiée pour récupérer les groupes et leurs utilisateurs en un seul appel, remplaçant l'ancien paramètre query.                                                     |
| <p><strong>Gestion des Groupes</strong><br><code>GET /auth/api/v1/groups/</code></p>                                                                                                 | <p><strong>Paramètre query :</strong><br><code>with\_users</code> (<code>boolean</code>, défaut : <code>false</code>)<br><br><strong>Réponse :</strong><br><code>anyOf: \[GroupOut, GroupOutWithUsers]</code></p>     | <p><strong>Paramètre query <code>with\_users</code> supprimé</strong><br><br><strong>Réponse :</strong><br>Retourne strictement un tableau de <code>GroupOut</code>.</p>                                                                                                                                                                                                                                                                                                   | Séparation des responsabilités : cette route ne retourne plus que les groupes sans leurs membres. Pour inclure les membres, utiliser la nouvelle route `/groups/users/`. |
| <p><strong>Politique de mot de passe (Lecture)</strong><br><code>GET /auth/api/v1/organizations/{id}/policy/</code><br>⬇️<br><code>GET /auth/api/v1/organizations/policy/</code></p> | <p><strong>Route par ID :</strong><br><code>GET /organizations/{id}/policy/</code><br>Paramètre path <code>id</code> obligatoire.<br>Schéma réponse : <code>PasswordPolicyOut</code> (avec <code>org\_id</code>).</p> | <p><strong>Route globale :</strong><br><code>GET /organizations/policy/</code><br>Plus d'ID dans le path (basé sur le token).<br>Schéma réponse : <code>PasswordPolicy</code> (sans <code>org\_id</code>).</p>                                                                                                                                                                                                                                                             | Migration des politiques de mot de passe vers des variables d'environnement globales. L'ID d'organisation n'est plus requis dans l'URL.                                  |
| <p><strong>Politique de mot de passe (Écriture)</strong><br><code>PUT /auth/api/v1/organizations/policy/</code></p>                                                                  | <p><strong>Route existante</strong><br>Permettait de modifier les règles de mot de passe via <code>PasswordPolicyUpdate</code>.</p>                                                                                   | **Route supprimée**                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Comme les politiques de mot de passe sont désormais gérées par variables d'environnement au niveau infrastructure, elles ne sont plus modifiables via l'API.             |
| <p><strong>Métriques LLM & Workflows</strong><br><code>GET /auth/api/v1/metrics/</code></p>                                                                                          | <p><strong>Filtres existants standards :</strong><br><code>app</code>, <code>model\_id</code>, <code>agent\_id</code>, <code>workflow\_id</code>, etc.</p>                                                            | <p><strong>Nouveaux paramètres query ajoutés :</strong><br>• <code>collections</code> (<code>array\[string]</code>)<br>• <code>collection</code> (<code>string</code>)<br>• <code>llm\_models</code> (<code>array\[string]</code>)<br>• <code>llm\_model</code> (<code>string</code>)<br>• <code>workflow\_ids</code> (<code>array\[integer]</code>)<br>• <code>agent\_ids</code> (<code>array\[integer]</code>)<br>• <code>apps</code> (<code>array\[Product]</code>)</p> | Permet de filtrer et d'agréger les métriques par modèle de LLM, par collection et par listes multiples d'agents/workflows.                                               |
| <p><strong>Métriques Distinctes</strong><br><code>GET /auth/api/v1/metrics/distinct</code></p>                                                                                       | <p><strong>Paramètre <code>field</code> (enum) :</strong><br><code>action</code>, <code>agent\_id</code>, <code>workflow\_id</code>, <code>workflow\_uuid</code>, <code>model\_id</code>.</p>                         | <p><strong>Paramètre <code>field</code> (enum étendu) :</strong><br>Ajout de <code>collection</code> et <code>llm\_model</code>.<br><br><strong>Nouveaux paramètres query :</strong><br><code>workflow\_ids</code>, <code>llm\_models</code>, <code>agent\_ids</code>, <code>apps</code>.</p>                                                                                                                                                                              | Support de la recherche de valeurs distinctes pour les modèles de langage et les collections.                                                                            |
| <p><strong>Export des Métriques</strong><br><code>GET /auth/api/v1/metrics/download</code></p>                                                                                       | Paramètres de filtrage simples (singuliers).                                                                                                                                                                          | <p><strong>Nouveaux paramètres query ajoutés :</strong><br>• <code>collections</code>, <code>collection</code><br>• <code>llm\_models</code>, <code>llm\_model</code><br>• <code>workflow\_ids</code>, <code>agent\_ids</code>, <code>apps</code></p>                                                                                                                                                                                                                      | Aligne les capacités de filtrage de l'export CSV/download avec celles de l'endpoint de consultation.                                                                     |
| <p><strong>Requêtes Métriques Flexibles</strong><br><code>POST /auth/api/v1/metrics/flexible</code><br><br><code>POST /auth/api/v1/metrics/flexible/csv</code></p>                   | **Body (`FlexibleMetricsQuery`)** : filtres restreints aux IDs simples et actions.                                                                                                                                    | <p><strong>Body (<code>FlexibleMetricsQuery</code>) enrichi :</strong><br>Ajout des champs : <code>collection</code>, <code>collections</code>, <code>llm\_model</code>, <code>llm\_models</code>, <code>workflow\_ids</code>, <code>agent\_ids</code>, <code>apps</code>, <code>app</code>, <code>is\_test</code>.</p>                                                                                                                                                    | Autorise des requêtes analytiques dynamiques plus poussées sur les consommations de tokens LLM et les exécutions de test.                                                |
| <p><strong>Configuration OCR Organisation</strong><br><code>GET /auth/api/v1/ocr-config/</code><br><br><code>PATCH /auth/api/v1/ocr-config/</code></p>                               | Schémas `OrganizationOCRConfigOut` et `OrganizationOCRConfigUpdate` contenaient le champ `use_latest` (`boolean`).                                                                                                    | Le champ `use_latest` a été **supprimé** des schémas de réponse et de mise à jour.                                                                                                                                                                                                                                                                                                                                                                                         | Nettoyage de la configuration OCR d'organisation (`use_latest` n'est plus supporté ici).                                                                                 |
| <p><strong>Profil Utilisateur</strong><br><code>GET /auth/api/v1/users/me/</code><br><code>GET /auth/api/v1/users/{id}/</code><br><code>PUT /auth/api/v1/users/me/</code></p>        | Schémas `UserOut` et `UserUpdate` contenaient uniquement `performance_tabs`.                                                                                                                                          | Ajout du champ `activity_preferences` (`object \| null`) dans `UserOut` et `UserUpdate`.                                                                                                                                                                                                                                                                                                                                                                                   | Permet de sauvegarder et restituer les préférences d'affichage de l'utilisateur pour l'onglet Activité.                                                                  |
| <p><strong>Notifications</strong><br><code>GET /auth/api/v1/notifications/</code><br><code>POST /auth/api/v1/notifications/</code></p>                                               | L'enum `NotificationMessages` gérait l'upload, le training et les datasets d'emails.                                                                                                                                  | <p><strong>Nouvelles valeurs ajoutées à l'enum :</strong><br>• <code>blueprint\_publish:completed</code><br>• <code>blueprint\_publish:partial</code><br>• <code>blueprint\_publish:failed</code></p>                                                                                                                                                                                                                                                                      | Prise en charge des notifications liées à la publication des Blueprints.                                                                                                 |

***

#### Résumé des points d'attention (Breaking Changes)

1. **Suppression de `with_users` sur `/groups/` :** Si votre code appelait `GET /auth/api/v1/groups/?with_users=true`, vous devez désormais appeler la route dédiée `GET /auth/api/v1/groups/users/`.
2. **Politique de mot de passe non modifiable via API :** Le endpoint `PUT /organizations/policy/` est supprimé ; la configuration est maintenant gérée par les administrateurs système au niveau de l'infrastructure via variables d'environnement.
3. **Nouveaux filtres de métriques :** Vous pouvez désormais suivre avec précision l'utilisation des modèles LLM et des collections via les endpoints de métriques.

#### 3) Workflows : <https://extract.workflows.recital.ai/>

| Endpoints de                                                                                                                                                                                                                                                                                                              | Avant (v26.6.24)                                                                                                                                                                                                                                                        | Après (v26.8.17)                                                                                                                                                                                                                                                   | Description / Paramètres                                                                                                                                                                                                 |                                                                                  |                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| <p><strong>Planification CRON (Nouveau module)</strong><br><code>POST /workflows/api/v1/schedules/test</code></p>                                                                                                                                                                                                         | **Route inexistante**                                                                                                                                                                                                                                                   | <p><strong>Nouvelle route ajoutée</strong><br>Paramètres : <code>schedule</code> (expression cron requise), <code>executions</code> (nombre d'occurrences calculées).</p>                                                                                          | Permet de tester et prévisualiser les prochaines dates d'exécution d'une expression CRON avant de l'enregistrer.                                                                                                         |                                                                                  |                                                                                                                          |
| <p><strong>Planification CRON (Gestion)</strong><br><code>GET /workflows/api/v1/schedules/</code><br><code>POST /workflows/api/v1/schedules/</code></p>                                                                                                                                                                   | **Routes inexistantes**                                                                                                                                                                                                                                                 | <p><strong>Nouvelles routes ajoutées</strong><br>• <code>GET</code> : Liste paginée des planifications (<code>limit</code>, <code>offset</code>).<br>• <code>POST</code> : Création d'une planification (<code>ScheduleRequest</code>).</p>                        | Permet de lister et de créer des programmations récurrentes pour déclencher automatiquement des workflows.                                                                                                               |                                                                                  |                                                                                                                          |
| <p><strong>Planification CRON (Détail & Actions)</strong><br><code>GET /schedules/{schedule\_id}</code><br><code>PATCH /schedules/{schedule\_id}</code><br><code>DELETE /schedules/{schedule\_id}</code><br><code>POST /schedules/{schedule\_id}/enable</code><br><code>POST /schedules/{schedule\_id}/disable</code></p> | **Routes inexistantes**                                                                                                                                                                                                                                                 | <p><strong>Nouvelles routes ajoutées</strong><br>CRUD complet et activation / désactivation unitaire d'une planification par son <code>schedule\_id</code>.</p>                                                                                                    | Gestion du cycle de vie des planifications : mise à jour, suppression, mise en pause ou reprise de l'exécution automatique.                                                                                              |                                                                                  |                                                                                                                          |
| <p><strong>Rejeu par lots (Bulk Restart)</strong><br><code>POST /workflows/api/v1/jobs/restart</code></p>                                                                                                                                                                                                                 | <p><strong>Route inexistante</strong><br><em>(Seul le redémarrage unitaire par job <code>POST /jobs/{job\_id}/restart</code> existait)</em></p>                                                                                                                         | <p><strong>Nouvelle route ajoutée</strong><br>Paramètres query de filtrage : <code>workflow\_filter</code>, <code>step\_filter</code>, <code>states</code>, <code>status</code>, <code>from\_date</code>, <code>to\_date</code>, <code>file\_name</code>, etc.</p> | **Relance massive de jobs :** Permet de redémarrer en une seule requête un lot de jobs répondant à des critères spécifiques (ex : tous les jobs en échec sur une période). Retourne `{"restarted": int}`.                |                                                                                  |                                                                                                                          |
| <p><strong>Listing / Export des Workflows</strong><br><code>GET /workflows/api/v1/workflows/</code></p>                                                                                                                                                                                                                   | <p><strong>Listing des workflows :</strong><br>Listait tous les workflows avec filtres (<code>name</code>, <code>uuid</code>, <code>status</code>, <code>source</code>, <code>limit</code>, <code>offset</code>).<br>Retour : <code>Array\[WorkflowResponse]</code></p> | <p><strong>Export d'un workflow :</strong><br>Transformé en endpoint d'export.<br>Paramètre obligatoire : <code>workflow\_id</code> (<code>integer</code>).<br>Retour : fichier/objet d'export JSON.</p>                                                           | ⚠️ **Breaking change majeur :** L'endpoint `GET /workflows/` ne sert plus à lister les workflows mais à en exporter un. Pour lister les workflows, il faut désormais utiliser `GET /workflows/api/v1/workflows/by-uuid`. |                                                                                  |                                                                                                                          |
| <p><strong>Métadonnées de Workflows</strong><br><code>WorkflowResponse</code><br><code>WorkflowByUUIDResponse</code><br><em>(Toutes les routes retournant des workflows)</em></p>                                                                                                                                         | <p>Schémas de base :<br><code>id</code>, <code>name</code>, <code>status</code>, <code>uuid</code>, <code>created\_at</code>, etc.</p>                                                                                                                                  | <p><strong>Nouveaux champs ajoutés aux schémas :</strong><br>• <code>updated\_by</code> (<code>integer                                                                                                                                                             | null</code>) : ID de l'utilisateur auteur de la dernière modification.<br>• <code>last\_job\_update\_at</code> (<code>date-time                                                                                          | null</code>) : Horodatage du dernier job exécuté/mis à jour sur ce workflow.</p> | Permet d'assurer la traçabilité des modifications apportées aux workflows et d'identifier facilement l'activité récente. |
| <p><strong>Webhooks de Job</strong><br><code>JobStartWebhook</code><br><code>JobFailureWebhook</code><br><code>JobSuccessWebhook</code><br>etc.</p>                                                                                                                                                                       | Le champ `event` référençait le schéma `WebhookPayloadEvent`.                                                                                                                                                                                                           | Le champ `event` référence désormais le schéma `WebhookEvent`.                                                                                                                                                                                                     | Refactorisation interne du schéma enum des types d'événements webhook (`start`, `success`, `failure`, `state:change`, `custom`). Sans impact sur les valeurs.                                                            |                                                                                  |                                                                                                                          |

***

#### Résumé des points d'attention (Breaking Changes & Évolutions)

1. **🚨 Rupture sur `GET /workflows/api/v1/workflows/` :**
   * Si vos intégrations utilisaient cet appel pour lister les workflows de l'organisation, **cet endpoint nécessite désormais `workflow_id` et fait un export**.
   * **Action corrective :** Migrez vos requêtes de listing vers `GET /workflows/api/v1/workflows/by-uuid`.
2. **Nouvelle fonctionnalité majeure - CRON :**
   * Le module `/schedules/` vous permet d'automatiser le lancement de vos workflows directement depuis la plateforme sans outil externe de type Airflow ou cron système.
3. **Productivité - Rejeu en masse :**
   * L'endpoint `POST /workflows/api/v1/jobs/restart` simplifie grandement la remédiation en cas d'incident sur une étape de workflow en permettant de relancer des centaines de jobs filtrés en un seul appel.

#### 4) Extract : <https://extract.api.recital.ai/>

| Endpoints de                                                                                                                                                                                                                                                                                     | Avant (v26.6.24)                                                                                                                                | Après (v26.8.17)                                                                                                                                                                                                                                                                         | Description / Paramètres                                                                                                                                           |                                                                                                                                     |                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>Duplication de Dataset</strong><br><code>POST /extract/api/v1/dataset/{dataset\_id}/</code></p>                                                                                                                                                                                       | **Méthode POST inexistante** sur cette route                                                                                                    | <p><strong>Nouvelle méthode POST ajoutée</strong><br>Paramètres : <code>dataset\_id</code> (path), <code>destination\_dataset\_id</code> (query, optionnel).</p>                                                                                                                         | Permet de dupliquer un dataset complet (avec configuration, documents et annotations) vers un nouveau dataset ou vers un dataset cible existant.                   |                                                                                                                                     |                                                                                                                            |
| <p><strong>Pré-annotation par Agent IA</strong><br><code>POST /extract/api/v1/dataset/annotation/{dataset\_id}/prefill\_agent/{document\_type\_id}/</code></p>                                                                                                                                   | **Route inexistante**                                                                                                                           | <p><strong>Nouvelle route ajoutée</strong><br>Paramètres : <code>dataset\_id</code>, <code>document\_type\_id</code> (path).<br>Body : <code>entry\_ids</code>, <code>conflict\_mode</code> (<code>always\_replace</code>).</p>                                                          | **Pré-annotation agentique :** Déclenche le pré-remplissage automatique des annotations d'un dataset en s'appuyant directement sur un agent d'extraction.          |                                                                                                                                     |                                                                                                                            |
| <p><strong>Validation d'Annotations en Masse</strong><br><code>POST /extract/api/v1/dataset/annotation/{dataset\_id}/bulk\_validate/</code></p>                                                                                                                                                  | **Route inexistante**                                                                                                                           | <p><strong>Nouvelle route ajoutée</strong><br>Body : <code>statuses\_to\_validate</code>, <code>entry\_id</code> (opt), <code>label\_name</code> (opt).</p>                                                                                                                              | Permet de valider en masse des annotations (passage au statut `validated`) selon leur statut d'origine, leur document ou leur label.                               |                                                                                                                                     |                                                                                                                            |
| <p><strong>Validation d'Annotation Unitaire</strong><br><code>POST /extract/api/v1/dataset/annotation/{annotation\_id}/validate/</code></p>                                                                                                                                                      | **Route inexistante**                                                                                                                           | <p><strong>Nouvelle route ajoutée</strong><br>Paramètre : <code>annotation\_id</code> (path).</p>                                                                                                                                                                                        | Valide formellement une annotation unique en passant son statut à `validated`.                                                                                     |                                                                                                                                     |                                                                                                                            |
| <p><strong>Copie de Dataset (Ancienne route)</strong><br><code>POST /extract/api/v1/dataset/copy/{origin\_id}/into/{destination\_id}/</code></p>                                                                                                                                                 | Route active standard                                                                                                                           | **Route dépréciée (`deprecated: true`)**                                                                                                                                                                                                                                                 | Remplacée par la nouvelle route de duplication `POST /dataset/{dataset_id}/`.                                                                                      |                                                                                                                                     |                                                                                                                            |
| <p><strong>Préparation d'Export Dataset</strong><br><code>GET /extract/api/v1/dataset/prepare/{dataset\_id}/</code></p>                                                                                                                                                                          | Paramètres : `dataset_id`, `send_notification`.                                                                                                 | <p><strong>Nouveau query paramètre :</strong><br>• <code>callback\_url</code> (<code>string                                                                                                                                                                                              | null</code>)</p>                                                                                                                                                   | Permet de renseigner une URL de callback appelée automatiquement dès que le fichier ZIP du dataset est prêt au téléchargement.      |                                                                                                                            |
| <p><strong>Entraînement de Modèle</strong><br><code>POST /extract/api/v1/dataset/{dataset\_id}/export/</code></p>                                                                                                                                                                                | Paramètres : `max_steps`, `model_name`, `visual_trainer`, etc.                                                                                  | <p><strong>Nouveau query paramètre :</strong><br>• <code>excluded\_statuses</code> (<code>array\[string]                                                                                                                                                                                 | null</code>)</p>                                                                                                                                                   | Permet d'exclure certains statuts de documents lors de l'export d'entraînement.                                                     |                                                                                                                            |
| <p><strong>Rafraîchissement ciblé de Data Point</strong><br><code>POST /extract/api/v1/system\_2/data\_point/{document\_type\_id}/refresh/</code></p>                                                                                                                                            | Seul `document_type_id` était fourni dans l'URL.                                                                                                | <p><strong>Nouveaux query paramètres :</strong><br>• <code>data\_point\_id</code> (<code>integer                                                                                                                                                                                         | null</code>)<br>• <code>file\_id</code> (<code>integer                                                                                                             | null</code>)</p>                                                                                                                    | Permet de forcer le recalcul explicite d'un data point spécifique ou d'un fichier précis, sans recalculer l'agent complet. |
| <p><strong>Retrait du recalcul implicite :</strong><br>• <code>POST /system\_2/data\_point/{doctype\_id}/</code><br>• <code>PUT /system\_2/data\_point/{dp\_id}/</code><br>• <code>POST /system\_2/extract\_path/{dp\_id}/</code><br>• <code>PUT /system\_2/extract\_path/{path\_id}/</code></p> | Pas de paramètre `reprocess`. Le recalcul était implicite.                                                                                      | <p><strong>Ajout du query paramètre <code>reprocess</code> :</strong><br>(<code>boolean</code>, défaut <code>true</code>, <strong>marqué <code>deprecated</code></strong>)</p>                                                                                                           | Annonce de fin de support du recalcul automatique des extracteurs à chaque sauvegarde. Il est recommandé d'utiliser l'endpoint `/refresh/`.                        |                                                                                                                                     |                                                                                                                            |
| <p><strong>Recherche filtrée d'Agents d'Extraction</strong><br><code>GET /extract/api/v1/system\_2/document\_type/</code></p>                                                                                                                                                                    | Aucun body de requête (filtres par query params uniquement).                                                                                    | <p><strong>Ajout d'un Request Body optionnel :</strong><br><code>{"schema": array\[integer]}</code> (<code>Ids</code>)</p>                                                                                                                                                               | Permet de filtrer la liste des agents en fournissant directement une liste d'identifiants (`IDs`) dans le corps de la requête.                                     |                                                                                                                                     |                                                                                                                            |
| <p><strong>Copie de fichier avec texte OCR</strong><br><code>POST /extract/api/v1/production/{file\_id}/copy\_to\_doctype/{document\_type\_id}/</code></p>                                                                                                                                       | Body form-data : `pages_to_copy`, callbacks.                                                                                                    | <p><strong>Nouveau champ form-data :</strong><br>• <code>include\_ocr\_text</code> (<code>boolean</code>, défaut <code>false</code>)</p>                                                                                                                                                 | Permet de copier un document vers un autre agent d'extraction en conservant le texte OCR déjà extrait (gain de performance).                                       |                                                                                                                                     |                                                                                                                            |
| <p><strong>Import d'Agent d'Extraction</strong><br><code>POST /extract/api/v1/system\_2/document\_type/import</code></p>                                                                                                                                                                         | Multipart : `document_type_name`, `zipfile`.                                                                                                    | <p><strong>Nouveau champ multipart :</strong><br>• <code>extraction\_agent\_id</code> (<code>integer                                                                                                                                                                                     | null</code>)</p>                                                                                                                                                   | Permet d'importer et d'écraser/mettre à jour un agent d'extraction existant via son identifiant plutôt que d'en recréer un nouveau. |                                                                                                                            |
| <p><strong>Remplacement de modèle d'agent</strong><br><code>POST /system\_2/document\_type/{id}/replace\_extractor\_model/</code></p>                                                                                                                                                            | Remplacement global indifférencié.                                                                                                              | <p><strong>Comportement assoupli :</strong><br>Pour les groupes, le modèle n'est remplacé que si les étiquettes cibles sont compatibles.</p>                                                                                                                                             | Supporte la suggestion et le remplacement par des modèles partageant au moins un label commun.                                                                     |                                                                                                                                     |                                                                                                                            |
| <p><strong>Configuration Codes-barres (Agents)</strong><br><code>ExtractionAgentOut</code><br><code>ExtractionAgentList</code><br><code>ExtractionAgentUpdate</code></p>                                                                                                                         | <p><strong>Champs :</strong><br>• <code>qr\_code</code> (<code>boolean</code>)<br>• <code>qr\_code\_pages</code> (<code>array\[int]</code>)</p> | <p><strong>Migration vers Barcodes :</strong><br>• <code>qr\_code\_pages</code> est <strong>supprimé</strong>.<br>• Ajout de <code>barcode\_pages</code> (<code>array\[int]</code>).<br>• Ajout de <code>barcode\_formats</code> (<code>array\[BarcodeFormat]</code>).</p>               | **Évolution majeure :** Généralisation de la détection au-delà des QR codes vers 19 formats de codes-barres (EAN-13, Code 128, Data Matrix, etc.).                 |                                                                                                                                     |                                                                                                                            |
| <p><strong>Modélisation des Groupes d'Extraction</strong><br><code>ExtractionGroupIn</code><br><code>ExtractionGroupUpdate</code><br><code>ExtractionGroupOut</code></p>                                                                                                                         | Labels et réglages passés sous forme de tableaux plats (`labels`, `display_names`, `primary_labels`, etc.).                                     | <p><strong>Nouveau schéma d'objet imbriqué :</strong><br>Ajout de <code>group\_labels</code> (<code>array\[ExtractionGroupLabel]</code>).</p>                                                                                                                                            | Migration des labels de groupes vers une table et une structure objet dédiée (`ExtractionGroupLabel`). Les anciens champs plats restent acceptés en compatibilité. |                                                                                                                                     |                                                                                                                            |
| <p><strong>Cycle de vie des Annotations</strong><br><code>AnnotationIn</code><br><code>AnnotationOut</code><br><code>EntryOut</code> / <code>EntryExtendedOut</code></p>                                                                                                                         | Aucun statut sur l'annotation.                                                                                                                  | <p><strong>Nouveau champ statut :</strong><br>• <code>status</code> (<code>AnnotationStatus</code> : <code>validated</code>, <code>to\_validate</code>, <code>to\_complete</code>).<br>• <code>has\_unvalidated\_annotations</code> (<code>boolean</code>) ajouté sur les documents.</p> | Permet d'introduire des flux de relecture humaine sur les annotations pré-remplies par l'IA.                                                                       |                                                                                                                                     |                                                                                                                            |
| <p><strong>Nettoyage global de <code>use\_latest</code></strong><br><em>(Datasets, Zip, Extraction Agents)</em></p>                                                                                                                                                                              | Champ `use_latest` présent dans la plupart des schémas d'entrées/sorties.                                                                       | **Le champ `use_latest` a été retiré** de l'ensemble des schémas et paramètres de l'API.                                                                                                                                                                                                 | Suppression technique définitive du paramètre `use_latest`.                                                                                                        |                                                                                                                                     |                                                                                                                            |

***

#### Résumé des points d'attention (Breaking Changes & Évolutions)

1. **Migration Barcodes :** Si vous automatisiez la configuration des agents via API, remplacez `qr_code_pages` par `barcode_pages` et spécifiez optionnellement `barcode_formats`.
2. **Fin programmée du recalcul automatique :** Les mises à jour de data points et de chemins d'extraction ne recalculeront bientôt plus automatiquement les résultats. Adoptez dès maintenant l'endpoint explicite `POST /system_2/data_point/{document_type_id}/refresh/`.
3. **Nouveau cycle d'annotation :** Les annotations disposent désormais d'un cycle de validation (`to_validate` ➡️ `validated`) facilitant la pré-annotation assistée par agents IA.

#### 5) Classify : <https://extract.classify.recital.ai/>

| Endpoints de                                                                                                                                                                                                                                | Avant (v26.6.24)                                                                                 | Après (v26.8.17)                                                                                                                                | Description / Paramètres                                                                                                                 |                                                                                                                                                                             |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>Relance de Classification</strong><br><code>POST /classify/api/v1/documents/{document\_id}/rerun</code></p>                                                                                                                      | **Route inexistante**                                                                            | <p><strong>Nouvelle route ajoutée</strong><br>Paramètre : <code>document\_id</code> (path).<br>Réponse : 204 No Content.</p>                    | Permet de redéclencher à la demande la prédiction de classification sur un document existant.                                            |                                                                                                                                                                             |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Agents de Classification Génératifs (LLM)</strong><br>• <code>POST /v1/classification-agents/</code><br>• <code>PUT /v1/classification-agents/{agent\_id}</code><br>• <code>GET /v1/classification-agents/{agent\_id}</code></p> | Configuration basée uniquement sur des modèles entraînés (`model_id` obligatoire à la création). | <p><strong>Champs LLM / Génératif ajoutés :</strong><br>• <code>prompt\_prefix</code> (<code>string                                             | null</code>)<br>• <code>experimental\_prompt</code> (<code>string                                                                        | null</code>)<br>• <code>use\_text</code> (<code>boolean                                                                                                                     | null</code>)<br>• <code>llm\_model\_name</code> (<code>string | null</code>)<br>• <code>temperature</code> (<code>float</code> 0.0 à 1.0)<br>• <code>reasoning</code> (<code>none</code>, <code>low</code>, <code>medium</code>, <code>high</code>)<br><br><code>model\_id</code> devient <strong>optionnel</strong>.</p> | **Support de la Classification Générative :** Possibilité de configurer et d'exécuter des agents de classification propulsés par des LLMs sans nécessiter de modèle classique entraîné. |
| <p><strong>Listing des Agents de Classification</strong><br><code>GET /classify/api/v1/classification-agents/</code></p>                                                                                                                    | <p>Pas de filtre génératif.<br>Aucun Request Body.</p>                                           | <p><strong>Nouveau query paramètre :</strong><br>• <code>generative\_agents\_filter</code> (<code>boolean                                       | null</code>)<br><br><strong>Nouveau Request Body optionnel :</strong><br><code>{"schema": array\[integer]}</code> (<code>Ids</code>)</p> | Permet de filtrer spécifiquement les agents génératifs vs classiques, ou de restreindre la liste en fournissant un tableau d'identifiants (`IDs`) dans le corps de requête. |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Mise à jour d'Agent par Import</strong><br><code>POST /classify/api/v1/classification-agents/upload</code></p>                                                                                                                   | Multipart acceptait uniquement `file` et `name`.                                                 | <p><strong>Nouveau champ form-data :</strong><br>• <code>classification\_agent\_id</code> (<code>integer                                        | null</code>)</p>                                                                                                                         | Permet d'importer une archive pour mettre à jour un agent de classification existant au lieu d'en recréer un nouveau systématiquement.                                      |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Prédiction Document via Agent</strong><br><code>POST /classify/api/v1/documents/classification-agent-prediction</code></p>                                                                                                       | Paramètres query : `is_bundle`, `include_ocr_text`, `classification_agent_id`, webhooks.         | <p><strong>Nouveau query paramètre :</strong><br>• <code>is\_test</code> (<code>boolean                                                         | null</code>, défaut <code>false</code>)</p>                                                                                              | Permet d'identifier explicitement les exécutions de test pour ne pas polluer les métriques et historiques de production.                                                    |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Documents d'un Agent</strong><br><code>GET /classify/api/v1/classification-agents/{agent\_id}/documents</code></p>                                                                                                               | Paramètres query : `filename`, `hitl_required`, tri, pagination.                                 | <p><strong>Nouveau query paramètre :</strong><br>• <code>is\_test</code> (<code>boolean                                                         | null</code>)</p>                                                                                                                         | Permet d'isoler ou d'exclure les documents marqués comme tests dans la liste des documents de l'agent.                                                                      |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Schéma Document (<code>DocumentOut</code>)</strong><br><em>(Toutes les routes retournant des documents classifiés)</em></p>                                                                                                      | Le schéma ne contenait pas d'indicateur de test.                                                 | <p><strong>Nouveau champ obligatoire ajouté :</strong><br>• <code>is\_test</code>: <code>boolean</code> (ajouté dans <code>required</code>)</p> | Indique dans chaque retour document s'il s'agit d'un traitement de test ou de production.                                                |                                                                                                                                                                             |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Catégories d'Agent</strong><br><code>POST /classification-agents/{id}/categories</code><br><code>PUT /classification-agents/{id}/categories/{cat\_id}</code></p>                                                                 | Body (`CategoryInput`) : `id`, `name`, `source_category_id`, `is_active`.                        | <p><strong>Nouveau champ ajouté dans <code>CategoryInput</code> :</strong><br>• <code>description</code> (<code>string                          | null</code>)</p>                                                                                                                         | Permet d'associer une description textuelle aux catégories, particulièrement utile pour guider le prompt du LLM en classification générative.                               |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |
| <p><strong>Nettoyage de <code>use\_latest</code></strong><br><code>ClassificationAgentCreate</code><br><code>ClassificationAgentOutput</code><br><code>ClassificationAgentUpdate</code></p>                                                 | Le champ `use_latest` (`boolean \| null`) était présent.                                         | **Le champ `use_latest` a été supprimé** des schémas de l'agent.                                                                                | Nettoyage technique : suppression définitive du paramètre obsolète `use_latest`.                                                         |                                                                                                                                                                             |                                                               |                                                                                                                                                                                                                                                           |                                                                                                                                                                                         |

***

#### Résumé des points d'attention (Breaking Changes & Évolutions)

1. **🚀 Arrivée des agents génératifs (LLM) :**
   * Vous pouvez désormais créer des agents de classification avec des prompts et un modèle LLM (`llm_model_name`), sans devoir entraîner un modèle au préalable (`model_id` n'est plus obligatoire).
2. **⚠️ Champ obligatoire ajouté dans `DocumentOut` :**
   * Le champ `is_test` (`boolean`) est désormais présent et **marqué comme obligatoire (`required`)** dans les réponses de documents. Vérifiez vos validateurs de schéma stricts si vous désérialisez les réponses de classification.
3. **Productivité & Tests :**

   * L'endpoint `POST /documents/{document_id}/rerun` permet de réévaluer facilement un document après modification des règles ou du modèle.
   * L'utilisation du flag `is_test` permet de séparer proprement vos campagnes de tests des flux de production réels.

## Changelog

#### Version 26.8.X

***

### NOUVELLES FONCTIONNALITÉS

**Workflows & Automatisation**

* **Planification récurrente (CRON) :** Programmation de l'exécution automatique de vos workflows à intervalles réguliers.
* **Étape OCR dédiée :** Brique d'OCR autonome intégrable à n'importe quelle étape de vos chaînes de traitement.
* **Gestion d'erreurs avancée :** Le workflow principal poursuit son exécution même en cas d'erreur sur un sous-workflow.
* **Reprocess de traitements par lots :** Relance ciblée d'un ensemble de jobs selon vos propres critères.
* **Prise en charge étendue des codes-barres :** Amélioration de la détection et ajout de nouveaux formats configurables.
* **Nettoyage automatique des e-mails :** Renommage automatique des pièces jointes comportant des caractères spéciaux comme /.
* **Confort de test :** Raccourci pour réutiliser les derniers fichiers testés lors de la configuration.

**Interface de Review & Files d'attente**

* **Vue cluster pour la classification :** Regroupement visuel des documents par catégorie et réorganisation par glisser-déposer.
* **Listes déroulantes en cascade :** Sélection dépendante à plusieurs niveaux (ex. : Catégorie > Sous-catégorie) sans configuration complexe.
* **Protection de la saisie en direct :** Sauvegarde intelligente empêchant l'écrasement des données en cours de frappe par des réponses réseau tardives.
* **Nouveaux types de champs :** Ajout des cases à cocher, boutons à bascule (toggles) et affichage multi-lignes pour les textes longs.
* **Indicateurs visuels :** Mise en évidence immédiate des onglets nécessitant une validation humaine.
* **Raccourci clavier :** Combinaison de touches rapide pour copier la valeur d'un champ révisé.

#### Agents d'Extraction & Classification (IA & LLM)

* **Agents de classification générative :** Catégorisation intelligente de vos documents et e-mails via des prompts et modèles de langage (LLM).
* **Modèles par défaut :** Paramétrage rapide avec des modèles préconfigurés par fournisseur d'IA.
* **Pré-annotation assistée par agents (v1) :** Outil d'aide au pré-étiquetage pour accélérer la préparation de vos données.
* **Cadrage visuel amélioré (bounding boxes) :** Détection affinée des blocs de texte sur les documents multipages pour supprimer les doublons d'extraction.

#### Supervision, Activité & Administration

* **Suivi et traces de consommation LLM :** Visualisation détaillée des tokens consommés, des coûts, des pages et documents traités pour l'Extraction et la Classification.
* **Logs plus précis :** Distinction explicite dans l'historique entre les appels API internes et les déclenchements par Webhooks.
* **Politique de sécurité :** Configuration simplifiée de la complexité des mots de passe via des variables d'environnement.
* **Duplication de datasets :** Duplication en un clic de vos jeux de données d'entraînement et de test.

***

### CORRECTIFS & AMÉLIORATIONS

**Workflows**

* Résolution des conflits de concurrence pouvant désynchroniser l'historique ou le statut de certains jobs.
* Correction des blocages lors des étapes de boucle (iterate) sur des jeux de données vides.
* Correction du chargement des tâches et de la réservation de stockage dans les sous-workflows.
* Prise en charge des requêtes HTTPS dans les étapes de code Python.

**Révision & Annotation**

* Correction du bouton de validation qui restait bloqué après le calcul automatique de certains champs.
* Rétablissement de la mise à jour automatique des champs dépendants lors de l'autocomplétion.
* Correction du défilement automatique des étiquettes et du mode d'annotation continu.
* Correction de l'application stricte des règles de validation et des formats de date inversés.

**Affichage & Interface**

* Correction du rendu des miniatures pour les documents au format paysage.
* Correction du chevauchement du bouton de téléchargement dans la page Activité.
* Amélioration de la sélection et du filtrage des catégories dans les listes.
* Harmonisation des règles de nommage des éléments sur toute la plateforme.

**Moteur & API**

* Amélioration de la réparation automatique des fichiers PDF mal formés.
* Nettoyage des caractères invalides (octets nuls) avant l'enregistrement en base de données.
* Correction des erreurs de dimensionnement d'images avec Azure OCR.
* Correction lors de la suppression d'agents d'extraction et libération immédiate des fichiers associés.
