Action oluştur
Agent'ların yürütebileceği bir action'ı entegrasyona ekleyin
Bir entegrasyon için yeni bir action oluşturur. Action'lar, agent'ların yürütebileceği yeteneklerdir; örneğin mesaj gönderme, veri getirme veya harici sistemlerde kayıt oluşturma.
Base URL
https://api.ajan.io/integrations/v1/{integrationId}/actions/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 | Action adı (maks. 100 karakter) |
description | string | No | Action açıklaması (maks. 1.000 karakter) |
code | string | No | Çalıştırılacak JavaScript kodu (maks. 150.000 karakter) |
inputFields | array | No | Action için giriş alanları |
requiresConfirmation | boolean | No | Çalıştırmadan önce kullanıcı onayı gerekip gerekmediği (varsayılan: true) |
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 |
contextActionId | string | No | Dinamik seçenekler için kullanılacak action UUID'si |
jsonSchema | string | No | Beklenen değeri tanımlayan JSON Schema (stringified JSON). Genellikle agent'ların üretmesi gereken şekli kısıtlamak için OBJECT alanlarıyla kullanılır. |
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 |
OBJECT | Nesne girişi |
FILE | Dosya girişi |
ID | Tanımlayıcı girişi |
Example
const axios = require("axios");
async function createAction(integrationId) {
const response = await axios.post(
`https://api.ajan.io/integrations/v1/${integrationId}/actions/create`,
{
name: "Get User Data",
description: "Retrieves user information from the internal API by user ID",
code: `
const response = await ld.request({
method: "GET",
url: "https://api.example.com/users/" + data.input.userId,
headers: {
Authorization: "Bearer " + data.auth.apiToken
}
});
if (response.status < 200 || response.status >= 300) {
throw new Error("User not found");
}
return response.json;
`,
inputFields: [
{
label: "User ID",
type: "TEXT",
description: "The unique identifier of the user",
placeholder: "e.g., user_123",
required: true
},
{
label: "Include Details",
type: "BOOLEAN",
description: "Include extended user details",
required: false
},
{
label: "Filters",
type: "OBJECT",
description: "Structured filters applied to the user lookup",
required: false,
jsonSchema: JSON.stringify({
type: "object",
properties: {
status: { type: "string", enum: ["active", "inactive"] },
limit: { type: "integer", minimum: 1, maximum: 100 }
},
required: ["status"]
})
}
]
},
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
}
);
console.log("Created action:", response.data.action);
}
createAction("550e8400-e29b-41d4-a716-446655440000");Response Format
Success Response (201 Created)
{
action: {
id: string; // UUID of the created action
name: string; // Action name
slug: string; // URL-friendly identifier (auto-generated)
description: string; // Action description
code: string | null; // JavaScript code
order: number; // Display order
requiresConfirmation: boolean; // Whether the action requires user confirmation before running
inputFields: Array<{
slug: string; // Field identifier
label: string; // Display label
type: string; // Field type
description: string;
placeholder: string | null;
required: boolean;
order: number;
options: Array<{label: string, value: string}> | null;
allowMultiSelect: boolean | null;
contextActionId: string | null;
jsonSchema: string | 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 action entegrasyonda zaten var |
| 429 | Rate limit aşıldı |
| 500 | İç sunucu hatası |
Code Execution Environment
Action kodu, şunlara erişimi olan sandboxed JavaScript ortamında çalışır:
data.input— Giriş alanlarının 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
Action kodu hataları zarifçe işlemelidir. Yakalanmayan hatalar action'ın başarısız olmasına ve agent'a bir hata mesajı dönmesine yol açar.
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.