Nutzt du unsere API über ein Dedicated Deployment? Ersetze einfach api.langdock.com mit der Basis-URL deines Deployments: <deployment-url>/api/public
Erstellt einen neuen Trigger für eine Integration. Triggers ermöglichen es Integrationen, Workflows oder Agent-Konversationen basierend auf externen Events zu starten, typischerweise durch Polling eines externen Systems auf Änderungen.
Erforderliche Scopes
Dieser Endpoint erfordert den INTEGRATION_API Scope.
Pfad-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|
integrationId | string | Ja | UUID der Integration |
Request Body
| Parameter | Typ | Erforderlich | Beschreibung |
|---|
name | string | Ja | Trigger-Name (max. 100 Zeichen) |
description | string | Nein | Trigger-Beschreibung (max. 90 Zeichen) |
pollingCode | string | Nein | JavaScript-Code zum Polling von neuen Events (max. 1.000 Zeichen) |
inputFields | array | Nein | Eingabefelder zur Konfiguration des Triggers |
Eingabefeld-Schema
Jedes Eingabefeld hat die folgenden Eigenschaften:
| Eigenschaft | Typ | Erforderlich | Beschreibung |
|---|
label | string | Ja | Feld-Label (max. 100 Zeichen) |
type | string | Nein | Feldtyp (Standard: “TEXT”) |
description | string | Nein | Feld-Beschreibung (max. 500 Zeichen) |
placeholder | string | Nein | Platzhaltertext (max. 200 Zeichen) |
required | boolean | Nein | Ob das Feld erforderlich ist (Standard: false) |
options | array | Nein | Optionen für SELECT-Felder |
allowMultiSelect | boolean | Nein | Mehrfachauswahl für SELECT-Felder erlauben |
Feldtypen
| Typ | Beschreibung |
|---|
TEXT | Einzeilige Texteingabe |
MULTI_LINE_TEXT | Mehrzeilige Texteingabe |
NUMBER | Numerische Eingabe |
BOOLEAN | Wahr/Falsch-Umschalter |
SELECT | Dropdown-Auswahl |
PASSWORD | Passwort-Eingabe (maskiert) |
VECTOR | Vektor-Eingabe |
Beispiel
const axios = require("axios");
async function createTrigger(integrationId) {
const response = await axios.post(
`https://api.langdock.com/integrations/v1/${integrationId}/triggers/create`,
{
name: "New Issue Created",
description: "Triggers when a new issue is created in the project tracker",
pollingCode: `
const response = await fetch('https://api.example.com/issues?since=' + lastPollTime, {
headers: {
'Authorization': 'Bearer ' + secrets.API_TOKEN
}
});
if (!response.ok) {
throw new Error('Failed to fetch issues');
}
const issues = await response.json();
return issues.map(issue => ({
id: issue.id,
title: issue.title,
description: issue.description,
createdAt: issue.created_at
}));
`,
inputFields: [
{
label: "Project ID",
type: "TEXT",
description: "The ID of the project to monitor",
placeholder: "e.g., proj_123",
required: true
},
{
label: "Priority Filter",
type: "SELECT",
description: "Only trigger for issues with this priority",
options: [
{ label: "All", value: "all" },
{ label: "High", value: "high" },
{ label: "Medium", value: "medium" },
{ label: "Low", value: "low" }
],
required: false
}
]
},
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
}
);
console.log("Created trigger:", response.data.trigger);
}
createTrigger("550e8400-e29b-41d4-a716-446655440000");
Erfolgreiche Antwort (201 Created)
{
trigger: {
id: string; // UUID des erstellten Triggers
name: string; // Trigger-Name
slug: string; // URL-freundliche Kennung (automatisch generiert)
description: string; // Trigger-Beschreibung
type: string; // Trigger-Typ
pollingCode: string | null; // JavaScript-Polling-Code
inputFields: Array<{
slug: string; // Feld-Kennung
label: string; // Anzeige-Label
type: string; // Feldtyp
description: string;
placeholder: string | null;
required: boolean;
options: Array<{label: string, value: string}> | null;
allowMultiSelect: boolean | null;
}>;
};
}
Fehlerbehandlung
| Status Code | Beschreibung |
|---|
| 400 | Ungültiger Request Body oder ungültige Integration-ID |
| 401 | Ungültiger oder fehlender API-Schlüssel |
| 403 | Kein Zugriff auf diese Integration |
| 404 | Integration nicht gefunden |
| 409 | Ein Trigger mit diesem Namen existiert bereits in der Integration |
| 429 | Rate Limit überschritten |
| 500 | Interner Serverfehler |
Polling-Code-Umgebung
Trigger-Polling-Code läuft in einer isolierten JavaScript-Umgebung mit Zugriff auf:
inputs - Objekt mit den Werten der vom Nutzer konfigurierten Eingabefelder
secrets - Objekt mit konfigurierten Secrets für die Integration
lastPollTime - Zeitstempel des letzten erfolgreichen Polls (für inkrementelles Abrufen)
fetch - Standard fetch API für HTTP-Anfragen
- Standard JavaScript-Built-ins
Der Polling-Code sollte ein Array von Events zurückgeben. Jedes zurückgegebene Event löst den zugehörigen Workflow oder die Agent-Konversation aus.
Polling-Code sollte Fehler sauber behandeln. Unbehandelte Fehler führen dazu, dass der Trigger fehlschlägt und Events möglicherweise verpasst werden.
Langdock blockiert bewusst Browser-basierte Anfragen, um deinen API-Schlüssel zu schützen und die Sicherheit deiner Anwendungen zu gewährleisten. Weitere Informationen findest du in unserem Guide zu Best Practices für API-Schlüssel.