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/createDedicated deployments Tüm isteklerde
api.ajan.com'u/api/publicile değiştirin.
Required Scopes
Bu endpoint INTEGRATION_API kapsamı gerektirir.
Parameters
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
integrationId | string | Yes | Entegrasyonun UUID'si |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Trigger adı (maks. 100 karakter) |
description | string | No | Trigger açıklaması (maks. 90 karakter) |
pollingCode | string | No | Yeni olaylar için polling yapan JavaScript kodu (maks. 1.000 karakter) |
inputFields | array | No | Trigger yapılandırması için giriş alanları |
Input Field Schema
Her giriş alanının şu özellikleri vardır:
| Property | Type | Required | Description |
|---|---|---|---|
label | string | Yes | Alan etiketi (maks. 100 karakter) |
type | string | No | Alan türü (varsayılan: "TEXT") |
description | string | No | Alan açıklaması (maks. 500 karakter) |
placeholder | string | No | Placeholder metni (maks. 200 karakter) |
required | boolean | No | Alanın zorunlu olup olmadığı (varsayılan: false) |
options | array | No | SELECT türü alanlar için seçenekler |
allowMultiSelect | boolean | No | SELECT alanlarında çoklu seçime izin ver |
Field Types
| Type | Description |
|---|---|
TEXT | Tek satırlı metin girişi |
MULTI_LINE_TEXT | Çok satırlı metin girişi |
NUMBER | Sayısal giriş |
BOOLEAN | True/false anahtarı |
SELECT | Açılır liste seçimi |
PASSWORD | Parola girişi (maskeli) |
VECTOR | Vektör girişi |
Example
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)
{
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 Code | Description |
|---|---|
| 400 | Geçersiz istek gövdesi veya geçersiz entegrasyon ID |
| 401 | Geçersiz veya eksik API anahtarı |
| 403 | Bu entegrasyona erişim yok |
| 404 | Entegrasyon bulunamadı |
| 409 | Bu ada sahip bir trigger entegrasyonda zaten var |
| 429 | Rate 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 nesnedata.auth— Entegrasyon için yapılandırılmış bağlantı kimlik bilgilerini içeren nesneld.request— Harici API'lere HTTP isteklerild.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.