Flow · 10 steps

Run beside your old system, then go live

Run Manifold beside your old system, then go live.

A new organization is read-only. Orders come in, stock and imports land and the team works in Manifold, but nothing leaves it: nothing to a store, no journal to an accounting system, no email to a customer or supplier, no webhook to an app.

Going live is final. It records who decided and when. Nothing held while read-only is sent later: each store and ledger catches up from things as they are now. Going live also completes the opening stocktake, so the books begin at that moment, and a stock SKU with no cost holds it back.

This walk sets the organization read-only first, then takes it live.

Services involved

A filled dot is a read; a ring is a call that changes something.

  • Auth: https://auth.getmanifold.io
  • Inventory Manager: https://inventory.getmanifold.io

Every call carries Authorization: Bearer $MANIFOLD_TOKEN unless its step says otherwise (getting a token). Run a flow in your sandbox, not your live organization: see Before you start.

1 Read where the organization stands

The mode, and who last changed it. Any token for the organization may ask — a person's, a service's, an app's — and an app that writes outward for an organization asks exactly this before it does.

GET /api/auth/mode Auth

What the answer holds: the operation's example.

2 Hold everything outbound

An owner puts the organization into read-only mode. From here every push to a store or a ledger is refused with the reason, and mail to customers and suppliers is recorded as not sent; inbound work is untouched.

POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/read-only Auth

What the answer holds: the operation's example.

Records auth.org-set-read-only.

3 Ask for read-only again

Idempotent by state: an organization already read-only is answered as it stands, with no second fact.

POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/read-only Auth

What the answer holds: the operation's example.

Records nothing.

4 Stock a SKU nobody has valued

Three oak lamps on the shelf, with no cost yet — the books cannot open on them.

POST /items Inventory Manager

Request · application/json
{
  "sku": "LAMP-OAK",
  "name": "Oak lamp",
  "quantity": 3
}

Answers 201. What the answer holds: the operation's example.

Records inventory.item-created.

5 Try to go live before it is valued

Going live completes the opening stocktake, starting one when none is open — but every stock SKU needs a cost first. Refused with OpeningStocktakeIncomplete naming the lamp; the organization stays read-only, and the stocktake it started waits to be valued.

POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/go-live Auth

Refused · 409
{
  "_tag": "OpeningStocktakeIncomplete",
  "stocktakeId": "stk_019a0f3c-5e20-7b41-8c52-6d7e8f9a0b1c",
  "missing": 1,
  "skus": [
    "LAMP-OAK"
  ]
}

Records inventory.stocktake-started.

6 Find the opening stocktake

The one going live started: open, over every live location, waiting for its costs.

GET /stocktakes Inventory Manager

What the answer holds: the operation's example.

From your answer, later steps send items[0].id as {stocktakeId}.

7 Value the lamp

$12.50 a lamp. Counts and costs are entered while read-only — they move nothing — but only going live completes a read-only organization's opening stocktake.

PUT /stocktakes/{stocktakeId}/counts Inventory Manager

Request · application/json
{
  "costs": [
    {
      "sku": "LAMP-OAK",
      "unitCostCents": 1250
    }
  ]
}

What the answer holds: the operation's example.

Records inventory.stocktake-counted.

8 Go live

The business accepts Manifold acting for it. The opening stocktake completes first — the lamps counted at what inventory holds, at their cost — so the books open now; then the fact names the owner who accepted, and from the next moment a service asks, outbound work runs.

POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/go-live Auth

What the answer holds: the operation's example.

Records auth.org-went-live, inventory.stocktake-completed.

9 Read it back

Live, with the owner who took it there and when — what the admin's badge and every outbound service now see.

GET /api/auth/mode Auth

What the answer holds: the operation's example.

10 Try to go back to read-only

Going live is final: the legacy platforms were drained and the source's lock lifted on the strength of it. Refused with GoLiveIsFinal, and nothing is appended.

POST /api/auth/organizations/org_01a1586e-f9f6-7a8b-9c7d-6e5f4a3b2c1d/read-only Auth

Refused · 409
{
  "_tag": "GoLiveIsFinal"
}

What a recorded fact is: Facts and the journal. Why a repeated step changes nothing: Idempotency and retries.