Extend a License to at least an absolute expiration
Licenses · extendLicense
Extends a finite, non-revoked License in place, retaining unreleased Assignments and eligible Grants. Equal or earlier targets are successful no-ops. Forward targets must be after validFrom and in the future at transaction time. Naturally expired Licenses may be extended. Does not collect payment. Completed idempotent replay returns the original operation snapshot, which may differ from current License state.
/projects/{projectId}/licenses/{licenseId}/extendBase URL: https://api.businessmode.io/v1
Authentication
Developer bearer token
The requirement above comes from this operation's OpenAPI security declaration. See Authentication.
Idempotency-Key required
Retain one UUID for this logical mutation and reuse it with the same request after an ambiguous result. See Idempotency & retries.
Parameters
| Name | In | Required | Type and constraints |
|---|---|---|---|
projectId | path | Yes | stringFormat: uuid · Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$ |
licenseId | path | Yes | stringFormat: uuid · Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$ |
Idempotency-Key | header | Yes | stringIdentifies one logical mutation for the 24-hour BusinessMode replay window. UUID v4 is recommended. Reuse the same value only when retrying the same request.Pattern: ^[A-Za-z0-9._~:-]{1,255}$ · Minimum length: 1 · Maximum length: 255 |
Request body
Required
application/json
- No additional properties
| Field | Type | Required | Description / constraints |
|---|---|---|---|
validUntil | string | Yes | Extend this finite, non-revoked License to at least this absolute timestamp. Equal or earlier targets are successful no-ops. A forward target must be after validFrom and in the future at transaction time. A replay returns the original response snapshot.Format: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ |
Responses
For status codes, request IDs, and safe retry decisions, see Errors & recovery. Known-code descriptions below are operation-specific, not a complete global error enum.
200 Successful response.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
assignedCount | integer | Yes | Minimum: 0 · Maximum: 9007199254740991 | ||||||||||||||||
createdAt | string | Yes | Format: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ | ||||||||||||||||
entitlements | array | Yes | View nested schemaarray Array itemsobject
| ||||||||||||||||
id | string | Yes | Format: uuid · Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$ | ||||||||||||||||
name | string | Yes | Minimum length: 1 · Maximum length: 200 | ||||||||||||||||
organizationId | string | Yes | Format: uuid · Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$ | ||||||||||||||||
revokedAt | anyOf | Yes | View nested schemaanyOf anyOf · 2 alternatives Alternative 1string
Alternative 2null | ||||||||||||||||
seatLimit | integer | Yes | Minimum: 1 · Maximum: 2147483647 | ||||||||||||||||
updatedAt | string | Yes | Format: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ | ||||||||||||||||
validFrom | string | Yes | Format: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ | ||||||||||||||||
validUntil | anyOf | Yes | View nested schemaanyOf anyOf · 2 alternatives Alternative 1string
Alternative 2null |
400 Invalid request. Known error codes: invalid_license_extension, invalid_request, idempotency_key_required, invalid_idempotency_key.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|
401 Authentication failed.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|
404 The authorized resource was not found. Known error codes: project_not_found, license_not_found.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|
409 The request conflicts with current resource state. Known error codes: license_revoked, license_non_expiring, idempotency_request_in_progress.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|
422 The Idempotency-Key was reused for a different logical request. Known error codes: idempotency_key_reused.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|
429 Too many requests. Honor Retry-After before retrying with the same logical Idempotency-Key, where required. Known error codes: rate_limit_exceeded.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|
500 An unexpected server error occurred.
Content type: application/json
- No additional properties
| Field | Type | Required | Description / constraints | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
error | object | Yes | No additional propertiesView nested schemaobject
|