Serve the running offer, and say whether a seat is actually PAID for

FeatureBillingService
Ya
31 Agosti 2026, 03:31 UTC
Mwandishi
Kamo
Ahadi ya
5923a39

Adds GET /markets/{id}/promotion. There was no way for an in-app buying surface to know an offer was running at all — the marketing site read promotions through the public catalog proxy, and kamo-internal had no equivalent, so the Plans & billing console quoted list prices while kamocrm.com advertised a third off the same plan. It returns the offer RESOLVED, not the raw row. Every consumer of the raw shape has had to re-derive the same three things — whether it is live today, which plans it covers by code rather than by UUID, and which cycles — and every one that did so got at least one wrong: the marketing site widened a two-plan code into an every-plan code by comparing UUIDs against plan codes, and its hero filtered on the discount TYPE and silently advertised nothing for months. Liveness comes from SubscriptionPromotions.check, the same predicate calculatePrice applies when it actually discounts an order, so a surface cannot advertise a code checkout will decoder. Plans come back in display order, because the surfaces write them into a sentence and "Business and Starter" reads as though the tiers ran downhill. /self/coverage now also returns `source`. `paidBy` names WHO covers a seat, which is a different question from whether anything is being paid for it: a member on the organization's free-default subscription reads paidBy=ORGANIZATION and is on no paid plan at all. Anything offering an upgrade has to be able to tell those apart, and paidBy cannot.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei