Actualizar automatización
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"
}
Automatizaciones
Actualizar automatización
Renombra una automatización de Famulor, actívala o desactívala, o repárala con una definición corregida.
PUT
/
api
/
user
/
automate
/
flows
/
{id}
Actualizar automatización
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 de Famulor 1.0 (legado). Esta página se aplica únicamente a Famulor 1.0 (
app.famulor.de) y se conserva por compatibilidad. Para la plataforma actual, usa la referencia de la API de Famulor 2.0.- Renombrar / activar-desactivar — pasa
namey/oenabledpara renombrar la automatización o activarla/desactivarla. - Reparar — pasa una definición
flowcorregida y la automatización se reconstruye en el sitio, se vuelve a probar con una ejecución real, y se reactiva solo cuando la prueba se supera. Usa esto después de diagnosticar un fallo con Obtener automatización y Listar ejecuciones de automatización.
Una definición de reparación reemplaza toda la automatización — nunca se combina. Lee primero la definición actual y reenvía la cadena completa, incluyendo cada paso que deba permanecer; los pasos que omitas se eliminan. La ejecución de prueba de la reparación ejecuta la automatización de verdad, así que se requiere de nuevo
confirm_side_effects: true cuando la definición corregida contiene pasos de envío.Parámetros de ruta
string
requerido
El ID de la automatización (de Listar automatizaciones)
Cuerpo de la solicitud
string
Un nuevo nombre para la automatización (máx. 255 caracteres). En el modo de reparación, se conserva el nombre actual si se omite.
boolean
true para activar la automatización, false para desactivarlaobject
Modo de reparación: la definición completa corregida, en el mismo formato que Crear automatización (
{"trigger": {...}, "steps": [...]}). Máx. 1 MB.object
Payload de ejemplo para la ejecución de prueba de la reparación (en eventos de asistente, se usa el ejemplo canónico si se omite). Máx. 256 KB.
integer
Para reparaciones de automatizaciones de eventos de asistente: el asistente al que (re)vincularse. Normalmente ya viene incluido dentro del activador de la definición.
boolean
Obligatorio (
true) cuando la definición corregida contiene pasos que envían mensajes o correos, inician llamadas, o realizan solicitudes HTTP que no son GETname, enabled o flow devuelve un 422 pidiendo al menos uno de ellos.
Respuesta — renombrar / activar-desactivar
object
Respuesta — reparación
El mismo formato que Crear automatización (automation_id, status, test, response, binding), sin webhook_url — una automatización reparada conserva su URL de webhook original. Se devuelve con HTTP 200; status es active, active_untested o test_failed. Una reparación cuya prueba falla deja la automatización desactivada; una reparación rechazada antes de la ejecución de prueba (p. ej. no_steps) deja la automatización existente sin cambios.
Una automatización inexistente — o que no pertenece a tu cuenta — devuelve un 404 con {"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"
}
Páginas relacionadas: Obtener automatización, Restaurar versión anterior, y Autenticación.