Geliştiriciler için
Platformunuza “Kampüsteyim ile devam et” butonunu ekleyin. Öğrencinin doğrulanmış olup olmadığını güvenli, şifreli API ile öğrenin — kişisel veri asla dönmez.
Şimdilik tek yetenek: öğrencinin Kampüsteyim’de doğrulanmış üye olup olmadığını öğrenmek. İleride kapsam genişleyecek.
E-posta + telefon. Kod mail ile gelir; API anahtarı hesabınız açılınca size mail edilir.
Sorgu düz metin döndürmez. AES-256-GCM zarf + ayrı unwrap isteği; çözümleme SDK içinde, sistemler arasında kalır.
Dakika/gün limitleri, HTTPS zorunluluğu, SDK başlıkları, IP/fingerprint değişiminde unwrap reddi.
Hesap ban, karantina, API revoke/silme ve limit ayarı Kampüsteyim admin panelinden yönetilir.
assertionCode.POST /api/v1/student/verify-status çağırır → şifreli zarf.POST /api/v1/crypto/unwrap ile DEK alınır; SDK ciphertext’i yerelde çözer.Base: https://kampusteyim.app/api
POST /v1/student/verify-status
Headers:
X-Api-Key: kt_live_...
X-Kampusteyim-Client: sdk/1.0.0
X-Kampusteyim-Fingerprint: <oturum parmak izi>
X-Request-Id: <uuid>
Body: { "assertionCode": "kt_assert_..." }
→ { alg, ciphertext, iv, tag, unwrapId, expiresInSec }
POST /v1/crypto/unwrap
Body: { "unwrapId": "..." }
→ { alg, dek } // düz metin veri yok; SDK decrypt eder
Portal hesabı → buton → callback → şifreli verify. Ayrıntılı metin SDK paketinde SETUP.md.
client_id= (frontend OK).kt_live_… → yalnız sunucu X-Api-Key / KAMPUSTEYIM_API_KEY. Butona koyma.
KAMPUSTEYIM_CLIENT_ID = ① · KAMPUSTEYIM_API_KEY = ② (server-only).…/authorize?client_id=CLIENT_ID&redirect_uri=… — stil serbest.?code=kt_assert_… → sunucuda verify + unwrap (gizli Key ile).verified === true && isStudent === true.import { verifyStudentEncrypted } from '@kampusteyim/verify';
app.get('/kampusteyim/callback', async (req, res) => {
const { code, state, error } = req.query;
if (error || !code) return res.status(400).send('iptal');
// state === session.state kontrol edin
const result = await verifyStudentEncrypted({
apiKey: process.env.KAMPUSTEYIM_API_KEY,
assertionCode: String(code),
});
// { verified, accountStatus, isStudent, checkedAt }
if (result.verified && result.isStudent) {
req.session.ktVerified = true;
return res.redirect('/app');
}
return res.status(403).send('doğrulama yetersiz');
});
Kaynak: repo içi sdk/kampusteyim-verify/ — SETUP.md, AI_PROMPT.md, src/.
npm install ./vendor/kampusteyim-verify
import { verifyStudentEncrypted } from '@kampusteyim/verify';
import { authorizeUrl, KampusteyimButtonMarkup } from '@kampusteyim/verify/button';
// Buton URL
const href = authorizeUrl({
clientId: process.env.KAMPUSTEYIM_CLIENT_ID, // prefix
redirectUri: 'https://sizin-site.com/kampusteyim/callback',
state: crypto.randomUUID(),
});
// Callback’te (yalnız sunucu)
const result = await verifyStudentEncrypted({
apiKey: process.env.KAMPUSTEYIM_API_KEY,
assertionCode: code,
baseUrl: 'https://kampusteyim.app/api',
});