Skip to content

feat(gc): add subscription health fields to PayerAccountDetails - #889

Merged
gsamuya merged 1 commit into
mainfrom
feat/update-PayerAccountDetails-proto
Sep 1, 2026
Merged

feat(gc): add subscription health fields to PayerAccountDetails#889
gsamuya merged 1 commit into
mainfrom
feat/update-PayerAccountDetails-proto

Conversation

@VanAubrey

Copy link
Copy Markdown
Contributor

Description

Ripple currently learns that a Guaranteed Commitments payer account accepted a marketplace private offer, and then learns nothing further — PayerAccountDetails.marketplacePrivateOfferStatus reports the offer's lifecycle (ACCEPTED, EXPIRED, etc.), which is a permanent fact and never changes once a customer accepts. It says nothing about whether the underlying AWS Marketplace agreement behind that offer is still live, has been cancelled, has expired at the end of its twelve-month term, or has been terminated.

This is part of the add-gc-subscription-health change (ouchan/archerad + blued sides already implemented and merging separately). archerad and blued now track agreement liveness internally; this PR is the API-contract half — exposing that signal on the existing PayerAccountDetails message so Commitment Manager can distinguish a payer account that:

  • has a live subscription,
  • had one that ended (cancelled / expired / terminated),
  • is currently re-subscribing after a lapse, or
  • never subscribed at all,

as a value set that shares no values with the existing offer-status field, so an expired offer (nobody ever accepted it) and an expired subscription (customer subscribed and their term ran out) can't be confused by any consumer.

What changed

Two additive fields on PayerAccountDetails (gc.proto), field numbers 9 and 10 — no existing fields renumbered or removed:

  • marketplaceSubscriptionStatus (string, field 9) — the Guaranteed Commitments subscription state, distinct from marketplacePrivateOfferStatus. Carries one of SUBSCRIPTION_ACTIVE, SUBSCRIPTION_CANCELLED, SUBSCRIPTION_EXPIRED, SUBSCRIPTION_TERMINATED, SUBSCRIPTION_RESUBSCRIBING, NOT_SUBSCRIBED. Never empty, and never RENEWED/REPLACED (those are internal continuations on the write side and never surfaced). Event-driven and eventually consistent — a briefly stale ACTIVE value right after a change is expected, not a defect.
  • marketplaceAgreementEndDate (string, field 10) — the contracted end date of the current marketplace agreement, as reported by AWS. Carried on the contract now because the message is already changing, but intentionally not displayed anywhere yet (the UI surface for it belongs with a future renewal/notification feature).

Impact

  • Backward compatible: purely additive fields, no wire-format or semantic changes to any existing field.
  • Downstream: ouchan's archerad will populate these two fields in its PayerAccountDetails response builders, and Commitment Manager will consume them — both tracked as follow-up PRs once this merges and the SDK is bumped there.

@VanAubrey
VanAubrey requested review from gsamuya and jansenpr August 31, 2026 08:48
@gsamuya
gsamuya merged commit 4b96469 into main Sep 1, 2026
2 checks passed
@gsamuya
gsamuya deleted the feat/update-PayerAccountDetails-proto branch September 1, 2026 07:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants