Skip to content

Startup routes: advance, build, graduate

The Startup Verbs advance, build, graduate as api.sb routes, with inputs, result, refusals and an example.

Reference for Startup, one group of Startup routes.

Startup.advance

Advance moves a Startup to its next Lifecycle state once every entry check of that state passes. Verb page.

Text
POST /{namespace}/startups/{startup}/advance

Path: startup. Body, as JSON: the other inputs. Emits Startup.advanced.

Inputs

InputTypeRequiredDescription
startupStartuprequiredThe Startup to advance.
tostringThe target state. Defaults to the next state.

Returns

OutputTypeRequiredDescription
startupStartuprequiredThe Startup in its new state.

Refuses when

CheckErrorFixThen call
Any entry check of the target Lifecycle staterefusedPass each check the error names, then call it again.None.
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/startups/startup_l3hr1EnUGY/advance \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
JSON
{
  "api": "https://api.sb/leaseline.app",
  "startup": {
    "$id": "https://api.sb/leaseline.app/startups/startup_l3hr1EnUGY",
    "$type": "Startup",
    "name": "Leaseline"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Startup.advance",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Startup.build

Build provisions the Systems, Sites and Interfaces a Startup’s definition declares, and moves the Startup to Building. Verb page.

Text
POST /{namespace}/startups/{startup}/build

Path: startup. Emits Startup.built.

Inputs

InputTypeRequiredDescription
startupStartuprequiredThe Startup to build.

Returns

OutputTypeRequiredDescription
startupStartuprequiredThe Startup, now Building.

Refuses when

CheckErrorFixThen call
Template chosen (building-template)refusedName a Startup Template in the definition.Startup.update
Problem stated (building-problem)refusedWrite the problem slot with its workarounds and why now.Hypothesis.create
Brand named (building-brand)refusedGive the Brand a name, a voice, a logo, and a theme.Brand.update
Products declared (building-products)refusedSet the kind of every Product.Product.update
Three slots at Commitment (building-slots)refusedRun the cheapest test on each slot below Commitment, such as a reserve deposit.Experiment.start
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/startups/startup_l3hr1EnUGY/build \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
JSON
{
  "api": "https://api.sb/leaseline.app",
  "startup": {
    "$id": "https://api.sb/leaseline.app/startups/startup_l3hr1EnUGY",
    "$type": "Startup",
    "name": "Leaseline"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Startup.build",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Startup.graduate

Graduate moves a Startup to a Company of its own, with its Customers, Domains and records intact. Verb page.

Text
POST /{namespace}/startups/{startup}/graduate

Path: startup. Body, as JSON: the other inputs. Emits Startup.graduated.

Inputs

InputTypeRequiredDescription
startupStartuprequiredThe Startup to graduate.
companyCompanyrequiredThe Company that holds it next.

Returns

OutputTypeRequiredDescription
startupStartuprequiredThe Startup, held by its new Company.

Refuses when

CheckErrorFixThen call
Company of its own (graduate-company)refusedA company of its own holds the Startup, with its Brand, Customers, and records moved intact.None.
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/startups/startup_l3hr1EnUGY/graduate \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"company":"company_28zYNZEno0"}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "startup": {
    "$id": "https://api.sb/leaseline.app/startups/startup_l3hr1EnUGY",
    "$type": "Startup",
    "name": "Leaseline"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Startup.graduate",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}