Commit Graph

3 Commits

Author SHA1 Message Date
Keysat f2ea74d7e3 v0.3.0 — entitlements catalog in PublicPoliciesResponse
Mirrors keysat 0014 + TS/Rust SDK 0.3.0. PublicPoliciesProduct
gains entitlements_catalog: list[EntitlementDef] with slug + name +
description. SDK consumers' in-app tier pickers can render display
names + tooltip descriptions instead of raw slugs. Empty list on
legacy products without a catalog. No breaking change.
2026-05-10 07:58:59 -05:00
Keysat 94654f6526 v0.2.0 — policy_slug on start_purchase + list_public_policies
Mirrors the TS SDK 0.2.0 + Rust SDK 0.2.0 changes for parity across
all four language clients.

StartPurchaseOptions gains `policy_slug: str | None`. New
`Client.list_public_policies(product_slug)` returns a
`PublicPoliciesResponse` carrying the buyer-visible tier list (slug,
name, price_sats, entitlements, recurring/trial flags, "Most popular"
flag). Same data the licensing service's /buy/<slug> page reads
server-side — public endpoint, no auth.

  client.start_purchase("recap", StartPurchaseOptions(
      policy_slug="pro",
      buyer_email="buyer@example.com",
  ))

  tiers = client.list_public_policies("recap")
  for p in tiers.policies:
      print(p.slug, p.name, p.price_sats, p.entitlements)

Backwards compatible — existing positional / kwarg callers continue
to work since policy_slug defaults to None.
2026-05-09 09:08:51 -05:00
Keysat 2d9caa814e Initial public commit 2026-05-07 10:39:37 -05:00