İçeriğe geç
ajan.io

Belgeler menüsü

Bu sayfada

Trigger oluştur

İş akışlarını başlatabilecek bir trigger'ı entegrasyona ekleyin

Bir entegrasyon için yeni bir trigger oluşturur. Trigger'lar, entegrasyonların harici olaylara göre (genellikle harici bir sistemi değişiklik için polling ederek) iş akışlarını başlatmasını sağlar.

Base URL

https://api.ajan.io/integrations/v1/{integrationId}/triggers/create

Dedicated deployments Tüm isteklerde api.ajan.com'u /api/public ile değiştirin.

Required Scopes

Bu endpoint INTEGRATION_API kapsamı gerektirir.

Parameters

Path Parameters

ParameterTypeRequiredDescription
integrationIdstringYesEntegrasyonun UUID'si

Request Body

ParameterTypeRequiredDescription
namestringYesTrigger adı (maks. 100 karakter)
descriptionstringNoTrigger açıklaması (maks. 90 karakter)
pollingCodestringNoYeni olaylar için polling yapan JavaScript kodu (maks. 1.000 karakter)
inputFieldsarrayNoTrigger yapılandırması için giriş alanları

Input Field Schema

Her giriş alanının şu özellikleri vardır:

PropertyTypeRequiredDescription
labelstringYesAlan etiketi (maks. 100 karakter)
typestringNoAlan türü (varsayılan: "TEXT")
descriptionstringNoAlan açıklaması (maks. 500 karakter)
placeholderstringNoPlaceholder metni (maks. 200 karakter)
requiredbooleanNoAlanın zorunlu olup olmadığı (varsayılan: false)
optionsarrayNoSELECT türü alanlar için seçenekler
allowMultiSelectbooleanNoSELECT alanlarında çoklu seçime izin ver

Field Types

TypeDescription
TEXTTek satırlı metin girişi
MULTI_LINE_TEXTÇok satırlı metin girişi
NUMBERSayısal giriş
BOOLEANTrue/false anahtarı
SELECTAçılır liste seçimi
PASSWORDParola girişi (maskeli)
VECTORVektör girişi

Example

javascript
const axios = require("axios");

async function createTrigger(integrationId) {
  const response = await axios.post(
    `https://api.ajan.io/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 ld.request({
          method: "GET",
          url: "https://api.example.com/issues",
          headers: {
            Authorization: "Bearer " + data.auth.apiToken
          },
          params: {
            since: new Date(Date.now() - 60 * 60 * 1000).toISOString(),
            project: data.input.projectId
          }
        });

        if (response.status < 200 || response.status >= 300) {
          throw new Error("Failed to fetch issues");
        }

        const issues = response.json;
        return issues.map((issue) => ({
          id: issue.id,
          timestamp: issue.created_at,
          data: {
            title: issue.title,
            description: issue.description
          }
        }));
      `,
      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");

Response Format

Success Response (201 Created)

typescript
{
  trigger: {
    id: string;           // UUID of the created trigger
    name: string;         // Trigger name
    slug: string;         // URL-friendly identifier (auto-generated)
    description: string;  // Trigger description
    type: string;         // Trigger type
    pollingCode: string | null;  // JavaScript polling code
    inputFields: Array<{
      slug: string;       // Field identifier
      label: string;      // Display label
      type: string;       // Field type
      description: string;
      placeholder: string | null;
      required: boolean;
      options: Array<{label: string, value: string}> | null;
      allowMultiSelect: boolean | null;
    }>;
  };
}

Error Handling

Status CodeDescription
400Geçersiz istek gövdesi veya geçersiz entegrasyon ID
401Geçersiz veya eksik API anahtarı
403Bu entegrasyona erişim yok
404Entegrasyon bulunamadı
409Bu ada sahip bir trigger entegrasyonda zaten var
429Rate limit aşıldı
500İç sunucu hatası

Polling Code Environment

Trigger polling kodu, şunlara erişimi olan sandboxed JavaScript ortamında çalışır:

  • data.input — Kullanıcının yapılandırdığı giriş alanı değerlerini içeren nesne
  • data.auth — Entegrasyon için yapılandırılmış bağlantı kimlik bilgilerini içeren nesne
  • ld.request — Harici API'lere HTTP istekleri
  • ld.log — Çalıştırma logları
  • Standart JavaScript built-in'leri

Polling kodu bir olay dizisi döndürmelidir. Dönen her olay ilişkili iş akışını başlatır.

Polling kodu hataları zarifçe işlemelidir. Yakalanmayan hatalar trigger'ın başarısız olmasına ve olayların kaçırılmasına yol açabilir.

ajan, API anahtarınızı korumak ve uygulamalarınızın güvenliğini sağlamak için tarayıcı kaynaklı istekleri bilinçli olarak engeller. Daha fazla bilgi için API Key Best Practices kılavuzuna bakın.