Renewal
A Renewal is the Deal for a term Subscription’s next term, opened before the term ends and closed renewed, expanded, contracted, or churned.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
termEndsAt | datetime | required | When the current term ends, read from the Subscription. |
openedAt | datetime | required | When it opened: by default 90 days before the term ends. |
usageReview | text | Usage against each Entitlement over the term, written before any Quote. | |
noticeSentAt | datetime | When the renewal notice the legal floor requires went out, with the date, Price and cancel link. | |
saveOffer | text | The one save offer shown on cancel; it never blocks the cancel. | |
outcome | string | One of renewed, expanded, contracted, or churned, computed from the Subscription’s Events at the term end. |
Inherited from Deal: 6 properties
| Property | Type | Required | Description |
|---|---|---|---|
status | string | required | One of Open, Qualified, Proposed, Won, or Lost. |
value | money | What the Deal is worth if won. | |
owner | Worker | The Worker who runs it. | |
closesOn | date | The date the buyer expects to decide. | |
statusSince | datetime | When it entered its current status, computed from its Events. | |
nextStep | text | The next dated step agreed with the buyer. |
Object
{
"$id": "https: //api.sb/ tutorloop.com/ renewals/ renewal_1",
"$type": "Renewal",
"status": "Open",
"value": {
"amount": 60,
"currency": "USD"
},
"owner": "worker_1",
"closesOn": "2026-10-22",
"statusSince": "2026-10-22T12: 00: 00Z",
"nextStep": "Example next step",
"termEndsAt": "2026-10-22T12: 00: 00Z",
"openedAt": "2026-10-22T12: 00: 00Z",
"usageReview": "Example usage review",
"noticeSentAt": "2026-10-22T12: 00: 00Z",
"saveOffer": "Example save offer",
"outcome": "renewed"
}Relationships
- A Renewal renews one Subscription: each Renewal decides one term of one Subscription; a Subscription has one Renewal per term.
renews, inverserenewals.
Verbs
createCreates a Renewal.POST /{namespace}/renewalsgetReturns one Renewal by id.GET /{namespace}/renewals/{id}listReturns Renewals, newest first, one page at a time.GET /{namespace}/renewalsupdateChanges the given properties of a Renewal.PATCH /{namespace}/renewals/{id}deleteDeletes a Renewal; its history is kept.DELETE /{namespace}/renewals/{id}openOpen starts the Renewal for a term Subscription before its term ends, with a usage review and any notice the legal floor requires.POST /{namespace}/renewals/open
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Renewal.create | Yes | Yes | Yes | No |
Renewal.get | Yes | Yes | Yes | Yes |
Renewal.list | Yes | Yes | Yes | Yes |
Renewal.update | Yes | Yes | Yes | No |
Renewal.delete | Yes | Yes | Yes | No |
Renewal.open | Yes | Yes | Yes | No |
Call it
Open the latest renewal with a subscription.Example
A 12-seat litigation team's Renewal opens 90 days before its term ends, and the usage review shows 9 seats active. The Success Manager sends a 10-seat Quote, the team accepts it, and the Renewal closes contracted.