---
title: API REST – Suppression en masse (corbeille)
description: "Cette page décrit l'opération à utiliser pour **mettre beaucoup d'enregistrements à la corbeille d'un coup**, typiquement pour effacer ce qu'une synchronisation ou un import précédent a écrit avant de reprendre une base proprement. | Opération | Méthode | Description |…"
url: "https://www.kafinea.com/fr/documentation/api/api-rest-suppression-en-masse/"
updated: "2026-11-04"
category: Intégrations / API
---

# API REST – Suppression en masse (corbeille)

Cette page décrit l'opération à utiliser pour **mettre beaucoup d'enregistrements à la corbeille
 d'un coup**, typiquement pour effacer ce qu'une synchronisation ou un import précédent a écrit avant
 de reprendre une base proprement.

| Opération | Méthode | Description |
| --- | --- | --- |
| `mass_delete` | POST | Mettre un lot d'enregistrements à la corbeille |

> **Réservée aux administrateurs.** Supprimer des centaines d'enregistrements en un appel est un
>  travail de reprise de données. Un compte non administrateur garde `delete`, un enregistrement à la
>  fois, avec ses propres droits.

---

## Rien n'est effacé : c'est une mise à la corbeille

`mass_delete` fait **exactement ce que fait le bouton Supprimer de l'interface** : l'enregistrement
 part à la corbeille. Il conserve son identifiant, ses liens et son historique, et il peut être
 restauré.

**La suppression définitive n'existe pas dans l'API.** Vider la corbeille reste une action délibérée,
 à faire depuis l'instance (*Paramètres > Corbeille*). C'est volontaire : une suppression irréversible
 ne doit pas pouvoir être déclenchée par un script.

---

## Suppression en masse – Mettre un lot à la corbeille

> **POST** `https://apps.kafinea.com/{instance}/webservice.php`

| Paramètre | Type | Requis | Description |
| --- | --- | --- | --- |
| `operation` | string | oui | Doit être `mass_delete` |
| `sessionName` | string | oui | Identifiant de session |
| `elementType` | string | oui | Nom du module visé (ex : `Products`, `SalesOrder`) |
| `ids` | JSON | oui | Tableau des identifiants (500 au maximum par appel) |

Les identifiants se récupèrent avec [`query`](https://www.kafinea.com/fr/documentation/api/api-rest-requetes-et-interrogation/).

```bash
curl -X POST https://apps.kafinea.com/YourKafinea/webservice.php 
  -d "operation=mass_delete" 
  -d "sessionName=YOUR_SESSION_ID" 
  -d "elementType=SalesOrder" 
  -d 'ids=["7x54993","7x54994","7x54995"]'
```

### Réponse

```json
{
  "success": true,
  "result": {
    "module": "SalesOrder",
    "processed": 3,
    "deleted": 2,
    "alreadyDeleted": 1,
    "records": [
      { "index": 0, "id": "7x54993", "outcome": "deleted" },
      { "index": 1, "id": "7x54994", "outcome": "deleted" },
      { "index": 2, "id": "7x54995", "outcome": "alreadyDeleted" }
    ],
    "errors": []
  }
}
```

| Champ | Signification |
| --- | --- |
| `processed` | Nombre d'enregistrements traités sans erreur |
| `deleted` | Enregistrements qui viennent de partir à la corbeille |
| `alreadyDeleted` | Enregistrements qui y étaient déjà : rien n'a été fait, ce n'est pas une erreur |
| `records` | Le détail ligne par ligne, avec la **position dans le lot** |
| `errors` | Les identifiants refusés, avec leur position dans le lot et le motif |

---

## Les garde-fous

Une suppression en masse n'a pas de seconde chance, donc l'opération est volontairement stricte :

- **le module est obligatoire, et tous les identifiants doivent en relever.** Un identifiant qui
   désigne un enregistrement d'un autre module est refusé, avec le module réellement trouvé dans le
   motif. C'est la protection contre un préfixe erroné dans un fichier généré, qui supprimerait
   autre chose que ce que vous croyez ;
- **un identifiant qui ne désigne rien est nommé comme tel**, plutôt que présenté comme un problème
   de droits ;
- **les droits sont ceux de `delete`** : accès au module, droit de suppression du profil, partage de
   l'enregistrement. L'opération ne supprime rien que `delete` aurait refusé ;
- **un identifiant fautif n'annule pas les autres** : les enregistrements valides du lot partent à la
   corbeille, les identifiants refusés reviennent dans `errors` avec leur position ;
- si le paramètre `ids` lui-même n'est pas lisible (JSON invalide, plus de 500 éléments), **l'appel
   entier est refusé** : traiter la moitié d'un lot incompréhensible serait pire que de n'en traiter
   aucune partie.

---

## Rejouable : relancez sans crainte

Un identifiant déjà à la corbeille est compté dans `alreadyDeleted`, pas dans `errors`. Vous pouvez
 donc **renvoyer le même lot tel quel** après une interruption, sans trier au préalable ce qui est
 déjà passé.

---

## Références associées 🔗

- [Opérations CRUD](https://www.kafinea.com/fr/documentation/api/api-rest-operations-crud/) : supprimer un enregistrement à la fois
- [Requêtes et interrogation](https://www.kafinea.com/fr/documentation/api/api-rest-requetes-et-interrogation/) : obtenir les identifiants à supprimer
- [Import en masse (upsert)](https://www.kafinea.com/fr/documentation/api/api-rest-import-en-masse/) : l'opération symétrique, pour écrire un lot
