Dokos expose une API REST qui permet d'interagir avec les documents et les fonctionnalités du système. Pour faciliter l'intégration et le développement, Dokos propose des endpoints de découverte qui listent les méthodes disponibles, y compris celles définies dans les contrôleurs de documents.
Endpoint : /api/method/discovery
Cet endpoint retourne la liste des méthodes standard disponibles dans l'API, organisées par module et doctype.
Exemple de requête :
curl -X GET "https://votre-instance.dokos.cloud/api/method/discovery" \
-H "Authorization: token YOUR_API_KEY:YOUR_API_SECRET"
Exemple de réponse :
{
"docs": {
"ToDo": {
"methods": [
{
"name": "frappe.desk.doctype.todo.todo.create_todo",
"docstring": "Crée une nouvelle tâche ToDo.",
"parameters": [
{
"name": "description",
"type": "str",
"required": true
}
]
}
]
}
},
"standard": {
"frappe": {
"core": [
{
"name": "frappe.core.doctype.user.user.get_users",
"docstring": "Récupère la liste des utilisateurs."
}
]
}
}
}
Endpoint : /api/method/discovery/docs
Cet endpoint retourne la liste des méthodes définies dans les contrôleurs de documents (fichiers Python associés à un doctype). Ces méthodes sont souvent utilisées pour étendre les fonctionnalités des documents.
Exemple de requête :
curl -X GET "https://votre-instance.dokos.cloud/api/method/discovery/docs" \
-H "Authorization: token YOUR_API_KEY:YOUR_API_SECRET"
Exemple de réponse :
{
"ToDo": {
"methods": [
{
"name": "send_reminder",
"docstring": "Envoie un rappel pour une tâche ToDo.",
"parameters": [
{
"name": "days_before_due",
"type": "int",
"default": 1
}
]
}
]
}
}
Pour appeler une méthode standard, utilisez l'endpoint /api/method suivi du nom complet de la méthode.
Exemple :
curl -X POST "https://votre-instance.dokos.cloud/api/method/frappe.desk.doctype.todo.todo.create_todo" \
-H "Authorization: token YOUR_API_KEY:YOUR_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"description": "Tester la découverte des méthodes API"}'
Pour appeler une méthode définie dans un contrôleur de document, utilisez l'endpoint /api/resource/{doctype}/{docname}/method/{method_name}.
Exemple :
curl -X POST "https://votre-instance.dokos.cloud/api/resource/ToDo/TODO-001/method/send_reminder" \
-H "Authorization: token YOUR_API_KEY:YOUR_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"days_before_due": 2}'
System Manager)./api/method/frappe.api.discovery.clear_cache.Voici un exemple de script Python qui utilise les endpoints de découverte pour explorer les méthodes disponibles et appeler une méthode de contrôleur :
import requests
import json
# Configuration
base_url = "https://votre-instance.dokos.cloud"
api_key = "YOUR_API_KEY"
api_secret = "YOUR_API_SECRET"
# Récupérer les méthodes des contrôleurs de documents
response = requests.get(
f"{base_url}/api/method/discovery/docs",
headers={
"Authorization": f"token {api_key}:{api_secret}"
}
)
data = response.json()
print("Méthodes disponibles pour le doctype ToDo:")
for method in data.get("ToDo", {}).get("methods", []):
print(f"- {method['name']}: {method['docstring']}")
# Appeler une méthode de contrôleur
if data.get("ToDo", {}).get("methods"):
method_name = data["ToDo"]["methods"][0]["name"]
todo_name = "TODO-001" # Remplacez par un nom de tâche existant
response = requests.post(
f"{base_url}/api/resource/ToDo/{todo_name}/method/{method_name}",
headers={
"Authorization": f"token {api_key}:{api_secret}",
"Content-Type": "application/json"
},
data=json.dumps({"days_before_due": 2})
)
print(f"Résultat de l'appel à {method_name}:", response.json())
Voici un diagramme qui illustre le processus de découverte et d'appel des méthodes API :
System Manager./api/method/frappe.api.discovery.clear_cache pour forcer le rafraîchissement.Les endpoints de découverte des méthodes API de Dokos offrent une manière puissante d'explorer et d'utiliser les fonctionnalités disponibles, y compris celles définies dans les contrôleurs de documents. Cela facilite l'intégration avec d'autres systèmes et le développement d'applications personnalisées.
Pour aller plus loin, consultez la documentation officielle de l'API de Frappe pour plus de détails sur les méthodes standard et les bonnes pratiques de développement.