Zum Hauptinhalt springen
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

ParameterTypErforderlichBeschreibung
integrationIdstringJaUUID der Integration

Request Body

ParameterTypErforderlichBeschreibung
namestringJaTrigger-Name (max. 100 Zeichen)
descriptionstringNeinTrigger-Beschreibung (max. 90 Zeichen)
pollingCodestringNeinJavaScript-Code zum Polling von neuen Events (max. 1.000 Zeichen)
inputFieldsarrayNeinEingabefelder zur Konfiguration des Triggers

Eingabefeld-Schema

Jedes Eingabefeld hat die folgenden Eigenschaften:
EigenschaftTypErforderlichBeschreibung
labelstringJaFeld-Label (max. 100 Zeichen)
typestringNeinFeldtyp (Standard: “TEXT”)
descriptionstringNeinFeld-Beschreibung (max. 500 Zeichen)
placeholderstringNeinPlatzhaltertext (max. 200 Zeichen)
requiredbooleanNeinOb das Feld erforderlich ist (Standard: false)
optionsarrayNeinOptionen für SELECT-Felder
allowMultiSelectbooleanNeinMehrfachauswahl für SELECT-Felder erlauben

Feldtypen

TypBeschreibung
TEXTEinzeilige Texteingabe
MULTI_LINE_TEXTMehrzeilige Texteingabe
NUMBERNumerische Eingabe
BOOLEANWahr/Falsch-Umschalter
SELECTDropdown-Auswahl
PASSWORDPasswort-Eingabe (maskiert)
VECTORVektor-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");

Antwortformat

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 CodeBeschreibung
400Ungültiger Request Body oder ungültige Integration-ID
401Ungültiger oder fehlender API-Schlüssel
403Kein Zugriff auf diese Integration
404Integration nicht gefunden
409Ein Trigger mit diesem Namen existiert bereits in der Integration
429Rate Limit überschritten
500Interner 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.