docs(18.1): shorten two COVERAGE.md reasons for the api-coverage gate

This commit is contained in:
Jakub Zych
2026-10-16 16:26:58 +02:00
parent 52d149b8f1
commit 1788c50a85

View File

@@ -9,11 +9,11 @@ Scope: the Stripe Billing surface the frozen PHP `SubscriptionGateway` contract
| customers.create with subscriber metadata | INTEGRATE | e-mail, name, subscriber_type and subscriber_id metadata; an idempotency key per subscriber and parameters in a 10-minute window, so concurrent checkouts create one customer (WR-02, plan 18.1-08) |
| customers.retrieve | OPT-OUT | not in the frozen PHP contract: the stored customer id is trusted, as PHP did |
| customers.update (sync e-mail or name changes) | OPT-OUT | not in the frozen PHP contract |
| checkout.sessions.create (mode subscription) | INTEGRATE | success URL carries the session_id placeholder; subscription_data.metadata; an idempotency key per subscriber, customer, price, URLs and metadata in a 10-minute window, so parallel requests get one session (WR-03, plan 18.1-08); the price is the plan's own in the currency, never another currency's (CR-02, plan 18.1-08) |
| checkout.sessions.create (mode subscription) | INTEGRATE | session_id placeholder in success URL; subscription_data.metadata; 10-min idempotency key (WR-03); price is the plan's own in that currency, never another's (CR-02); plan 18.1-08 |
| checkout.sessions.retrieve (after the success redirect) | OPT-OUT | not in the frozen PHP contract: activation comes from the signed customer.subscription.created event |
| billing_portal.sessions.create | INTEGRATE | |
| billing_portal.configurations (create or update) | OPT-OUT | not in the frozen PHP contract: the portal is configured per account in the Stripe dashboard |
| subscriptions.retrieve (syncSubscription / reconcile) | INTEGRATE | also the webhook job's fresh-state retrieval: created and updated events apply the subscription Stripe holds, not the event snapshot (CR-01, plan 18.1-07); a 404 falls back to the snapshot. `Service.SyncSubscription` uses it through `contracts.SubscriptionRetriever` and refreshes the plan (WR-06) |
| subscriptions.retrieve (syncSubscription / reconcile) | INTEGRATE | also the webhook job's fresh-state read: created/updated apply Stripe's current subscription, 404 falls back to the snapshot (CR-01, 18.1-07); used by Service.SyncSubscription (WR-06) |
| subscriptions.update cancel_at_period_end true (cancel at period end) | INTEGRATE | |
| subscriptions.cancel (cancel immediately) | INTEGRATE | |
| subscriptions.update cancel_at (flexible-billing cancel enums) | OPT-OUT | D-21 keeps PHP's cancel_at_period_end mapping; a manual Stripe test-mode check at UAT decides a follow-up |