3.9 KiB
3.9 KiB
Backend API Recipes (OpenClaw)
1) Base URL et tests
- Base LAN backend:
http://<IP_HOTE>:8060 - Santé:
GET /api/health - Swagger:
GET /docs - ReDoc:
GET /redoc
Exemple:
curl http://192.168.1.50:8060/api/health
Réponse attendue:
{"status":"ok"}
2) Règles HTTP à appliquer dans OpenClaw
- JSON: header
Content-Type: application/json - Upload fichier:
multipart/form-datasurPOST /api/upload - Timeout conseillé:
15-30s - Retry réseau conseillé:
2-3 - API sans authentification actuellement (LAN uniquement)
3) Séquence d'ajout recommandée (dépendances)
- Créer jardin (
/api/gardens) -> récupérergarden_id - Créer plante (
/api/plants) -> récupérerplant_id - Créer plantation (
/api/plantings) avecgarden_id+variety_id=plant_id-> récupérerplanting_id - Créer tâche (
/api/tasks) avecplanting_id
4) Endpoints création (payload minimal)
4.1 Jardin
POST /api/gardens
{
"nom": "serre",
"type": "serre"
}
4.2 Plante
POST /api/plants
{
"nom_commun": "Tomate",
"variete": "Andine Cornue",
"categorie": "potager"
}
4.3 Plantation
POST /api/plantings
{
"garden_id": 1,
"variety_id": 12,
"quantite": 6,
"date_plantation": "2026-05-01",
"statut": "en_cours"
}
4.4 Tâche
POST /api/tasks
{
"titre": "Arroser tomates serre",
"description": "Arrosage du matin",
"planting_id": 8,
"priorite": "normale",
"echeance": "2026-05-02",
"statut": "a_faire"
}
4.5 Outil
POST /api/tools
{
"nom": "Bêche",
"categorie": "beche",
"notice_texte": "Nettoyer la lame après usage."
}
4.6 Astuce
POST /api/astuces
{
"titre": "Paillage tomate",
"contenu": "Appliquer 5 cm de paillage après arrosage.",
"categorie": "plante",
"tags": "[\"tomate\",\"paillage\"]",
"mois": "[4,5,6]"
}
5) Mise à jour (PUT/PATCH)
5.1 Mise à jour standard (PUT)
Endpoints:
PUT /api/gardens/{id}PUT /api/plants/{id}PUT /api/plantings/{id}PUT /api/tasks/{id}PUT /api/tools/{id}PUT /api/astuces/{id}
Envoyer un objet complet cohérent (champs requis inclus).
5.2 Statut tâche rapide
PUT /api/tasks/{id}/statut?statut=en_cours
6) Upload image/vidéo + association
6.1 Upload binaire
POST /api/upload (multipart file)
Réponse type:
{
"url": "/uploads/abc.webp",
"thumbnail_url": "/uploads/def.webp"
}
6.2 Attacher à une entité (bibliothèque média)
POST /api/media
{
"entity_type": "plante",
"entity_id": 12,
"url": "/uploads/abc.webp",
"thumbnail_url": "/uploads/def.webp",
"titre": "Tomate serre mai 2026"
}
entity_type autorisés:
jardinplanteadventiceoutilplantationbibliotheque
7) Ajouter des liens URL (utile pour notices/sources)
Utiliser la table attachments via API.
7.1 Créer une pièce jointe URL
POST /api/attachments
{
"entity_type": "plante",
"entity_id": 12,
"type": "url",
"titre": "Fiche technique tomate",
"contenu": "https://example.org/fiche-tomate"
}
7.2 Lire les liens d'une entité
GET /api/attachments?entity_type=plante&entity_id=12
8) Gabarit OpenClaw (HTTP action)
Utiliser ce format logique dans les étapes OpenClaw:
{
"name": "create_plant",
"method": "POST",
"url": "http://192.168.1.50:8060/api/plants",
"headers": {
"Content-Type": "application/json"
},
"json": {
"nom_commun": "Tomate",
"categorie": "potager"
},
"expected_status": 201,
"map_output": {
"plant_id": "$.id"
}
}
9) Erreurs fréquentes
422 Unprocessable Entity: payload incomplet ou type invalide.404: ID référencé introuvable.400sur upload: mauvaiscontent-type.- Réseau/CORS:
- serveur-à-serveur OpenClaw -> CORS non nécessaire
- navigateur -> configurer
CORS_ORIGINScôté backend