Admin actions: Verbs, refusals and Approvals
How the Admin turns a Noun's custom Verbs into buttons, what a button runs, how a refusal shows, and where blocked Verbs and Approvals stand.
In the Admin, each Verb a Noun declares beyond the standard five is a button. The button runs the Verb on its record, and the Verb's rules decide whether the call completes or the Verb refuses.
Custom Verbs become actions
The standard five, create, get, list, update and delete, run through the list, the record page and the two forms. Every other Verb gets a button by verb-action, and Admin: derivation rules and edge cases covers the rest.
The label comes from the Verb's name: renew reads Renew, and markWon reads Mark won. A list with any custom Verb gains an Actions column. A button in a row runs its Verb without opening the record.
| Verb | Button | On | Sends | When it completes | When the Verb refuses |
|---|---|---|---|---|---|
Lease.renew | Renew | each list row, the record page, the edit form | the record, no inputs | Renew done, then the lease reloads | the Verb's reason; the lease as it was |
Lease.terminate | Terminate | each list row, the record page, the edit form | the record, no inputs | Terminate done, then the lease reloads | the Verb's reason; the lease as it was |
A button sends the record alone. A Verb declared with inputs still gets a button, but no form for them, as Verb inputs: what a form needs explains.
What a button runs
- A person presses
Renewon the lease of Maya Ortiz. Every Verb button on that record turns off, and the pressed one readsRenew…. - The Admin runs the Function of
Lease.renewwith the record and no inputs. - The Function completes or refuses. Nothing on the screen adds a rule.
- On completion, the Admin shows
Renew doneand reloads the record, byverb-result. - On a refusal, it shows the reason the Verb gives and leaves the screen as it was, by
refusal-message.
The pinned Admin build runs the Function in the browser, over the Startup's records. So the Verb refuses, with the rule its own Function holds.
Save and Delete run no Function
Only the Verb buttons run a Function. The Save button of a form and the Delete button write the record directly, so a Function the Startup gives create, update or delete does not run from them.
How a refusal shows
A Lease renews only from active. Press Renew once and the lease of Maya Ortiz moves to renewed. Press it again, and the Verb refuses with its reason:
Lease.renew moves a lease only from active; lease_1 is renewed.The notice holds the reason the Function gives, word for word. The record page keeps its values, and every button turns back on.
PlanThe same refusal over the API
In the design, the same call over the API ends in a Refused Action. Its problem document has the shape of the API spec's Refused error, and its detail is the sentence the notice shows.
{
"type": "https://startupbuilder.dev/errors/refused",
"title": "Refused",
"status": 422,
"detail": "Lease.renew moves a lease only from active; lease_1 is renewed.",
"fix": "Read the record, run the Verb that moves it to an allowed state, then retry.",
"instance": "https://api.sb/leaseclock.com/actions/action_3"
}The SDK, CLI and MCP server return the same document, because each calls the one Verb.
Blocked Verbs and access
No Noun-file key blocks a standard Verb. So every Noun gets all four screens, and every edit form has a Delete button. Every person who opens the Admin sees every button.
PlanBlocked standard Verbs and access
In the design, a standard Verb the definition blocks takes its part of the screens with it, by blocked-action. Blocking create drops the create form, and blocking delete drops every Delete button, the bulk Delete on the list included.
In the design, a button for a Verb the person's Access Level lacks never renders, by omit-by-access. The Permission still decides at the call, so a missing button never stands in for the rule.
Approvals
The pinned Admin has no wait state. A button's call completes or the Verb refuses before the notice shows.
PlanApprovals in the Admin
In the design, a call past its Limit neither completes nor refuses at once. Its Action waits pending for an Approval, and the notice says it waits.
Approved, the Action runs. Refused, it ends refused with the limit-exceeded problem, and unanswered by its deadline it ends canceled.
Approval is a Noun with the Verbs Approval.approve and Approval.refuse. So the team answers from an Approvals list with one button per Verb, derived by the same rule as Renew.
Admin: derivation rules and edge cases
Every rule that turns a Noun's properties, references and Verbs into the Admin's list, record page and forms, with the edge cases.
Admin overrides
The knobs a Startup sets to change what the Admin derives, such as a Noun's icon, the field that names a record, a hidden field and extra screens.