Startup Template routes: extend, promote, upgrade
The Startup Template Verbs extend, promote, upgrade as api.sb routes, with inputs, result, refusals and an example.
Reference for Startup Template, one group of Startup Template routes.
StartupTemplate.extend
Extend adds a Startup Template to a Startup’s bases, pinned to a Version, so the Startup inherits its definition. Verb page.
POST /{namespace}/ startup-templates/ {startupTemplate}/ extendPath: startupTemplate. Body, as JSON: the other inputs. Emits StartupTemplate.extended.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
startupTemplate | Startup Template | required | The Startup Template to inherit. |
startup | Startup | required | The Startup that extends it. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
startup | Startup | required | The Startup, with the Startup Template among its bases. |
startupTemplate | Startup Template | required | The Startup Template extended. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| A clash between two bases until the Startup settles it | refused | Clear what the check names, then call it again. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ startup-templates/ stpl_9OivLWR17L/ extend \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"startup": "startup_l3hr1EnUGY"}'{
"api": "https: //api.sb/ leaseline.app",
"startup": {
"$id": "https: //api.sb/ leaseline.app/ startups/ startup_l3hr1EnUGY",
"$type": "Startup",
"name": "Leaseline"
},
"startupTemplate": {
"$id": "https: //api.sb/ leaseline.app/ startup-templates/ stpl_9OivLWR17L",
"$type": "StartupTemplate",
"slug": "leaseline",
"operatingModel": "autonomous",
"motions": [
"Example motions"
]
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "StartupTemplate.extend",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}StartupTemplate.promote
Promote moves one Startup’s refinement into a Startup Template, so every Startup that extends it inherits the refinement. Verb page.
POST /{namespace}/ startup-templates/ {startupTemplate}/ promotePath: startupTemplate. Body, as JSON: the other inputs. Emits StartupTemplate.promoted.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
startupTemplate | Startup Template | required | The Startup Template that receives the refinement. |
startup | Startup | required | The Startup that holds the refinement. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
change | Change | required | The Change against the Startup Template. |
startupTemplate | Startup Template | required | The Startup Template that received the refinement. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ startup-templates/ stpl_9OivLWR17L/ promote \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"startup": "startup_l3hr1EnUGY"}'{
"api": "https: //api.sb/ leaseline.app",
"change": {
"$id": "https: //api.sb/ leaseline.app/ changes/ change_3Ex8uVSOyQ",
"$type": "Change",
"status": "Open",
"base": "version_4HTEMs14G4"
},
"startupTemplate": {
"$id": "https: //api.sb/ leaseline.app/ startup-templates/ stpl_9OivLWR17L",
"$type": "StartupTemplate",
"slug": "leaseline",
"operatingModel": "autonomous",
"motions": [
"Example motions"
]
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "StartupTemplate.promote",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}StartupTemplate.upgrade
Upgrade moves a Startup to a newer Version of a Startup Template it extends, through a Change it can review. Verb page.
POST /{namespace}/ startup-templates/ {startupTemplate}/ upgradePath: startupTemplate. Body, as JSON: the other inputs. Emits StartupTemplate.upgraded.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
startupTemplate | Startup Template | required | The Startup Template to upgrade. |
startup | Startup | required | The Startup that extends it. |
version | Version | The target Version; the latest when absent. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
change | Change | required | The Change that moves the pin, with its three-way diff. |
startupTemplate | Startup Template | required | The Startup Template upgraded to. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ startup-templates/ stpl_9OivLWR17L/ upgrade \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"startup": "startup_l3hr1EnUGY"}'{
"api": "https: //api.sb/ leaseline.app",
"change": {
"$id": "https: //api.sb/ leaseline.app/ changes/ change_3Ex8uVSOyQ",
"$type": "Change",
"status": "Open",
"base": "version_4HTEMs14G4"
},
"startupTemplate": {
"$id": "https: //api.sb/ leaseline.app/ startup-templates/ stpl_9OivLWR17L",
"$type": "StartupTemplate",
"slug": "leaseline",
"operatingModel": "autonomous",
"motions": [
"Example motions"
]
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "StartupTemplate.upgrade",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}