Setup API
Kurulum ve senkronizasyon dosyalarının çağırdığı her uç nokta: kimlik doğrulama, gövdeler, yanıtlar, adım kimlikleri, sınırlar ve hatalar. Kendi yapay zeka kodlama aracınızı yazmak veya kurulumu CI üzerinden çalıştırmak için.
Yapay zeka kodlama aracınızın çalıştırdığı kurulum dosyası, bu API'nin istemcilerinden biridir. Bu sayfaya yalnızca başka bir istemci yazıyorsanız ihtiyaç duyarsınız: kendi yapay zeka kodlama aracınız, bir betik, bir CI işi. Buradaki her şey, kurulum dosyasının bizzat dayandığı unsurlardır ve sunucu her istemciyi aynı kurallara tabi tutar.
Temel URL: https://rendel.ai/api/setup
Bu, api.rendel.ai adresindeki SDK API'si değildir (bkz. REST API). Kurulum API'si, yönetim panelinin yazdıklarını yazar; bu nedenle yönetim panelinin yanında çalışır ve yönetim panelinin kendi kontrollerini uygular.
Kimlik doğrulama
GET /file dışındaki her uç nokta oturumun kurulum belirtecini alır ve yalnızca bu üstbilgide kabul eder:
Authorization: Bearer rd_st_0123456789abcdef01234567Bir belirteç, rd_st_ ve 24 küçük harfli hex karakterden oluşur. Yalnızca yönetim panelinin sunduğu dosyada bulunur ve başka hiçbir yerde yer almaz: Rendel yalnızca karmasını saklar. Sorgu dizesindeki bir belirteç okunmaz, dolayısıyla bir erişim günlüğüne asla girmez.
| Geçerlilik süresi | Oturumun yönetim panelinde açılmasından itibaren 24 saat |
| Kapsam | Yalnızca tek bir uygulama ve bu uç noktalar. Sohbetler, kullanıcılar veya gizli anahtarlar yok |
| Oturumlar | Uygulama başına bir açık oturum. Yönetim panelinde yeni bir oturum açmak sonuncusunu iptal eder |
| Dosyalar | Alınan her dosya yeni bir belirteç üretir ve önceki dosyanın belirtecini geçersiz kılar |
| Sahiplenme | İlk POST /start oturumu sahiplenir. O zamana kadar diğer tüm uç noktalar 409 not_started yanıtı verir |
| Sonlanma | POST /complete, POST /fail, yönetim panelinde Stop, canlıya geçiş (bir kurulum oturumu için) veya 24 saatin dolması. Belirteç anında çalışmayı durdurur |
İki tür oturum vardır. Canlıya alınmış bir uygulamada kurulum oturumu (rendel-setup.md) reddedilir. Senkronizasyon oturumu (rendel-sync.md) ise reddedilmez, ancak canlıdaki bir uygulamada yazma işlemleri öneri haline gelir: proposed ile 202 yanıtı verirler ve yönetim panelinde bir kişiyi beklerler. GET /context, session.writes olarak hangisinin geçerli olduğunu belirtir: apply veya propose. Yönetim panelinde belirtilmişse geliştiricinin neyin değiştiğine dair kendi cümlesi, API'de değil, yapıştırdıkları komut istemindedir: senkronizasyon bu değişiklikle başlar.
Sınırlar
| Sınır | Değer |
|---|---|
| Oturum başına istek | Sunucuda sayılan dakikada 120 istek. Aşılması durumunda: Retry-After ile 429 rate_limited |
| JSON gövdesi | 2 MB (413 too_large) |
| Logo | 2 MB; PNG, JPEG, WebP veya SVG |
| Knowledge | İstek başına 25 öge; en fazla 200.000 karakterlik bir metin |
| Actions | İstek başına 50 öge |
| Ekranlar | İstek başına 50 tanımlanmış ve 50 arşivlenmiş |
| Olaylar | İstek başına 50; her biri en fazla 8.000 karakter JSON içeren data |
Hatalar
Her hata, SDK API'si ile aynı olan tek bir biçime sahiptir:
{ "error": { "code": "invalid_body", "message": "items.0.content: Required" } }message, bir kişinin veya yapay zeka kodlama aracının adım atabileceği bir cümledir ve hatalı bir gövde için alanın adını belirtir. code, koşullara göre dallanma yapılacak değerdir.
| Durum | Kod | Anlamı | Yapılması gereken |
|---|---|---|---|
400 | invalid_json | Gövde JSON değil | Düzeltip yeniden gönderin |
400 | invalid_body | Gövde şemayla eşleşmiyor; bilinmeyen alanlar adıyla reddedilir | Adı belirtilen alanı düzeltip yeniden gönderin |
400 | empty_file | Bayt içermeyen bir dosya ile POST /logo | Görselin kendisini gönderin |
401 | missing_token | Authorization: Bearer rd_st_… üstbilgisi yok | Belirteci gönderin |
401 | invalid_token | Rendel tarafından verilmiş bir belirteç değil veya daha yeni bir dosya ile değiştirilmiş | Yeni bir dosya alın |
404 | unknown_code | GET /file: Rendel tarafından hiç verilmemiş bir kod | Komutu tekrar kopyalayın |
404 | app_not_found | Oturumun uygulaması silindi | — |
409 | not_started | POST /start öncesinde çağrıldı | POST /start çağrısı yapın |
409 | already_claimed | Bu oturumu başka bir yapay zeka kodlama aracı başlattı | Yeni bir dosya alın |
409 | app_live | Canlıya alınmış bir uygulamada kurulum oturumu | Senkronizasyon oturumu kullanın |
409 | draft_invalid | Görünüm taslağı geçerli değilken POST /logo | Önce PUT /appearance yapın |
410 | code_used, code_expired | GET /file: kod kullanıldı veya 15 dakikadan eski | Yeni bir komut alın |
410 | session_closed | Oturum tamamlandı, başarısız oldu, iptal edildi veya süresi doldu | Yeni bir dosya alın |
413 | too_large | Gövde veya logo sınırını aşıyor | İstek başına daha az veri gönderin |
415 | unsupported_type | PNG, JPEG, WebP veya SVG olmayan bir logo | — |
422 | invalid_appearance, invalid_experience | Yönetim panelinin de reddedeceği geçerli JSON | message alanını okuyun |
422 | — | Hiçbir ögenin kaydedilmediği /knowledge veya /actions | Her bir results[i].error alanını okuyun |
429 | rate_limited | Dakikada 120 isteğin üzerinde | Retry-After saniye kadar bekleyin; olayları toplu gönderin |
500 | internal | Bizden kaynaklı. İstek tarafından hiçbir şey değiştirilmedi | Bir kez tekrar deneyin |
Adımlar
Overview panelinde bu sırayla on üç adım bulunur. Bir adımı kimin kapattığı, bir yapay zeka kodlama aracının kendi raporunun ne yapabileceğini belirler: bir sunucu adımı için yalnızca Rendel'in gördüğü bir durum onu işaretler; yapay zeka kodlama aracının done demesi kaydedilir ancak hiçbir şeyi değiştirmez.
| id | Panel | Kapatan |
|---|---|---|
waiting | Waiting for your agent | sunucu: POST /start |
connected | Agent connected | sunucu: POST /start |
discover | Reading your code | yapay zeka kodlama aracı |
install | Installing the SDK | yapay zeka kodlama aracı |
identity | Connecting your users | yapay zeka kodlama aracı |
appearance | Applying your look | her ikisi |
experience | Defining the assistant | her ikisi |
knowledge | Filling the knowledge base | her ikisi; ayrıca bir kaynak dizine eklendiğinde de işaretlenir |
screens | Connecting screens | her ikisi; ayrıca bir derleme bir ekran kaydettiğinde de işaretlenir |
actions | Connecting actions | her ikisi |
verify | Building and verifying | sunucu: uygulamanın ilk el sıkışması |
test | Test conversation | sunucu: başarılı bir smoke testi |
done | Ready | her ikisi; POST /complete ile işaretlenir |
Yazma işlemi yapan her uç nokta kendi adımını bildirir: bir adıma yapılan ilk yazma işlemi onu başlatıldı olarak işaretler ve her yazma işlemi ne yaptığını belirten bir satır ekler. Bir yazma adımı, yapay zeka kodlama aracı daha sonraki bir adıma geçtiğinde tamamlanmış sayılır. Bu nedenle bir yapay zeka kodlama aracı POST /events uç noktasına yalnızca kod içinde gerçekleşen adımlar (discover, install, identity, verify) ve bir adımı skipped veya failed olarak işaretlemek için ihtiyaç duyar.
GET /file
GET /file?code=<32 hex> — belirteç gerektirmez. Bu, yönetim panelinin curl satırıdır:
curl -fsSL "https://rendel.ai/api/setup/file?code=<code>" -o rendel-setup.mdDosyayı, içinde yeni üretilmiş bir belirteçle birlikte text/markdown olarak yanıtlar. Kod bir kez ve 15 dakika boyunca çalışır; ardından 410 yanıtı verir. Yönetim panelindeki Download butonu da aynı dosyayı oluşturur.
POST /start
Oturumu sahiplenir. Panel, Waiting for your agent durumundan Agent connected durumuna geçer.
| Alan | Zorunlu | Açıklama |
|---|---|---|
tool | Evet | claude_code, cursor, codex, windsurf, copilot (GitHub Copilot), gemini veya kendi belirleyeceğiniz ad, en fazla 40 karakter |
model | Hayır | Model, en fazla 80 karakter |
os | Hayır | En fazla 40 karakter |
detected | Hayır | Bir keşif raporu; bkz. POST /events |
{ "ok": true, "session": { "id": "…", "kind": "setup", "status": "running", "expires_at": "…" }, "app": { "id": "…", "name": "…" }, "next": "GET /context" }Aynı tool, model ve os ile tekrar çağırmak bir yeniden başlatmadır ve aynı yanıtı verir. Farklı bir yapay zeka kodlama aracı 409 already_claimed alır.
GET /context
Yapay zeka kodlama aracının koda dokunmadan önce ihtiyaç duyduğu veriler. Salt okunur.
| Anahtar | İçerik |
|---|---|
app | id, name, slug, platform_hint, live |
session | id, kind, expires_at, writes (apply veya propose) |
profile | Kişinin başlangıçta girdiği bilgiler: links, description, is_live; brand_hints; son detected raporu |
intake.knowledge | Rendel'in bu bağlantılardan daha önce okudukları: başlık, tür, adres, durum ve her birinden bir alıntı |
config | Her bir ögenin origin ve external_key değeriyle birlikte mevcut yapılandırması: appearance (taslak ve yayımlanmış), experience.persona, knowledge, actions (needs_key ile birlikte, asla bir gizli anahtar içermez), tanımlanmış screens ve son manifest'in aksiyon ve rota adları |
keys | Test ve canlı yayımlanabilir anahtarlar |
sdk | Flutter git URL'si ve ref'i, web SDK sürümü ve URL'si, kullanıma hazır kod parçacıkları ve dokümantasyon adresi |
api | base: bu API'nin adresi |
steps | Her bir adım ve bir yapay zeka kodlama aracının bildirebileceği adımlar |
facts | GET /status içindeki gibi |
schemas | Aşağıdaki her bir istek gövdesinin, sunucunun doğrulama yaptığı tanımlardan oluşturulmuş JSON Schema'sı |
POST /events
Yapay zeka kodlama aracının kendi ilerlemesi. Tek bir olay, en fazla 50 ögelik bir dizi veya { "events": [...], "detected": {...} }.
| Alan | Zorunlu | Açıklama |
|---|---|---|
step | Evet | waiting ve connected hariç herhangi bir adım kimliği |
status | Evet | started, progress, done, skipped, failed veya waiting |
title | Hayır | En fazla 120 karakter; paneldeki satır |
detail | Hayır | Yapılan bir varsayım gibi en fazla 2.000 karakter |
data | Hayır | En fazla 8.000 karakterlik herhangi bir JSON nesnesi |
Keşif raporu olan detected, şunlardan herhangi birini alabilir: platform, framework, router, http, auth, locales (en fazla 40), screens ve apiCalls (sayılar), themeFile, darkTheme (boolean), fonts (en fazla 10), logoFile, signIn, signUp. Mevcut olanla birleştirilir ve uygulama ile birlikte saklanır.
signIn, bir hesap ve parola aldığında uygulamanın kendi API'sindeki oturum açma işlemidir. signUp, bir kullanıcı oluşturan istektir. Her biri en fazla 12 alan içeren { "url": "https://…", "fields": [{ "name": "email", "secret": false, "required": true, "type": "string", "format": "email" }] } biçimindedir. Yalnızca name zorunludur; required varsayılan olarak true değerini alır. Yalnızca alan adlarını taşırlar, asla bir değer içermezler. Test sayfası, hiçbir API belgesi bunları açıklamadığında, bir test kullanıcısı olarak oturum açmak ve bir test kullanıcısı oluşturmak için bunları kullanır.
{ "accepted": 2, "ids": [101, 102], "detected": true }PUT /appearance
Tema, taslak içine yazılır. Kurulum belirteci hiçbir zaman yayımlama yapmaz.
| Alan | Zorunlu | Açıklama |
|---|---|---|
theme | Evet | Yönetim panelinin teması: surface, onSurface, accent, onAccent (dördü birlikte, opak #rrggbb), surfaceRaised, surfaceHigh, surfaceSunk, radius, fontFamily, style ve geri kalanı. Tüm şema, bağlamdaki schemas.appearance alanındadır |
themeDark | Hayır | Uygulamanın kendi karanlık teması: aynı belirteçler, herhangi bir alt küme. Dışarıda bıraktıkları türetilir |
copilot | Hayır | launcherLabel (en fazla 24 karakter), composerHint, attachIcon, voiceIcon, sendIcon |
reason | Hayır | Tema dosyası gibi nereden geldiği. Yönetim panelinde değerlerin yanında gösterilir |
Tema, daha önce yüklenmiş bir logoyu koruyarak taslağın temasının yerine geçer. Asistanın adı, karşılama mesajı ve öneriler bu uç noktanın değil, Experience bölümünün konusudur.
{ "saved": true, "changed": true, "draft": true, "warnings": [
{ "check": "Body text on the surface", "what": "prose and titles", "ratio": 3.9, "minimum": 4.5, "fix": { "token": "onSurface", "suggested": "#2B2B2B" } }
] }warnings, açık ve koyu modda (koyu moddaki bir belirteç themeDark. adını alır) minimum kontrastı karşılamayan her renk çiftini ve uygun olduğunda geçerli olabilecek aynı tonda bir değeri listeler. Bunlar uyarıdır, ret değildir: SDK, cihazdaki okunaksız mürekkep rengini her iki durumda da koyulaştırır. Önerileri uygulayın ve tekrar gönderin.
POST /logo
Multipart form verisi, dosya file adlı bir alanda yer alır:
curl -X POST "https://rendel.ai/api/setup/logo" \
-H "Authorization: Bearer $RENDEL_TOKEN" \
-F "file=@assets/images/logo.svg"PNG, JPEG, WebP veya SVG, en fazla 2 MB. Yönetim panelinin bir logoyu sakladığı yerde saklanır ve taslak temada ayarlanır.
{ "saved": true, "draft": true, "logoAssetId": "…" }PUT /experience
Asistan, taslak persona içine yazılır. Bir yamadır: dışarıda bırakılan alanlar değerlerini korur.
| Alan | Sınır | Açıklama |
|---|---|---|
assistantName | 40 | Persona ve yazışma başlığı için tek bir ad |
tone | 4.000 | Nasıl konuştuğu |
instructions | 4.000 | Nelerde yardımcı olduğu |
guardrails | 4.000 | Satır başına bir Always … veya Never … |
topics | 20 × 120 | Tartışmayacağı konular |
languages | 12 | Dil alt etiketleri, varsayılan ilki olacak şekilde |
welcomeTitle | 80 | Karşılama ekranının başlığı |
welcomeBody | 160 | Başlığın altındaki satır |
suggestions | 4 × 60 | Karşılama ekranındaki başlangıç ifadeleri |
reason | 1.000 | Nereden geldiği |
{ "saved": true, "draft": true, "personaVersion": 3, "changed": true }POST /knowledge
En fazla 25 öge, { "items": [...] }. Her biri external_key değerine göre (en fazla 200 karakter) eklenir veya güncellenir; bu sayede bir anahtarın tekrar gönderilmesi ilgili kaynağı günceller.
| Öge | Alanlar |
|---|---|
| Text | external_key, kind: "text", title (en fazla 160), content (en fazla 200.000), reason |
| Link | external_key, kind: "url", title (isteğe bağlı), uri (herkese açık bir http veya https adresi), reason |
| Archive | op: "archive", external_key, reason |
Bir bağlantıyı, yönetim panelinde eklenen bir bağlantıyla aynı koruma mekanizmasından geçirerek Rendel'in sunucusu getirir; istemci yalnızca adresi gönderir. Arşivleme, bir kaynağı silmeden kullanım dışı bırakır. Yeni ve değiştirilen metinler hemen dizine eklenir.
{ "created": 2, "updated": 0, "unchanged": 1, "archived": 0, "failed": 0,
"results": [{ "external_key": "plans", "ok": true, "op": "created", "id": "…", "chunks": 3 }],
"note": "…" }Bir ögenin başarısız olması diğerlerini başarısız kılmaz. Yalnızca hiçbiri kaydedilmediğinde yanıt 422 olur.
POST /actions
external_key değerine göre eklenen veya güncellenen ve yönetim panelinin kendi kurallarıyla denetlenen en fazla 50 HTTP aksiyonu, { "items": [...] }.
| Alan | Zorunlu | Açıklama |
|---|---|---|
external_key | Evet | Örneğin GET /v1/orders/{id} gibi belirleyeceğiniz ad |
name | Evet | snake_case, en fazla 64 karakter: modelin gördüğü araç adı |
description | Evet | En fazla 500 karakter: ne zaman çağrılacağı |
method | Evet | GET, POST, PUT, PATCH veya DELETE |
risk | Hayır | read (varsayılan), write veya destructive |
confirm_template | Bir yazma işlemi için | En fazla 300 karakter, bir değerin geleceği yer {param} |
url_template | Evet | Üretim ortamı https adresi, bir değerin geleceği yer {{param.x}} |
body_template | Hayır | POST, PUT ve PATCH için dize olarak bir JSON nesnesi |
params | Hayır | En fazla 20: name, description, required, example, type (string, number, boolean veya array), items (bir listenin öge türü), enum (en fazla 50 izin verilen değer), editable (true veya false: kullanıcı bunu onay kartında değiştirebilir), title (onay kartındaki etiketi, en fazla 60 karakter) ve titles (örneğin {"tr": "İş e-postası"} gibi dil etiketine göre bu etiket, en fazla 16) |
result_path, result_fields, result_limit | Hayır | Modelin yanıttan neleri gördüğü; result_limit 1–50, varsayılan 5 |
timeout_ms | Hayır | 1.000–30.000, varsayılan 10.000 |
auth | Hayır | none (varsayılan) veya user: oturum açmış kişinin kendi belirteciyle gönderilir |
auth_name | Hayır | Belirteç Bearer olarak gönderilmediğinde auth: "user" için: header:X-Auth-Token, query:token veya cookie:session |
needs_key | Hayır | { kind: "bearer" | "header" | "query", name?, note? }: uç nokta tek başına veya (auth: "user" ile) kullanıcının belirtecinin yanında paylaşılan bir anahtar ister |
reason | Hayır | Nedeni |
Bir arşiv ögesi { "op": "archive", "external_key": "…" } biçimindedir.
Gizli bilginin girilebileceği bir alan yoktur. Paylaşılan bir anahtar isteyen uç nokta bunu needs_key içinde belirtir (anahtarın türü ve nereye gideceği, asla anahtarın kendisi değil) ve bir kişi Add key ile bu bilgiyi girene kadar kapalı olarak kaydedilir; girildiğinde ise uç noktanın ana makinesi için bir paylaşılan anahtar haline gelir.
auth: "none"olduğunda, paylaşılan anahtar tek kimlik bilgisidir ve aksiyon yalnızca okuma yapabilir.auth: "user"olduğunda, oturum açmış kişinin belirtecinin yanında gönderilir: uygulamanın anahtarını ve kullanıcının oturumunu birlikte isteyen bir API'nin yapısı. Aksiyon okuma veya yazma yapabilir. Anahtar, belirtecin gittiği yere gitmemelidir: birbeareranahtarı, belirtecinauth_name(header:X-Auth-Token) ile taşınmasını gerektirir ve birheaderanahtarı, belirtecin üstbilgisini adlandıramaz. Böyle bir öge bir gerekçeyle reddedilir.
Veriyi değiştiren her şey auth: "user" gerektirir. Böyle bir aksiyonda, bir parametredeki "editable": true değeri, kullanıcının onaylamadan önce onay kartı üzerinde bu değeri değiştirmesine olanak tanır: bir miktar, bir not, birkaç seçenekten biri. Asla bir kimlik veya uygulamanın hesapladığı bir tutar olamaz. Düzenlenebilir bir parametreye sahip read aksiyonu reddedilir, çünkü okuma işleminin kartı yoktur. Bir aksiyonda bir kişinin daha önce girmiş olduğu anahtar, aksiyon tekrar gönderildiğinde korunur ve halihazırda paylaşılan bir anahtara sahip olan bir aksiyon yeniden anahtar bekleme durumuna alınmaz.
{ "external_key": "GET /v1/pets", "name": "my_pets", "description": "The signed-in person's pets.",
"method": "GET", "url_template": "https://api.example.com/v1/pets",
"auth": "user", "needs_key": { "kind": "header", "name": "X-App-Key" } }{ "failed": 0, "needs_key": ["find_stores"],
"results": [{ "external_key": "GET /v1/stores", "ok": true, "name": "find_stores", "needs_key": true }] }POST /screens
İstemcinin kodda registerRoute ile kaydettiği ekranları tanımlar. Bir tanımlama bir plandır: yönetim paneli, bir derlemenin manifestosu bunları adlandırana kadar bu ekranları planned olarak gösterir.
{
"screens": [{
"name": "order_detail",
"title": "Orders › Order",
"description": "One order: its items, delivery status and payment.",
"params": { "order_id": { "type": "string", "required": true, "fromActions": true } },
"file": "lib/rendel/routes.dart",
"deep_link": "/orders/:id"
}],
"archive": [{ "name": "old_settings", "reason": "Removed in 2.3" }]
}name snake_case biçimindedir; title 1–60 karakter; description 1–300 karakter; parametreler registerRoute içindeki gibidir. Aynı adla yeniden tanımlandığında ekran güncellenir.
{ "planned": 2, "added": 1, "updated": 0, "unchanged": 1, "archived": 1, "unknown": [], "note": "…" }GET /status
Kimin ne bildirdiğinden bağımsız olarak Rendel'in gördükleri. Kurulum dosyası beklerken bunu sorgular.
| Anahtar | İçerik |
|---|---|
app_ready | Uygulama çağrıda bulunup manifestosunu gönderdiğinde true |
knowledge_ready | Hiçbir kaynak dizine eklenmeyi beklemediğinde veya dizine ekleniyor olmadığında true |
screens_missing | En son manifestonun kaydetmediği tanımlanmış ekran sayısı. 0 üzerindeyse, bir registerRoute çağrısı çalışmamıştır veya uygulama eklendiğinden beri çağrıda bulunmamıştır |
facts.handshakeAt | Uygulamanın ilk çağrıda bulunduğu zaman |
facts.manifest | Son manifesto: sdkVersion, actionCount, routeCount ve adları |
facts.knowledge | sources, indexed, pending, indexing, failed, chunks |
facts.declaredScreens | Tanımlanmış ve arşivlenmemiş ekranlar |
facts.httpActions | enabled ve needsKey |
facts.smoke | Son smoke testi: passed, total içinden ok |
facts.liveAt | Uygulamanın canlıya geçtiği zaman veya null |
go_live | Her biri { key, label, ok, detail } olan dört Go live kontrolü |
steps | Her adımın durumu: pending, active, done, failed veya skipped |
POST /smoke
Gövde içermez. Rendel, test tarafı üzerinden uygulamanın kendi yapılandırmasından (önerileri, bilgi tabanı, bir okuma aksiyonu) derlenen üç ila beş soruyu Rendel'e sorar ve her yanıtı değerlendirir: bilgiyi kullandıysa grounded, bir aksiyon çağırdıysa action-backed. En az %80'i bunlardan biri veya diğeri olduğunda geçer. 150 saniyeye kadar süre tanıyın.
{ "id": "…", "passed": true, "createdAt": "…", "platformFailure": false,
"results": [{ "question": "Where is my order?", "from": "suggestion", "answer": "…", "actions": ["get_order"], "grounded": false, "actionBacked": true, "ok": true }] }Zayıf bir yanıttan ziyade her yanıt Rendel tarafında bir hata olduğunda platformFailure true olur. Yapılandırmadaki hiçbir şey bu sonucu değiştirmeyeceğinden hiçbir şeyi değiştirmeyin ve daha sonra tekrar çalıştırın.
Son çalıştırma, Go live kontrolünün okuduğu değerdir. Yönetim panelindeki Run smoke test butonu, aynı testi bir belirteç olmadan çalıştırır.
GET /smoke
Bu yanıtı kaybeden bir istemci için, POST /smoke yanıtının biçiminde en son çalıştırma. Hiçbir şey çalıştırmaz. İlk çalıştırmadan önce { "run": null } yanıtını verir.
POST /complete
Oturumu sonlandırır. Belirteç çalışmayı durdurur.
| Alan | Zorunlu | Açıklama |
|---|---|---|
summary | Evet | Markdown, en fazla 20.000 karakter: nelerin yapıldığı |
files_changed | Hayır | En fazla 500 dosya yolu |
human_todos | Hayır | En fazla 50: bir anahtar girmek gibi yalnızca bir insanın yapabileceği şeyler |
{ "ok": true, "status": "completed", "token": "revoked" }POST /fail
İstemci devam edemiyor. Belirttiği adım (veya bir olaya sahip en son adım) panelde gerekçesiyle birlikte kırmızıya döner ve oturum sona erer.
| Alan | Zorunlu | Açıklama |
|---|---|---|
reason | Evet | En fazla 2.000 karakter |
step | Hayır | Bir yapay zeka kodlama aracı adım kimliği |
{ "ok": true, "status": "failed", "token": "revoked" }Kurulum dosyası ve içe aktarımı
rendel/setup.json, bir uygulamayı JSON Schema'sında (SetupFileV1) belirtildiği şekilde tek bir belgede açıklar: her bir ögesi external_key ile anahtarlanmış appearance, experience, knowledge, ekranlar ve aksiyonlar. Bir yapay zeka kodlama aracı bunu dosya yoluna yazar; bir insan da bunu elle yazabilir.
POST /api/setup/import
Authorization: Bearer <import code>
Content-Type: multipart/form-data| Alan | |
|---|---|
manifest | Dosya veya bir alan olarak metni. En fazla 2 MB |
logo | İsteğe bağlı. PNG, JPEG, WebP veya SVG, en fazla 2 MB |
İçe aktarma kodu (32 hex karakteri), komutla birlikte Overview ekranından gelir; kurulum oturumu açıkken en fazla 24 saat boyunca çalışır ve tamamlanan bir içe aktarma işlemi oturumu kapatır. İstek günlüklerinin dışında kalması için URL'de değil, Authorization üstbilgisinde gönderin. Eski ?code=<import code> biçimi bir sürüm boyunca daha kabul edilecek, ardından kaldırılacaktır. Dosyayı Overview ekranının bekleme adımına veya Sync iletişim kutusuna bırakmak, oturum açılmış bir oturumdan aynı işi yapar.
Herhangi bir şey yazılmadan önce tüm dosya ayrıştırılır ve kimlik bilgileri açısından taranır; bu sayede reddedilen bir dosya hiçbir şeyi değiştirmez. Ardından her bölüm, bir yapay zeka kodlama aracının çağıracağı sırayla kendi Setup API işlemi olarak çalışır. Bir dosya, ilk olarak içe aktarılan büyük bir bilgi tabanı için yalnızca $schema, version, app ve knowledge içerebilir; tam bir dosya ayrıca summary alanına da ihtiyaç duyar. Aynı dosyayı tekrar içe aktarmak güvenlidir: her yazma işlemi external_key ile eşgüçlüdür.
200, { ok, kind, mode, file, sections, warnings } yanıtını verir: mode, applied veya canlı bir uygulamada her yazma işleminin Sync review içinde bir öneri haline geldiği proposed değeridir; file, full veya knowledge değeridir.
| Durum | error.code | Ne zaman |
|---|---|---|
400 | invalid_json, invalid_body, unsupported_version, wrong_app | Dosya JSON değilse, şemayı karşılamıyorsa, bu sunucunun bilmediği bir sürüme sahipse veya başka bir uygulamayı adlandırıyorsa |
404 | unknown_code | Hiçbir oturum bu koda sahip değilse veya hiçbir kod gönderilmediyse |
409 | app_live | Canlıya alınmış bir uygulamada yapılan kurulum; senkronizasyon kullanın |
410 | session_closed | Oturum sona erdiğinde |
413 | too_large | Yaklaşık 4,4 MB üzerindeyse: bilgi tabanını ilk içe aktarma işlemine ayırın |
422 | secret_refused | Dosyadaki bir şey kimlik bilgisine benziyorsa; hiçbir şey yazılmadı |
429 | rate_limited | Çok fazla içe aktarma; bekleyip tekrar deneyin |
Her hata { error: { code, message } } biçimindedir.