API REST v2
API REST v2
Dodock sert deux versions de l'API REST sur le même site :
| Version | Préfixe | Documents | Réponse |
|---|---|---|---|
| v1 | /api/ ou /api/v1/ | /api/resource/<doctype> | {"data": ...} ou {"message": ...} |
| v2 | /api/v2/ | /api/v2/document/<doctype> | {"data": ...} |
La v1 est décrite dans API Rest. La v2 utilise les mêmes méthodes d'authentification : session ou jeton Authorization: token api_key:api_secret.
Chaque appel s'exécute avec les permissions de l'utilisateur authentifié.
Documents
| Méthode | Chemin | Action |
|---|---|---|
GET | /api/v2/document/<doctype> | Liste des documents |
POST | /api/v2/document/<doctype> | Création d'un document |
GET | /api/v2/document/<doctype>/<name> | Lecture d'un document |
PATCH ou PUT | /api/v2/document/<doctype>/<name> | Modification d'un document |
DELETE | /api/v2/document/<doctype>/<name> | Suppression d'un document (statut HTTP 202) |
GET | /api/v2/document/<doctype>/<name>/copy | Copie d'un document, prête à être créée |
GET ou POST | /api/v2/document/<doctype>/<name>/method/<method> | Appel d'une méthode whitelistée du document |
Paramètres de la liste
| Paramètre | Défaut | Rôle |
|---|---|---|
fields | Champs par défaut | Liste JSON des champs, par exemple ["name","customer","grand_total"] |
filters | Aucun | Filtres JSON, par exemple {"status":"Draft"} |
order_by | Tri du type de document | Tri, par exemple posting_date desc |
start | 0 | Décalage pour la pagination |
limit | 20 | Nombre maximal de lignes |
group_by | Aucun | Regroupement |
as_dict | true | Lignes en objets, ou en listes si false |
La réponse contient data, la liste des lignes, et has_next_page, à true s'il reste des lignes après la page.
La liste et le comptage acceptent aussi la méthode HTTP QUERY, qui porte les paramètres dans le corps de la requête. Voir Méthode HTTP QUERY.
curl -G "https://votre-site/api/v2/document/Sales%20Invoice" \
-H "Authorization: token api_key:api_secret" \
--data-urlencode 'fields=["name","customer","grand_total"]' \
--data-urlencode 'filters={"docstatus":1}' \
--data-urlencode 'limit=5'
Appeler une méthode d'un document
Le chemin /method/<method> charge le document et appelle la méthode si elle est whitelistée. GET demande le droit de lecture, POST le droit d'écriture. La réponse contient le résultat dans data, et le document à jour dans docs.
Exemple : valider une facture brouillon.
curl -X POST "https://votre-site/api/v2/document/Sales%20Invoice/ACC-SINV-2026-00012/method/submit" \
-H "Authorization: token api_key:api_secret"
Méthodes
| Méthode | Chemin | Action |
|---|---|---|
| Toutes | /api/v2/method/<chemin.de.la.methode> | Appel d'une méthode whitelistée, ou d'un script serveur de type API |
| Toutes | /api/v2/method/<doctype>/<method> | Appel d'une méthode whitelistée du module du type de document |
POST | /api/v2/method/upload_file | Envoi d'un fichier |
POST | /api/v2/method/logout | Déconnexion |
| Toutes | /api/v2/method/ping | Test de disponibilité |
Types de documents
| Méthode | Chemin | Action |
|---|---|---|
GET | /api/v2/doctype/<doctype>/meta | Métadonnées du type de document : champs, propriétés |
GET | /api/v2/doctype/<doctype>/count | Nombre de documents, avec les mêmes filters que la liste |
Découverte et MCP
| Méthode | Chemin | Action |
|---|---|---|
GET | /api/v2/discovery | Point d'entrée de l'API de découverte des méthodes |
GET | /api/v2/discovery/search?q=<texte> | Recherche dans l'index des méthodes |
GET | /api/v2/discovery/method | Liste des méthodes whitelistées |
GET | /api/v2/discovery/doctype/<doctype> | Méthodes d'un type de document |
POST, GET, DELETE | /api/v2/mcp | Serveur MCP du site |
Voir API de découverte des méthodes et Serveur MCP.
Opérations en masse
| Méthode | Chemin | Corps |
|---|---|---|
POST | /api/v2/document/<doctype>/bulk_delete | {"names": [...]} |
POST | /api/v2/document/<doctype>/bulk_update | {"docs": [{"name": ..., "champ": ...}]} |
POST | /api/v2/method/bulk_delete | {"docs": [{"doctype": ..., "name": ...}]}, sur plusieurs types de documents |
POST | /api/v2/method/bulk_update | {"docs": [{"doctype": ..., "name": ..., "champ": ...}]}, sur plusieurs types de documents |
Au-delà de 20 documents, l'opération passe en tâche de fond et la réponse a le statut HTTP 202. La clé bulk_operation_async_threshold de la configuration du site change ce seuil, globalement ou par type de document.