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. Demande l'autorisation Écriture sur le 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.
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 |
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.