Skip to content

Milestones

List view

  • Adds `restheart-stripe`, a new standard module providing Stripe SaaS billing: Customer lifecycle, Checkout, Customer Portal, webhook ingestion with signature verification, and subscription-derived claims for ACL plan gating. **Scope** - New Maven module `stripe/` (artifactId `restheart-stripe`), wired into the reactor, `core/pom.xml`, `core/copy-plugins.xml` and the distribution, following the `accounts/` and `emails/` precedent. - `StripeConfigData` in `restheart-commons` (package `org.restheart.plugins.stripe`) plus a `stripeConfig` provider in the module, mirroring `accountsConfig` / `AccountsConfigData`. - Per-tenant override of every `stripeConfig` value via attached request parameters, following the `RequestOverrides` pattern of `restheart-accounts`, so the module works unchanged on a multi-tenant node. - A `SubscriptionOwnerProvider` SPI in `restheart-commons` deciding what a subscription belongs to and where its state is stored, defaulting to the `restheart-accounts` team and replaceable by a deployment, following the `MembershipProvider` precedent. - Endpoints: `POST /stripe/checkout`, `POST /stripe/portal`, `GET /stripe/subscription`, `POST /stripe/webhook`. - Lazy Stripe Customer provisioning: a Customer is created on the first checkout, never at signup. - A configurable plan catalog, with display data read from Stripe and enforcement limits from configuration. - Seat licensing: a seat is consumed by an explicit, atomically-checked licence rather than by team membership, in both capped and per-seat plans. - An `@subscription` ACL variable, contributed through the `VarResolver` SPI, so plan and seat gating is enforced by RESTHeart itself — in ACL predicates and in `readFilter`. - Billing notifications with configurable templates, following the `restheart-accounts` model. - Karate integration tests in `core`, GraalVM native image support, and documentation on restheart.org. **Out of scope** - Usage-based / metered billing, tax handling, multiple concurrent subscriptions per paying entity, and invoice PDF retrieval. - Scheduled reminder emails during the over-limit grace period: RESTHeart has no scheduled-job plugin type, and every notification in scope is driven by a webhook event. - Any deployment-specific tenant configuration store. The module only defines the override parameters and reads them; whichever interceptor attaches them lives in the deployment.

    No due date
    30/31 issues closed
  • No due date
    6/7 issues closed
  • No due date
    0/2 issues closed
  • No due date
    0/6 issues closed