{"openapi":"3.1.0","info":{"title":"Keywarden Management API","version":"0.3.0"},"components":{"schemas":{},"parameters":{}},"paths":{"/api/v1/me":{"get":{"tags":["me"],"responses":{"200":{"description":"Aktör, kullanıcı ve organizasyonlar","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"user":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"}},"required":["id","email","name"]},"actor":{"type":"object","properties":{"type":{"type":"string","enum":["user","api_key"]},"id":{"type":"string"}},"required":["type","id"]},"orgs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"role":{"type":"string","enum":["owner","admin","member"]}},"required":["id","name","slug","role"]}},"mode":{"type":"string","enum":["selfhosted","saas"]},"isOperator":{"type":"boolean"}},"required":["ok","user","actor","orgs","mode","isOperator"]}}}}}}},"/api/v1/orgs":{"get":{"tags":["orgs"],"responses":{"200":{"description":"Aktörün organizasyonları","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"orgs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"role":{"type":"string"}},"required":["id","name","slug","role"]}}},"required":["ok","orgs"]}}}}}}},"/api/v1/orgs/{orgId}":{"get":{"tags":["orgs"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"}],"responses":{"200":{"description":"Organizasyon, üyeler, davetler","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"org":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"createdAt":{"type":"number"}},"required":["id","name","slug","createdAt"]},"members":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"joinedAt":{"type":"number"}},"required":["userId","email","name","role","joinedAt"]}},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","nullable":true},"status":{"type":"string"},"expiresAt":{"type":"number"}},"required":["id","email","role","status","expiresAt"]}}},"required":["ok","org","members","invitations"]}}}}}}},"/api/v1/orgs/{orgId}/api-keys":{"get":{"tags":["api-keys"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"}],"responses":{"200":{"description":"Anahtarlar","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"appId":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"key":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"type":"number","nullable":true},"createdAt":{"type":"number"},"revokedAt":{"type":"number","nullable":true}},"required":["id","organizationId","appId","kind","name","prefix","scopes","lastUsedAt","createdAt","revokedAt"]}}},"required":["ok","keys"]}}}}}},"post":{"tags":["api-keys"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"appId":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["orgs:read","apps:read","apps:write","catalog:read","catalog:write","stores:read","stores:write","devices:read","devices:write","licenses:read","licenses:write","signing-keys:read","api-keys:read","audit:read"]},"maxItems":14}},"required":["name"]}}}},"responses":{"201":{"description":"Anahtar (düz metin yalnızca bu yanıtta)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"key":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"prefix":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"number"}},"required":["id","key","prefix","name","createdAt"]}},"required":["ok","key"]}}}}}}},"/api/v1/orgs/{orgId}/api-keys/{id}":{"delete":{"tags":["api-keys"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"İptal edildi"}}}},"/api/v1/orgs/{orgId}/audit":{"get":{"tags":["audit"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"appId","in":"query"},{"schema":{"type":"string","maxLength":60},"required":false,"name":"action","in":"query"},{"schema":{"type":"string","pattern":"^[0-9A-HJKMNP-TV-Z]{26}$"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Audit kayıtları","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"appId":{"type":"string","nullable":true},"actorType":{"type":"string"},"actorId":{"type":"string"},"action":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"string","nullable":true},"meta":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"ip":{"type":"string","nullable":true},"createdAt":{"type":"number"}},"required":["id","organizationId","appId","actorType","actorId","action","targetType","targetId","meta","ip","createdAt"]}},"nextCursor":{"type":"string","nullable":true}},"required":["ok","items","nextCursor"]}}}}}}},"/api/v1/orgs/{orgId}/apps":{"get":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"}],"responses":{"200":{"description":"Organizasyonun uygulamalari","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"apps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"androidPackage":{"type":"string","nullable":true},"appleBundleId":{"type":"string","nullable":true},"spendCurrency":{"type":"string"},"tokenTtlSeconds":{"type":"number"},"settings":{"type":"object","properties":{"enforceAppIntegrity":{"type":"boolean"},"enforceDeviceIntegrity":{"type":"boolean"},"requireIntegrity":{"type":"boolean"}}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"}},"required":["id","organizationId","slug","name","androidPackage","appleBundleId","spendCurrency","tokenTtlSeconds","settings","createdAt","updatedAt"]}}},"required":["ok","apps"]}}}}}},"post":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"orgId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"androidPackage":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$"},"appleBundleId":{"type":"string","minLength":3},"spendCurrency":{"type":"string","pattern":"^[A-Z]{3}$","default":"USD"}},"required":["name","slug"]}}}},"responses":{"201":{"description":"Olusturuldu","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"app":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"androidPackage":{"type":"string","nullable":true},"appleBundleId":{"type":"string","nullable":true},"spendCurrency":{"type":"string"},"tokenTtlSeconds":{"type":"number"},"settings":{"type":"object","properties":{"enforceAppIntegrity":{"type":"boolean"},"enforceDeviceIntegrity":{"type":"boolean"},"requireIntegrity":{"type":"boolean"}}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"}},"required":["id","organizationId","slug","name","androidPackage","appleBundleId","spendCurrency","tokenTtlSeconds","settings","createdAt","updatedAt"]},"publicKey":{"type":"string"},"signingKey":{"type":"object","properties":{"kid":{"type":"string"},"spki":{"type":"string"}},"required":["kid","spki"]}},"required":["ok","app","publicKey","signingKey"]}}}}}}},"/api/v1/apps/{appId}":{"get":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Uygulama detayi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"app":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"androidPackage":{"type":"string","nullable":true},"appleBundleId":{"type":"string","nullable":true},"spendCurrency":{"type":"string"},"tokenTtlSeconds":{"type":"number"},"settings":{"type":"object","properties":{"enforceAppIntegrity":{"type":"boolean"},"enforceDeviceIntegrity":{"type":"boolean"},"requireIntegrity":{"type":"boolean"}}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"}},"required":["id","organizationId","slug","name","androidPackage","appleBundleId","spendCurrency","tokenTtlSeconds","settings","createdAt","updatedAt"]},"publicKeys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"number"}},"required":["id","key","name","createdAt"]}},"signingKeys":{"type":"array","items":{"type":"object","properties":{"kid":{"type":"string"},"status":{"type":"string"},"spki":{"type":"string"},"createdAt":{"type":"number"}},"required":["kid","status","spki","createdAt"]}}},"required":["ok","app","publicKeys","signingKeys"]}}}}}},"patch":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"androidPackage":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$"},"appleBundleId":{"type":"string","minLength":3},"spendCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"tokenTtlSeconds":{"type":"integer","minimum":3600,"maximum":31536000},"settings":{"type":"object","properties":{"enforceAppIntegrity":{"type":"boolean"},"enforceDeviceIntegrity":{"type":"boolean"},"requireIntegrity":{"type":"boolean"}}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Guncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"app":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"androidPackage":{"type":"string","nullable":true},"appleBundleId":{"type":"string","nullable":true},"spendCurrency":{"type":"string"},"tokenTtlSeconds":{"type":"number"},"settings":{"type":"object","properties":{"enforceAppIntegrity":{"type":"boolean"},"enforceDeviceIntegrity":{"type":"boolean"},"requireIntegrity":{"type":"boolean"}}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"}},"required":["id","organizationId","slug","name","androidPackage","appleBundleId","spendCurrency","tokenTtlSeconds","settings","createdAt","updatedAt"]}},"required":["ok","app"]}}}}}},"delete":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/public-keys":{"post":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}}}}}},"responses":{"201":{"description":"Yeni genel anahtar (pk_)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"number"}},"required":["ok","id","key","name","createdAt"]}}}}}}},"/api/v1/apps/{appId}/public-keys/{id}":{"delete":{"tags":["apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Iptal edildi"}}}},"/api/v1/apps/{appId}/entitlements":{"get":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Haklar","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"entitlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true}},"required":["id","key","name","description"]}}},"required":["ok","entitlements"]}}}}}},"post":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z0-9_]{1,40}$"},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":400}},"required":["key","name"]}}}},"responses":{"201":{"description":"Oluşturuldu","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"entitlement":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true}},"required":["id","key","name","description"]}},"required":["ok","entitlement"]}}}}}}},"/api/v1/apps/{appId}/entitlements/{id}":{"patch":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z0-9_]{1,40}$"},"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":400}},"additionalProperties":false}}}},"responses":{"200":{"description":"Güncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"entitlement":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true}},"required":["id","key","name","description"]}},"required":["ok","entitlement"]}}}}}},"delete":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/products":{"get":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Ürünler","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"store":{"type":"string"},"storeProductId":{"type":"string"},"kind":{"type":"string"},"creditMicros":{"type":"number"},"createdAt":{"type":"number"},"entitlementIds":{"type":"array","items":{"type":"string"}}},"required":["id","store","storeProductId","kind","creditMicros","createdAt","entitlementIds"]}}},"required":["ok","products"]}}}}}},"post":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"store":{"type":"string","enum":["play","apple","manual"]},"storeProductId":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","enum":["one_time","subscription","consumable"]},"creditMicros":{"type":"integer","minimum":0,"default":0},"entitlementIds":{"type":"array","items":{"type":"string"},"default":[]}},"required":["store","storeProductId","kind"]}}}},"responses":{"201":{"description":"Oluşturuldu","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"product":{"type":"object","properties":{"id":{"type":"string"},"store":{"type":"string"},"storeProductId":{"type":"string"},"kind":{"type":"string"},"creditMicros":{"type":"number"},"createdAt":{"type":"number"},"entitlementIds":{"type":"array","items":{"type":"string"}}},"required":["id","store","storeProductId","kind","creditMicros","createdAt","entitlementIds"]}},"required":["ok","product"]}}}}}}},"/api/v1/apps/{appId}/products/{id}":{"patch":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["one_time","subscription","consumable"]},"creditMicros":{"type":"integer","minimum":0},"entitlementIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Güncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"product":{"type":"object","properties":{"id":{"type":"string"},"store":{"type":"string"},"storeProductId":{"type":"string"},"kind":{"type":"string"},"creditMicros":{"type":"number"},"createdAt":{"type":"number"},"entitlementIds":{"type":"array","items":{"type":"string"}}},"required":["id","store","storeProductId","kind","creditMicros","createdAt","entitlementIds"]}},"required":["ok","product"]}}}}}},"delete":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/metered-features":{"get":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Sayaçlı özellikler","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"meteredFeatures":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"limitCount":{"type":"number"},"period":{"type":"string"}},"required":["id","key","limitCount","period"]}}},"required":["ok","meteredFeatures"]}}}}}},"post":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z0-9_]{1,40}$"},"limitCount":{"type":"integer","minimum":1},"period":{"type":"string","enum":["lifetime","daily","monthly"],"default":"lifetime"}},"required":["key","limitCount"]}}}},"responses":{"201":{"description":"Oluşturuldu","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"meteredFeature":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"limitCount":{"type":"number"},"period":{"type":"string"}},"required":["id","key","limitCount","period"]}},"required":["ok","meteredFeature"]}}}}}}},"/api/v1/apps/{appId}/metered-features/{id}":{"patch":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limitCount":{"type":"integer","minimum":1},"period":{"type":"string","enum":["lifetime","daily","monthly"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Güncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"meteredFeature":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"limitCount":{"type":"number"},"period":{"type":"string"}},"required":["id","key","limitCount","period"]}},"required":["ok","meteredFeature"]}}}}}},"delete":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/spend-rules":{"get":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Destek eşikleri","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"spendRules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tierProductId":{"type":"string"},"thresholdMicros":{"type":"number"}},"required":["id","tierProductId","thresholdMicros"]}}},"required":["ok","spendRules"]}}}}}},"post":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tierProductId":{"type":"string"},"thresholdMicros":{"type":"integer","minimum":1}},"required":["tierProductId","thresholdMicros"]}}}},"responses":{"201":{"description":"Oluşturuldu","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"spendRule":{"type":"object","properties":{"id":{"type":"string"},"tierProductId":{"type":"string"},"thresholdMicros":{"type":"number"}},"required":["id","tierProductId","thresholdMicros"]}},"required":["ok","spendRule"]}}}}}}},"/api/v1/apps/{appId}/spend-rules/{id}":{"patch":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"thresholdMicros":{"type":"integer","minimum":1}},"required":["thresholdMicros"],"additionalProperties":false}}}},"responses":{"200":{"description":"Güncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"spendRule":{"type":"object","properties":{"id":{"type":"string"},"tierProductId":{"type":"string"},"thresholdMicros":{"type":"number"}},"required":["id","tierProductId","thresholdMicros"]}},"required":["ok","spendRule"]}}}}}},"delete":{"tags":["catalog"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/store-connections":{"get":{"tags":["stores"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Bağlantılar (sır yok)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"connections":{"type":"array","items":{"type":"object","properties":{"store":{"type":"string"},"status":{"type":"string"},"clientEmail":{"type":"string","nullable":true},"lastOkAt":{"type":"number","nullable":true},"lastError":{"type":"string","nullable":true},"issuerId":{"type":"string","nullable":true},"keyId":{"type":"string","nullable":true},"bundleId":{"type":"string","nullable":true},"appAppleId":{"type":"number","nullable":true},"environment":{"type":"string"},"acceptSandbox":{"type":"boolean"},"notificationUrl":{"type":"string"}},"required":["store","status","clientEmail","lastOkAt","lastError"]}}},"required":["ok","connections"]}}}}}}},"/api/v1/apps/{appId}/store-connections/{store}":{"put":{"tags":["stores"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","enum":["play","apple"]},"required":true,"name":"store","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"serviceAccount":{"type":"object","properties":{"type":{"type":"string","enum":["service_account"]},"client_email":{"type":"string","format":"email"},"private_key":{"type":"string"},"project_id":{"type":"string"}},"required":["type","client_email","private_key"],"additionalProperties":{"nullable":true}}},"required":["serviceAccount"]},{"type":"object","properties":{"issuerId":{"type":"string","minLength":8,"maxLength":200},"keyId":{"type":"string","minLength":4,"maxLength":64},"privateKeyP8":{"type":"string","maxLength":8192},"bundleId":{"type":"string","minLength":1,"maxLength":200},"appAppleId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"environment":{"type":"string","enum":["production","sandbox"]},"acceptSandbox":{"type":"boolean"}},"required":["issuerId","keyId","privateKeyP8","bundleId","environment","acceptSandbox"]}]}}}},"responses":{"200":{"description":"Kaydedildi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"connection":{"type":"object","properties":{"store":{"type":"string"},"status":{"type":"string"},"clientEmail":{"type":"string","nullable":true},"lastOkAt":{"type":"number","nullable":true},"lastError":{"type":"string","nullable":true},"issuerId":{"type":"string","nullable":true},"keyId":{"type":"string","nullable":true},"bundleId":{"type":"string","nullable":true},"appAppleId":{"type":"number","nullable":true},"environment":{"type":"string"},"acceptSandbox":{"type":"boolean"},"notificationUrl":{"type":"string"}},"required":["store","status","clientEmail","lastOkAt","lastError"]}},"required":["ok","connection"]}}}}}},"delete":{"tags":["stores"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","enum":["play","apple"]},"required":true,"name":"store","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/store-connections/{store}/test":{"post":{"tags":["stores"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","enum":["play","apple"]},"required":true,"name":"store","in":"path"}],"responses":{"200":{"description":"Test sonucu","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"result":{"type":"object","properties":{"accessToken":{"type":"boolean"},"voided":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]},"error":{"type":"string"},"jwt":{"type":"boolean"},"api":{"type":"object","properties":{"reachable":{"type":"boolean"}},"required":["reachable"]}},"required":["accessToken"]}},"required":["ok","result"]}}}}}}},"/api/v1/waitlist":{"get":{"tags":["waitlist"],"description":"SaaS kayit sirasi. Ornek operatorlerine ozeldir.","responses":{"200":{"description":"Sira","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"entries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"status":{"type":"string","enum":["pending","invited","rejected"]},"createdAt":{"type":"number"},"invitedAt":{"type":"number","nullable":true},"invitedBy":{"type":"string","nullable":true}},"required":["id","email","name","note","status","createdAt","invitedAt","invitedBy"]}}},"required":["ok","entries"]}}}}}}},"/api/v1/waitlist/{id}/approve":{"post":{"tags":["waitlist"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Onaylandi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"entry":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"status":{"type":"string","enum":["pending","invited","rejected"]},"createdAt":{"type":"number"},"invitedAt":{"type":"number","nullable":true},"invitedBy":{"type":"string","nullable":true}},"required":["id","email","name","note","status","createdAt","invitedAt","invitedBy"]}},"required":["ok","entry"]}}}},"404":{"description":"Bulunamadi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"]}}}}}}},"/api/v1/waitlist/{id}/reject":{"post":{"tags":["waitlist"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Reddedildi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"entry":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"status":{"type":"string","enum":["pending","invited","rejected"]},"createdAt":{"type":"number"},"invitedAt":{"type":"number","nullable":true},"invitedBy":{"type":"string","nullable":true}},"required":["id","email","name","note","status","createdAt","invitedAt","invitedBy"]}},"required":["ok","entry"]}}}},"404":{"description":"Bulunamadi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"]}}}}}}},"/api/v1/apps/{appId}/devices":{"get":{"tags":["devices"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"platform","in":"query"},{"schema":{"type":"integer","nullable":true},"required":false,"name":"lastSeenAfter","in":"query"},{"schema":{"type":"string","maxLength":64},"required":false,"name":"q","in":"query"},{"schema":{"type":"string","pattern":"^\\d+:[0-9A-Z]+$"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Cihaz listesi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"installId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string","nullable":true},"osVersion":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"firstSeenAt":{"type":"number"},"lastSeenAt":{"type":"number"},"lastKid":{"type":"string","nullable":true},"lastSyncAt":{"type":"number","nullable":true},"activeProducts":{"type":"array","items":{"type":"string"}}},"required":["id","installId","platform","appVersion","osVersion","name","firstSeenAt","lastSeenAt","lastKid","lastSyncAt","activeProducts"]}},"nextCursor":{"type":"string","nullable":true}},"required":["ok","devices","nextCursor"]}}}}}}},"/api/v1/apps/{appId}/devices/{deviceId}":{"get":{"tags":["devices"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deviceId","in":"path"}],"responses":{"200":{"description":"Cihaz detayı","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"device":{"type":"object","properties":{"id":{"type":"string"},"installId":{"type":"string"},"platform":{"type":"string"},"appVersion":{"type":"string","nullable":true},"osVersion":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"firstSeenAt":{"type":"number"},"lastSeenAt":{"type":"number"},"lastKid":{"type":"string","nullable":true},"lastSyncAt":{"type":"number","nullable":true},"activeProducts":{"type":"array","items":{"type":"string"}},"purchases":{"type":"array","items":{"type":"object","properties":{"storeProductId":{"type":"string"},"state":{"type":"string"},"kind":{"type":"string"},"firstVerifiedAt":{"type":"number"},"lastVerifiedAt":{"type":"number"},"paid":{"type":"object","nullable":true,"properties":{"currency":{"type":"string"},"micros":{"type":"number"}},"required":["currency","micros"]},"creditMicros":{"type":"number"},"subExpiresAt":{"type":"number","nullable":true}},"required":["storeProductId","state","kind","firstVerifiedAt","lastVerifiedAt","paid","creditMicros","subExpiresAt"]}},"counters":{"type":"array","items":{"type":"object","properties":{"feature":{"type":"string"},"used":{"type":"number"},"limit":{"type":"number"}},"required":["feature","used","limit"]}},"earned":{"type":"object","additionalProperties":{"type":"number"}}},"required":["id","installId","platform","appVersion","osVersion","name","firstSeenAt","lastSeenAt","lastKid","lastSyncAt","activeProducts","purchases","counters","earned"]}},"required":["ok","device"]}}}}}},"delete":{"tags":["devices"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deviceId","in":"path"}],"responses":{"204":{"description":"Silindi"}}}},"/api/v1/apps/{appId}/licenses":{"get":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string","enum":["active","suspended","revoked"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","maxLength":120},"required":false,"name":"q","in":"query"},{"schema":{"type":"string","pattern":"^\\d+:[0-9A-Z]+$"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Lisans listesi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"licenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"keyPrefix":{"type":"string"},"status":{"type":"string","enum":["active","suspended","revoked"]},"maxActivations":{"type":"number"},"floating":{"type":"boolean"},"heartbeatTtlSeconds":{"type":"number","nullable":true},"expiresAt":{"type":"number","nullable":true},"customerEmail":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual","api","paddle","lemonsqueezy"]},"sourceRef":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"},"seats":{"type":"object","properties":{"used":{"type":"number"},"max":{"type":"number"}},"required":["used","max"]},"entitlementKeys":{"type":"array","items":{"type":"string"}}},"required":["id","appId","keyPrefix","status","maxActivations","floating","heartbeatTtlSeconds","expiresAt","customerEmail","source","sourceRef","metadata","createdAt","updatedAt","seats","entitlementKeys"]}},"nextCursor":{"type":"string","nullable":true}},"required":["ok","licenses","nextCursor"]}}}}}},"post":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entitlementIds":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50},"maxActivations":{"type":"integer","minimum":1,"maximum":1000,"default":1},"floating":{"type":"boolean","default":false},"heartbeatTtlSeconds":{"type":"integer","minimum":60,"maximum":86400},"expiresAt":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"default":null},"customerEmail":{"type":"string","maxLength":200,"format":"email"},"metadata":{"type":"object","additionalProperties":{"nullable":true}},"count":{"type":"integer","minimum":1,"maximum":100,"default":1}},"required":["entitlementIds"],"additionalProperties":false}}}},"responses":{"201":{"description":"Uretilen lisanslar (anahtarlar YALNIZCA burada)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"licenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"keyPrefix":{"type":"string"},"status":{"type":"string","enum":["active","suspended","revoked"]},"maxActivations":{"type":"number"},"floating":{"type":"boolean"},"heartbeatTtlSeconds":{"type":"number","nullable":true},"expiresAt":{"type":"number","nullable":true},"customerEmail":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual","api","paddle","lemonsqueezy"]},"sourceRef":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"},"seats":{"type":"object","properties":{"used":{"type":"number"},"max":{"type":"number"}},"required":["used","max"]},"entitlementKeys":{"type":"array","items":{"type":"string"}},"key":{"type":"string"}},"required":["id","appId","keyPrefix","status","maxActivations","floating","heartbeatTtlSeconds","expiresAt","customerEmail","source","sourceRef","metadata","createdAt","updatedAt","seats","entitlementKeys","key"]}}},"required":["ok","licenses"]}}}}}}},"/api/v1/apps/{appId}/licenses/{id}":{"get":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Lisans detayi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"license":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"keyPrefix":{"type":"string"},"status":{"type":"string","enum":["active","suspended","revoked"]},"maxActivations":{"type":"number"},"floating":{"type":"boolean"},"heartbeatTtlSeconds":{"type":"number","nullable":true},"expiresAt":{"type":"number","nullable":true},"customerEmail":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual","api","paddle","lemonsqueezy"]},"sourceRef":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"},"seats":{"type":"object","properties":{"used":{"type":"number"},"max":{"type":"number"}},"required":["used","max"]},"entitlementKeys":{"type":"array","items":{"type":"string"}},"entitlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"expiresAt":{"type":"number","nullable":true}},"required":["id","key","name","expiresAt"]}},"activations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"licenseId":{"type":"string"},"deviceId":{"type":"string"},"installId":{"type":"string"},"platform":{"type":"string"},"lastSeenAt":{"type":"number"},"activatedAt":{"type":"number"},"lastHeartbeatAt":{"type":"number"},"deactivatedAt":{"type":"number","nullable":true},"live":{"type":"boolean"}},"required":["id","licenseId","deviceId","installId","platform","lastSeenAt","activatedAt","lastHeartbeatAt","deactivatedAt","live"]}}},"required":["id","appId","keyPrefix","status","maxActivations","floating","heartbeatTtlSeconds","expiresAt","customerEmail","source","sourceRef","metadata","createdAt","updatedAt","seats","entitlementKeys","entitlements","activations"]}},"required":["ok","license"]}}}}}},"patch":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","suspended"]},"maxActivations":{"type":"integer","minimum":1,"maximum":1000},"expiresAt":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true},"customerEmail":{"type":"string","nullable":true,"maxLength":200,"format":"email"},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Guncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"license":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"keyPrefix":{"type":"string"},"status":{"type":"string","enum":["active","suspended","revoked"]},"maxActivations":{"type":"number"},"floating":{"type":"boolean"},"heartbeatTtlSeconds":{"type":"number","nullable":true},"expiresAt":{"type":"number","nullable":true},"customerEmail":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual","api","paddle","lemonsqueezy"]},"sourceRef":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"},"seats":{"type":"object","properties":{"used":{"type":"number"},"max":{"type":"number"}},"required":["used","max"]},"entitlementKeys":{"type":"array","items":{"type":"string"}},"entitlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"expiresAt":{"type":"number","nullable":true}},"required":["id","key","name","expiresAt"]}},"activations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"licenseId":{"type":"string"},"deviceId":{"type":"string"},"installId":{"type":"string"},"platform":{"type":"string"},"lastSeenAt":{"type":"number"},"activatedAt":{"type":"number"},"lastHeartbeatAt":{"type":"number"},"deactivatedAt":{"type":"number","nullable":true},"live":{"type":"boolean"}},"required":["id","licenseId","deviceId","installId","platform","lastSeenAt","activatedAt","lastHeartbeatAt","deactivatedAt","live"]}}},"required":["id","appId","keyPrefix","status","maxActivations","floating","heartbeatTtlSeconds","expiresAt","customerEmail","source","sourceRef","metadata","createdAt","updatedAt","seats","entitlementKeys","entitlements","activations"]}},"required":["ok","license"]}}}}}}},"/api/v1/apps/{appId}/licenses/{id}/revoke":{"post":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Iptal edildi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"license":{"type":"object","properties":{"id":{"type":"string"},"appId":{"type":"string"},"keyPrefix":{"type":"string"},"status":{"type":"string","enum":["active","suspended","revoked"]},"maxActivations":{"type":"number"},"floating":{"type":"boolean"},"heartbeatTtlSeconds":{"type":"number","nullable":true},"expiresAt":{"type":"number","nullable":true},"customerEmail":{"type":"string","nullable":true},"source":{"type":"string","enum":["manual","api","paddle","lemonsqueezy"]},"sourceRef":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"createdAt":{"type":"number"},"updatedAt":{"type":"number"},"seats":{"type":"object","properties":{"used":{"type":"number"},"max":{"type":"number"}},"required":["used","max"]},"entitlementKeys":{"type":"array","items":{"type":"string"}},"entitlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"expiresAt":{"type":"number","nullable":true}},"required":["id","key","name","expiresAt"]}},"activations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"licenseId":{"type":"string"},"deviceId":{"type":"string"},"installId":{"type":"string"},"platform":{"type":"string"},"lastSeenAt":{"type":"number"},"activatedAt":{"type":"number"},"lastHeartbeatAt":{"type":"number"},"deactivatedAt":{"type":"number","nullable":true},"live":{"type":"boolean"}},"required":["id","licenseId","deviceId","installId","platform","lastSeenAt","activatedAt","lastHeartbeatAt","deactivatedAt","live"]}}},"required":["id","appId","keyPrefix","status","maxActivations","floating","heartbeatTtlSeconds","expiresAt","customerEmail","source","sourceRef","metadata","createdAt","updatedAt","seats","entitlementKeys","entitlements","activations"]}},"required":["ok","license"]}}}}}}},"/api/v1/apps/{appId}/licenses/{id}/reveal":{"post":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Duz lisans anahtari","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"key":{"type":"string"}},"required":["ok","key"]}}}}}}},"/api/v1/apps/{appId}/licenses/{id}/resend":{"post":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Anahtar yeniden gonderildi","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"]}}}}}}},"/api/v1/apps/{appId}/activations/{actId}/deactivate":{"post":{"tags":["licenses"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"actId","in":"path"}],"responses":{"200":{"description":"Birakilan koltuk sayisi (0 veya 1)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"released":{"type":"number"}},"required":["ok","released"]}}}}}}},"/api/v1/apps/{appId}/signing-keys":{"get":{"tags":["signing-keys"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Anahtarlar (yalnizca acik)","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kid":{"type":"string"},"status":{"type":"string","enum":["active","retiring","retired"]},"signsLegacy":{"type":"boolean"},"spki":{"type":"string"},"publicKeyPem":{"type":"string"},"createdAt":{"type":"number"},"retireAt":{"type":"number","nullable":true},"retiredAt":{"type":"number","nullable":true},"usage30d":{"type":"number"}},"required":["id","kid","status","signsLegacy","spki","publicKeyPem","createdAt","retireAt","retiredAt","usage30d"]}}},"required":["ok","keys"]}}}}}}},"/api/v1/apps/{appId}/signing-keys/rotate":{"post":{"tags":["signing-keys"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"overlapDays":{"type":"integer","minimum":1,"maximum":365}}}}}},"responses":{"201":{"description":"Yeni anahtar","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"key":{"type":"object","properties":{"kid":{"type":"string"},"spki":{"type":"string"}},"required":["kid","spki"]},"retiring":{"type":"array","items":{"type":"string"}}},"required":["ok","key","retiring"]}}}}}}},"/api/v1/apps/{appId}/signing-keys/{kid}/retire":{"post":{"tags":["signing-keys"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"kid","in":"path"}],"responses":{"200":{"description":"Emekli","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"]}}}}}}},"/api/v1/apps/{appId}/overview":{"get":{"tags":["overview"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"Uygulama ozeti","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"devices":{"type":"object","properties":{"total":{"type":"number"},"active7d":{"type":"number"},"active30d":{"type":"number"}},"required":["total","active7d","active30d"]},"purchases":{"type":"object","properties":{"active":{"type":"number"},"voided":{"type":"number"}},"required":["active","voided"]},"usage":{"type":"object","properties":{"days":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"legacyVerifications":{"type":"number"},"verifications":{"type":"number"},"syncs":{"type":"number"},"activations":{"type":"number"}},"required":["day","legacyVerifications","verifications","syncs","activations"]}}},"required":["days"]},"paidTotals":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"micros":{"type":"number"}},"required":["currency","micros"]}},"voided":{"type":"object","nullable":true,"properties":{"syncedOk":{"type":"boolean"},"count":{"type":"number"},"ageSeconds":{"type":"number","nullable":true},"lastError":{"type":"string","nullable":true}},"required":["syncedOk","count","ageSeconds","lastError"]}},"required":["ok","devices","purchases","usage","paidTotals","voided"]}}}}}}},"/api/v1/apps/{appId}/sdk-snippets":{"get":{"tags":["overview"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"responses":{"200":{"description":"SDK kurulum ornekleri","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"publicKey":{"type":"string","nullable":true},"spki":{"type":"string"},"baseUrl":{"type":"string"},"snippets":{"type":"object","properties":{"kotlin":{"type":"string"},"java":{"type":"string"},"swift":{"type":"string"},"curl":{"type":"string"}},"required":["kotlin","java","swift","curl"]}},"required":["ok","publicKey","spki","baseUrl","snippets"]}}}}}}},"/api/v1/apps/{appId}/import/license-gate":{"post":{"tags":["import"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"appsJson":{"type":"object","additionalProperties":{"nullable":true}},"purchasesJson":{"type":"object","additionalProperties":{"nullable":true}},"signingKeyPem":{"type":"string"},"serviceAccounts":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"nullable":true}},"default":{}}},"required":["appsJson"]}}}},"responses":{"200":{"description":"İçe alma özeti","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"summary":{"type":"object","properties":{"apps":{"type":"number"},"products":{"type":"number"},"devices":{"type":"number"},"purchases":{"type":"number"},"counters":{"type":"number"},"earned":{"type":"number"},"signingKeys":{"type":"number"},"serviceAccounts":{"type":"number"},"skippedInstalls":{"type":"number"}},"required":["apps","products","devices","purchases","counters","earned","signingKeys","serviceAccounts","skippedInstalls"]}},"required":["ok","summary"]}}}}}}}}}