Skip to content

Product

A Product is what a Customer gets from a Startup, with a promise the Customer can rely on.

Read as
GuideSpec

An Offer sells it at a Price; the Product itself carries none.

Properties

PropertyTypeRequiredDescription
namestringrequiredThe name of the Product.
promisetextrequiredWhat the Customer can rely on.
statusstringrequiredOne of draft, selling or retired, set by its Offers.

Object

JSON
{
  "$id": "https://api.sb/routewise.dev/products/product_1",
  "$type": "Product",
  "name": "RouteWise",
  "promise": "A route plan for 500 stops in under two seconds.",
  "status": "draft"
}

Relationships

  • A Product builds into many Products: a Product composes other Products; a change to a part reaches every Product built from it. buildsInto, inverse builtFrom.
  • A Product is built from many Products: a Product composes other Products; a change to a part reaches every Product built from it. builtFrom, inverse buildsInto.
  • A Product draws on many Sources: a Product keeps its promise with Sources it did not build: owned, wrapped, or recruited. drawsOn, inverse supplies.
  • A Product has many Implementations: an Implementation runs an Interface, System or Verb of one Product. implementations, inverse runs.
  • A Product is included in many Offers: each Offer sells one Product; one Product sits inside many Offers at different prices and terms. includedIn, inverse includes.
  • A Product is made by one Startup: each Product belongs to exactly one Startup, which builds it and stands behind its promise. madeBy, inverse makes.
  • A Product has one Publication: a Product reaches its Customers through one Publication; nothing inside it names the platform. publication, inverse publishes.
  • A Product is reached via many Interfaces: each Interface exposes one Product; a Product is reached through many Interfaces. reachedVia, inverse reaches.

Lifecycle

Product lifecycle: draft, selling, retireddraft → selling: on Offer.publishedselling → retired: on Offer.withdrawnretired → selling: on Offer.publisheddraftsellingretired
StateMeaningMoves to
draft (first)Defined, with no published Offer selling it.selling on Offer.published when the Offer is the first published Offer on this Product
sellingAt least one published Offer sells it.retired on Offer.withdrawn when the last published Offer on this Product is withdrawn
retiredNo published Offer sells it; Customers keep what their Orders and Subscriptions bought.selling on Offer.published when an Offer on this Product is published again

Verbs

  1. createCreates a Product.
    POST /{namespace}/productsdoProduct.created
  2. getReturns one Product by id.
    GET /{namespace}/products/{id}readNo Event
  3. listReturns Products, newest first, one page at a time.
    GET /{namespace}/productsreadNo Event
  4. updateChanges the given properties of a Product.
    PATCH /{namespace}/products/{id}doProduct.updated
  5. deleteDeletes a Product; its history is kept.
    DELETE /{namespace}/products/{id}doProduct.deleted

Permissions

Which Access level may call each Verb. One-way Verbs wait their delay window.

Operationowneradminmemberviewer
Product.createYesYesYesNo
Product.getYesYesYesYes
Product.listYesYesYesYes
Product.updateYesYesYesNo
Product.deleteYesYesYesNo

Call it

Text
Add a product to LedgerLark.

Example

A certified translation is a Product whose promise reads "accepted by the receiving agency within 48 hours, or redone free." Two Offers sell it: $40 a page, and $300 a month for 10 pages.