Mettre à jour une automatisation
curl --request PUT \
--url https://app.famulor.de/api/user/automate/flows/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"enabled": true,
"flow": {},
"sample": {},
"assistant_id": 123,
"confirm_side_effects": true
}
'import requests
url = "https://app.famulor.de/api/user/automate/flows/{id}"
payload = {
"name": "<string>",
"enabled": True,
"flow": {},
"sample": {},
"assistant_id": 123,
"confirm_side_effects": True
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
enabled: true,
flow: {},
sample: {},
assistant_id: 123,
confirm_side_effects: true
})
};
fetch('https://app.famulor.de/api/user/automate/flows/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/automate/flows/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'enabled' => true,
'flow' => [
],
'sample' => [
],
'assistant_id' => 123,
'confirm_side_effects' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/automate/flows/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"enabled\": true,\n \"flow\": {},\n \"sample\": {},\n \"assistant_id\": 123,\n \"confirm_side_effects\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.famulor.de/api/user/automate/flows/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"enabled\": true,\n \"flow\": {},\n \"sample\": {},\n \"assistant_id\": 123,\n \"confirm_side_effects\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.de/api/user/automate/flows/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"enabled\": true,\n \"flow\": {},\n \"sample\": {},\n \"assistant_id\": 123,\n \"confirm_side_effects\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "f4EaLhOW2zoEsXXSOJP2r",
"name": "Order lookup v2",
"status": "disabled",
"updated": true
}
}
{
"automation_id": "f4EaLhOW2zoEsXXSOJP2r",
"status": "active",
"test": {
"run_status": "SUCCEEDED",
"steps": []
},
"response": null,
"binding": null
}
{
"message": "Automation not found"
}
Automatisations
Mettre à jour une automatisation
Renomme une automatisation Famulor, l’active ou la désactive, ou la répare avec une définition corrigée.
PUT
/
api
/
user
/
automate
/
flows
/
{id}
Mettre à jour une automatisation
curl --request PUT \
--url https://app.famulor.de/api/user/automate/flows/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"enabled": true,
"flow": {},
"sample": {},
"assistant_id": 123,
"confirm_side_effects": true
}
'import requests
url = "https://app.famulor.de/api/user/automate/flows/{id}"
payload = {
"name": "<string>",
"enabled": True,
"flow": {},
"sample": {},
"assistant_id": 123,
"confirm_side_effects": True
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
enabled: true,
flow: {},
sample: {},
assistant_id: 123,
confirm_side_effects: true
})
};
fetch('https://app.famulor.de/api/user/automate/flows/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/automate/flows/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'enabled' => true,
'flow' => [
],
'sample' => [
],
'assistant_id' => 123,
'confirm_side_effects' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/automate/flows/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"enabled\": true,\n \"flow\": {},\n \"sample\": {},\n \"assistant_id\": 123,\n \"confirm_side_effects\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.famulor.de/api/user/automate/flows/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"enabled\": true,\n \"flow\": {},\n \"sample\": {},\n \"assistant_id\": 123,\n \"confirm_side_effects\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.famulor.de/api/user/automate/flows/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"enabled\": true,\n \"flow\": {},\n \"sample\": {},\n \"assistant_id\": 123,\n \"confirm_side_effects\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "f4EaLhOW2zoEsXXSOJP2r",
"name": "Order lookup v2",
"status": "disabled",
"updated": true
}
}
{
"automation_id": "f4EaLhOW2zoEsXXSOJP2r",
"status": "active",
"test": {
"run_status": "SUCCEEDED",
"steps": []
},
"response": null,
"binding": null
}
{
"message": "Automation not found"
}
API Famulor 1.0 (héritée). Cette page concerne uniquement Famulor 1.0 (
app.famulor.de) et est conservée pour la compatibilité. Pour la plateforme actuelle, consultez la référence API Famulor 2.0.- Renommer / activer-désactiver — envoyez
nameet/ouenabledpour renommer l’automatisation ou l’activer/la désactiver. - Réparer — envoyez une définition
flowcorrigée : l’automatisation est reconstruite en place, retestée avec une exécution réelle, puis réactivée uniquement si le test réussit. Utilisez ce mode après avoir diagnostiqué un échec avec Obtenir une automatisation et Lister les exécutions d’automatisation.
Une définition de réparation remplace l’automatisation entière — elle n’est jamais fusionnée. Lisez d’abord la définition actuelle et renvoyez la chaîne complète, y compris chaque étape à conserver ; les étapes omises sont supprimées. L’exécution de test de la réparation exécute réellement l’automatisation, donc
confirm_side_effects: true est à nouveau requis lorsque la définition corrigée contient des étapes d’envoi.Paramètres de chemin
string
requis
L’ID de l’automatisation (voir Lister les automatisations)
Corps de la requête
string
Un nouveau nom pour l’automatisation (255 caractères maximum). En mode réparation, le nom actuel est conservé si omis.
boolean
true pour activer l’automatisation, false pour la désactiverobject
Mode réparation : la définition complète corrigée, au même format que Créer une automatisation (
{"trigger": {...}, "steps": [...]}). 1 Mo maximum.object
Le payload d’exemple pour l’exécution de test de la réparation (pour les événements d’assistant, l’exemple canonique est utilisé si omis). 256 Ko maximum.
integer
Pour les réparations d’automatisations liées à un événement d’assistant : l’assistant auquel (ré)attacher l’automatisation. Généralement déjà présent dans le déclencheur de la définition.
boolean
Requis (
true) lorsque la définition corrigée contient des étapes qui envoient des messages ou des e-mails, démarrent des appels, ou effectuent des requêtes HTTP autres que GETname, enabled ni flow renvoie un 422 demandant au moins l’un des trois.
Response — Renommage / activation-désactivation
object
Response — Réparation
La même enveloppe que Créer une automatisation (automation_id, status, test, response, binding), sans webhook_url — une automatisation réparée conserve son URL de webhook d’origine. Renvoyée avec le code HTTP 200 ; status vaut active, active_untested ou test_failed. Une réparation dont le test échoue laisse l’automatisation désactivée ; une réparation rejetée avant l’exécution de test (par ex. no_steps) laisse l’automatisation existante inchangée.
Une automatisation introuvable — ou qui n’appartient pas à votre compte — renvoie un 404 avec {"message": "Automation not found"}.
{
"data": {
"id": "f4EaLhOW2zoEsXXSOJP2r",
"name": "Order lookup v2",
"status": "disabled",
"updated": true
}
}
{
"automation_id": "f4EaLhOW2zoEsXXSOJP2r",
"status": "active",
"test": {
"run_status": "SUCCEEDED",
"steps": []
},
"response": null,
"binding": null
}
{
"message": "Automation not found"
}
Pages associées : Obtenir une automatisation, Restaurer la version précédente et Authentification.