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 gardedelete, 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.
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 #
{
"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 quedeleteaurait refusé ; - un identifiant fautif n’annule pas les autres : les enregistrements valides du lot partent à la
corbeille, les identifiants refusés reviennent danserrorsavec leur position ; - si le paramètre
idslui-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 : supprimer un enregistrement à la fois
- Requêtes et interrogation : obtenir les identifiants à supprimer
- Import en masse (upsert) : l’opération symétrique, pour écrire un lot