HTTP API

Editör, masaüstü uygulaması ve kimlik alanı aynı arka uçla konuşur: https://api.axion-robot.com.

Sürümleme

Bütün uçlar /api/v1/… altındadır. Sürümsüz /api/…yolları geçiş takma adıdır: çalışır ama yanıtta işaretlenir.

HTTPİstek ve yanıt
GET /api/v1/auth/me        → X-API-Version: v1
GET /api/auth/me           → X-API-Version: v1
                             Deprecation: true
                             Link: </api/v1/auth/me>; rel="successor-version"
GET /api/v9/auth/me        → 404 api_version_unknown
Neden sürüm

Editör kullanıcının makinesinde çalışır ve aylarca güncellenmeyebilir. Uçları kırmadan geliştirebilmek için yol sürümlenir: yeni davranış /api/v2/… altında doğar, v1 eskiyi konuşmaya devam eder. Bilinmeyen bir sürüm sessizce en yeniye düşmez.

Sunulan sürümler /healthz içinde bildirilir:

JSONSağlık kontrolü
GET /healthz
{ "ok": true, "api_versions": ["v1"], "api_version_current": "v1" }

Kimlik

Ne yapar
POST /api/v1/auth/otp/requestE-postaya altı haneli kod gönderir.
POST /api/v1/auth/otp/verifyKodu doğrular; hesap yoksa açar, oturum verir.
GET /api/v1/auth/meOturumun sahibi.
POST /api/v1/auth/logoutOturumu kapatır.

Oturum iki yolla taşınır: tarayıcı panelinde çerez, editörde Bearer başlığı. Çerez varsa o kazanır ve yazma isteklerinde CSRF aranır; çerezsiz çağrılar CSRF’e tabi değildir.

Hesap numaralandırması yok

Kod isteği, adresin kayıtlı olup olmadığını söylemez. Yanıt her iki durumda da aynıdır.

Lisans

Ne yapar
POST /api/v1/licenses/claimAnahtarı oturumdaki hesaba bağlar (geri alınamaz).
GET /api/v1/licenses/mineHesaba bağlı lisans ya da null.
POST /api/v1/licenses/activateBu kurulum için koltuk ayırır (oturum gerekmez).
POST /api/v1/licenses/validateKirayı tazeler; çevrimdışı süre buradan gelir.

Bulut

Ne yapar
GET /api/v1/cloud/projectsYedeklenmiş programlar.
POST /api/v1/cloud/projectsProgram kaydeder ya da günceller.
POST /api/v1/cloud/filesDosya yükler (base64).
GET /api/v1/cloud/files/:idDosyayı indirir.

Nesne deposu yapılandırılmamışsa dosya uçları açıkça kapalı der (503 storage.disabled), sessizce “kaydettim” demez.

Sürümler

GET /api/v1/releases/latest
{ "version": "1.2.0", "notes": "…", "files": {
    "mac-arm": { "url": "https://…", "sha256": "…", "size": 0 } } }

Kurulum betiği ve indirme merkezi bu manifesti okur. İndirme adresini değiştirebilmek, kullanıcıya başka bir ikili indirtmek demektir; bu yüzden manifesti yalnız yönetici yazabilir.

Hatalar

JSONHata biçimi
{ "error": { "code": "license.claimed",
             "message": "Bu lisans başka bir hesaba bağlı." } }

Kod makine içindir, mesaj insan için ve Türkçedir. Hız sınırına takılan istek 429 rate_limited alır.