API ve otomasyon¶
TraceMint'in HTTP API'si web arayüzünün kullandığı işlemleri otomasyona açar. REST yollarının çoğu /api/v1 altında bulunur. Endpoint'e erişmek için oturum veya uygun kapsamlı API anahtarı gerekir; rol, kuruluş ve proje üyeliği ayrıca uygulanır. Yönetim arayüzünden anahtar oluşturma ve iptal etme adımları Settings bölümündedir.
Kimlik doğrulama ve en düşük yetki¶
Bir otomasyon için kuruluşunuzun uygulama taban adresini kullanın. API anahtarını X-API-Key başlığında gönderin; başına sk_ eklemeyin. Oluşturulan ham anahtar yalnız bir kez gösterilir. Uygun scope örnekleri projects.read, scans.read, scans.write, findings.read, export.read, settings.manage ve etkin pentest için pentest:read / pentest:write / pentest:report değerleridir. Bir anahtar sahibinin rolünden daha geniş yetki alamaz; proje sınırı varsa diğer projelere erişemez.
Örnek, anahtarı komut satırında açıkça yazmadan okunabilir proje listesini ister:
read -r -s TM_API_KEY
curl --fail-with-body --silent --show-error \
-H "X-API-Key: ${TM_API_KEY}" \
'https://staging.tracemint.ai:8080/api/v1/projects?page=1&page_size=20'
unset TM_API_KEY
Bu örnekte page 1'den başlar, page_size 1–100 aralığındadır. Girişten dönen bearer token da Authorization: Bearer <token> ile kullanılabilir; etkileşimli oturumun süre/iptal davranışına bağlıdır. Gizli değeri URL sorgusuna, kaynak depoya veya paylaşılan loga koymayın.
Sık kullanılan işlem yolları¶
| İşlem | Yöntem ve yol | Temel izin |
|---|---|---|
| Projeleri listele | GET /api/v1/projects |
projects.read |
| Proje oluştur | POST /api/v1/projects |
projects.write |
| Tarama modlarını öğren | GET /api/v1/scans/modes |
Geçerli oturum veya API anahtarı |
| Proje taraması başlat | POST /api/v1/scans/projects/{project_id}/scans |
scans.write ve proje erişimi |
| Tarama durumunu oku | GET /api/v1/scans/{scan_id} |
scans.read ve proje erişimi |
| Taramaları karşılaştır | GET /api/v1/scans/{base_scan_id}/compare/{compare_scan_id} |
scans.read, iki taramaya erişim ve karşılaştırılabilirlik koşulları |
| Bulguları filtrele | GET /api/v1/findings |
findings.read |
| GitOps kanıtıyla değerlendirme | POST /api/v1/gitops/argocd/evaluate |
findings.read ve erişilebilir tarama |
| GitOps scan kanıt kuyruğu | GET /api/v1/gitops/argocd/applications |
findings.read ve erişilebilir tarama verisi |
| Kyverno/Gatekeeper YAML üret | POST /api/v1/gitops/admission-policy/export |
findings.read |
Yazma isteklerinin JSON alanlarını ezbere varsaymayın: ilgili ekranın formunu veya kuruluşunuzun sürümüne ait API sözleşmesini kullanın. Örneğin GitOps değerlendirmesinde uygulama, namespace, cluster, scan ID, commit SHA ve değişmez image digest birlikte bağlanır. deployment_gate.status=allowed tek başına tüm kanıtların tamamlandığı anlamına gelmez; quality_gate.passed, kontrol sonuçları ve evidence_chain alanlarını birlikte değerlendirin. Admission YAML üretme işlemi cluster'a uygulama yapmaz.
GET /api/v1/gitops/argocd/applications en yeni 5.000 tarama kaydı penceresindeki tamamlanmış taramalardan satırlar türetir; tüm tarihçeyi veya canlı ArgoCD uygulama envanterini vermez. limit 1–100, offset 0–10000, gate all/blocked/allowed; isteğe bağlı environment ve q filtreleri vardır. Yanıttaki pagination.has_more ile sonraki sayfaya geçin. Bir uygulamanın tekrarlanan taramaları ayrı satır olabilir.
Yanıt ve hata davranışı¶
401: anahtar/oturum geçersiz, süresi dolmuş veya iptal edilmiş; gizli değeri yenileyin.403: izin ya da proje erişimi yetersiz; rol ve anahtar scope'unu yöneticinizle doğrulayın.404: kaynak bulunmuyor veya erişilebilir değil; doğru kuruluş/proje/tarama kimliğini kontrol edin.409: kayıt/sürüm çakışması; güncel sunucu durumunu yeniden okuyup isteği tekrar değerlendirin.422: istek gövdesi veya alan kısıtı geçersiz;detailiçindeki alan hatalarını düzeltin.429: hız sınırı; istek sıklığını azaltıp yeniden deneyin.
API hata yanıtları genelde JSON detail alanını içerir. Başarısız liste isteğini “hiç bulgu yok” sonucuna dönüştürmeyin. Sayfalama ve filtrelerin sunucu tarafında olduğu ekranlarda yalnız ilk sayfayı toplam sonuç gibi kullanmayın.
Şema ve gerçek zamanlı durum¶
/docs, /redoc ve /openapi.json varsayılan olarak kapalıdır; kuruluş operatörü TRACEMINT_ENABLE_PUBLIC_DOCS ile açarsa kendi sürümünüzün şemasını oradan okuyabilirsiniz. Tarama ilerlemesi için uygulama WebSocket kullanır; yalnız HTTP isteğinin dönmesine bakarak taramanın tamamlandığını varsaymayın. İşin durumunu GET /api/v1/scans/{scan_id} üzerinden de sorgulayabilirsiniz.
API kullanımında sıralama: anahtarı sınırlı scope ile oluşturun → erişimi bir GET ile doğrulayın → yazma isteğinden önce hedef/kapsamı teyit edin → dönen ID'yi kaydedin → durum ve kanıtı ayrı sorgulayın → artık kullanılmayan anahtarı iptal edin.