`GET /api/marketplace/purchases/{id}` — fetch a single purchase by ID. Only accessible to the buyer who owns the purchase.
const url = 'https://example.com/api/marketplace/purchases/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/marketplace/purchases/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”A purchase record tying a buyer (user + workspace) to a specific item
version via a price row. All monetary amounts are in minor units (cents).
fee_policy_snapshot captures the fee settings at purchase time for audit.
object
Stripe’s truth: the end of the period that is currently paid for.
The single enforcement instant the license gate reads. None = perpetual
(a one-time purchase). See migration 350 for why it is derived from
current_period_end plus the grace window rather than equal to it.
The Stripe subscription (sub_...) this license is driven by. Also the
routing key that CLAIMS an invoice.* / customer.subscription.* event
for the marketplace instead of org billing.
Purchase lifecycle status (marketplace_purchases.status CHECK). Runtime
stays String; the spec narrows it to the closed [PurchaseStatusSpec].
Example
{ "status": "pending"}