Files
sase.tr/apps/api/drizzle/meta/_journal.json
Semih Yesilyurt 7a4fe51d09 feat(api): public API POC — API-key auth + /api/v1 decode & OEM xref
Kapalı-beta public API temeli (rapor: api-widget-analizi-2026-07-03):
- better-auth apiKey plugin (defaultPrefix sase_, enableMetadata, anahtar
  başına 120 istek/dk); enableSessionForAPIKeys KAPALI — anahtar dashboard
  oturumu yerine geçmez, cookie AuthGuard davranışı değişmez
- apikeys tablosu (migration 0023, plugin şemasının birebir karşılığı)
- ApiKeyGuard: Authorization Bearer / x-api-key → verifyApiKey → kullanıcı
  yüklenir (status kontrolü), request.user + request.apiKey doldurulur
- /api/v1/vin/decode: mevcut slim kontrat + aday akışı; günlük başarılı-decode
  kotası (Redis, TR günü, aynı VIN idempotent; limit: key metadata
  dailyDecodeLimit → PUBLIC_API_DAILY_DECODE_LIMIT → 100) ve
  X-Decode-Quota-* header'ları
- /api/v1/oem/:code: P çapraz-referans (kotasız)
- internal/admin/api-keys: x-internal-token ile anahtar üret/listele/kapat
  (düz metin yalnız create cevabında)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:15:17 +03:00

175 lines
3.4 KiB
JSON

{
"version": "7",
"dialect": "postgresql",
"entries": [
{
"idx": 0,
"version": "7",
"when": 1778535325959,
"tag": "0000_brief_guardian",
"breakpoints": true
},
{
"idx": 1,
"version": "7",
"when": 1747039600000,
"tag": "0001_charming_quicksand",
"breakpoints": true
},
{
"idx": 2,
"version": "7",
"when": 1778584574615,
"tag": "0002_boring_the_stranger",
"breakpoints": true
},
{
"idx": 3,
"version": "7",
"when": 1778587000000,
"tag": "0003_query_log_insights",
"breakpoints": true
},
{
"idx": 4,
"version": "7",
"when": 1778709949622,
"tag": "0004_hot_quicksilver",
"breakpoints": true
},
{
"idx": 5,
"version": "7",
"when": 1779054231051,
"tag": "0005_past_elektra",
"breakpoints": true
},
{
"idx": 6,
"version": "7",
"when": 1779086009525,
"tag": "0006_chilly_dark_phoenix",
"breakpoints": true
},
{
"idx": 7,
"version": "7",
"when": 1779573406942,
"tag": "0007_natural_red_wolf",
"breakpoints": true
},
{
"idx": 8,
"version": "7",
"when": 1779633572753,
"tag": "0008_common_sumo",
"breakpoints": true
},
{
"idx": 9,
"version": "7",
"when": 1779703007129,
"tag": "0009_referral_rewards_rework",
"breakpoints": true
},
{
"idx": 10,
"version": "7",
"when": 1780281600000,
"tag": "0010_dedupe_parts",
"breakpoints": true
},
{
"idx": 11,
"version": "7",
"when": 1780572179333,
"tag": "0011_email_preferences",
"breakpoints": true
},
{
"idx": 12,
"version": "7",
"when": 1780581755559,
"tag": "0012_lifecycle_email_sent",
"breakpoints": true
},
{
"idx": 13,
"version": "7",
"when": 1780600000000,
"tag": "0013_fix_brand_casing",
"breakpoints": true
},
{
"idx": 14,
"version": "7",
"when": 1781136000000,
"tag": "0014_proxy_logs",
"breakpoints": true
},
{
"idx": 15,
"version": "7",
"when": 1781222400000,
"tag": "0015_oem_votes",
"breakpoints": true
},
{
"idx": 16,
"version": "7",
"when": 1781308800000,
"tag": "0016_oem_suggestions",
"breakpoints": true
},
{
"idx": 17,
"version": "7",
"when": 1781395200000,
"tag": "0017_oem_expert_rewards",
"breakpoints": true
},
{
"idx": 18,
"version": "7",
"when": 1781481600000,
"tag": "0018_part_price_history",
"breakpoints": true
},
{
"idx": 19,
"version": "7",
"when": 1781485200000,
"tag": "0019_part_price_brand",
"breakpoints": true
},
{
"idx": 20,
"version": "7",
"when": 1781268490495,
"tag": "0020_stripe_recurring",
"breakpoints": true
},
{
"idx": 21,
"version": "7",
"when": 1781568000000,
"tag": "0021_vinpin_decodes",
"breakpoints": true
},
{
"idx": 22,
"version": "7",
"when": 1782652379976,
"tag": "0022_discount_codes",
"breakpoints": true
},
{
"idx": 23,
"version": "7",
"when": 1783084194145,
"tag": "0023_api_keys",
"breakpoints": true
}
]
}