Skip to content

What Customers keep

Whatever ends a product, its Customers keep the same things: notice, service until the close, their records, their unspent money and receipts that still verify.

What a Customer keeps, from the notice on

Each step runs whether the seller acts or the platform acts for it. Filled: what a Customer sees. The point marks money returned.

The floor no file lowers

Each line holds whatever the file says, so a Customer reads the same promise on every product.

What a Customer keepsFor how long
Notice of the closeAt least 30 days, or the rest of a signed commitment if longer
Every paid call servedUntil the close; a sunset stops new sign-ups, never a paying Customer
Its recordsExported from the portal or by its API until the close and 30 days after
Unspent creditsRefunded to the card that paid them, at the close
Funds held for work not deliveredReturned in full: held funds are never paid out before delivery
A prepaid periodRefunded for the days after the close
Its receiptsVerifying against the seller's keys, kept listed for 7 years

Refunds come from the seller's Stripe balance; held funds sit apart from it, so they are there to return.

Four ways a product ends

The way differs; what a Customer keeps does not.

The productWho actsWhat changes for a Customer
Is sunset by its sellerThe seller, by Product.sunsetNothing until the close, then the steps above
Is transferredThe two workspacesNothing: the same Host, Keys, prices and receipts
Leaves APIs.DevThe seller, by Product.exportNothing if the seller serves it elsewhere on the same Domain; else a sunset
Has a seller that cannot actThe platform, by a wind-downThe steps above, run by the platform on the seller's behalf

A seller cannot act when its workspace closes for cause, or when it stops answering for 30 days while its product owes work or money. A wind-down follows the seller's own published rules, with the shortest notice they allow.

Ninety days of notice

The weekly brief gives its members 90 days' notice, three times the floor.

definition.ts
24 lines
import { define, generative } from 'apis.dev'

/** A weekly brief on the software companies that changed headcount, for members and their agents. */
export default define({
  name: 'briefs', domain: 'briefs.apis.dev',
  sources: {
    firms: { api: 'companyfacts.apis.dev', cost: { 'Company.search': 0.005 } },
  },
  Issue: {
    week: 'string!#', title: 'string', body: 'markdown',
    status: {
      draft:   { run: generative('This week in {firms}: who hired, who shrank') },
      review:  { in: 'drafted', role: 'editor' },
      publish: { in: 'reviewed', role: 'editor' },
      send:    { in: 'published', to: 'Member' },
    },
  },
  on: { 'every Mon 06:00': 'Issue.draft', 'Issue.published': 'Issue.send' },
  offer: {
    'Issue.list': 0, 'Issue.read': 0.25,
    Member: { month: 8, includes: { 'Issue.read': 'all' } },
  },
  operate: { sunset: '90d' },
})

Each member's Watch receives the notice the day the sunset starts, with what it keeps.

Notice
12 lines
{
  "id": "evt_90",
  "type": "Product.sunsetting",
  "at": "2026-10-28T09:00:00Z",
  "data": {
    "closes": "2027-01-26",
    "export": "https://briefs.apis.dev/dashboard/export",
    "exportUntil": "2027-02-25",
    "refunds": { "credits": 3.75, "period": 4.27, "currency": "USD" },
    "receiptKeys": "https://briefs.apis.dev/.well-known/receipt-keys"
  }
}

A buyer's agent reads the same close date on the offer card, which says sunsetting, and its policy moves its mandates to another seller.


A product may end; what its Customers paid for, made and were promised does not end with it.