diff --git a/README.md b/README.md index de5ecd7..bafa660 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,7 @@ This repo is a static HTML site. No build step. The deployed version lives at own software. Code examples for the TypeScript, Python, and Rust SDKs; entitlement-gating patterns; offline verification. - **[operate.html](./operate.html)** — Day-to-day operations. Managing - licenses, suspending / revoking, search, audit log, discount codes, refund - flows. + licenses, suspending / revoking, search, audit log, discount codes. - **[wire-format.html](./wire-format.html)** — Specification of the signed license key format (LIC1 envelope, base32 alphabet, Ed25519 signature scheme). Useful for porting the SDK to a new language. diff --git a/agent.html b/agent.html index b16d763..7e1873f 100644 --- a/agent.html +++ b/agent.html @@ -168,7 +168,7 @@ curl https://your-keysat-host/v1/admin/licenses?status=active \
curl -X POST $KS/v1/admin/licenses/$LICENSE_ID/revoke \
-H "Authorization: Bearer ks_..." \
-H "Content-Type: application/json" \
- -d '{"reason":"refund issued"}'
+ -d '{"reason":"customer request"}'
Idempotent. The next online validate from the buyer's app returns reason: revoked.
Scope required: licenses:write.
You have three options:
is_recurring=true + renewal_period_days and Keysat handles the cycle (invoice → settle → re-sign → webhook).You decide the policy. Many indie developers ship no revocation at all. Once a key is sold, it stays valid. Refunds happen offline via BTCPay. That’s perfectly reasonable.
+You decide the policy. Many indie developers ship no revocation at all. Once a key is sold, it stays valid. That’s perfectly reasonable.