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.

POST/projects/{projectId}/licenses/{licenseId}/extend

Base 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

NameInRequiredType and constraints
projectIdpathYesstringFormat: 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})$
licenseIdpathYesstringFormat: 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-KeyheaderYesstringIdentifies 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

object · ExtendLicenseRequest
  • No additional properties
FieldTypeRequiredDescription / constraints
validUntilstringYesExtend 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

object · LicenseResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
assignedCountintegerYesMinimum: 0 · Maximum: 9007199254740991
createdAtstringYesFormat: 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)))$
entitlementsarrayYes
View nested schema
array
Array items
object
  • No additional properties
FieldTypeRequiredDescription / constraints
idstringYesFormat: 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})$
keystringYesPattern: ^[a-z0-9][a-z0-9._:-]*$ · Minimum length: 1 · Maximum length: 128
namestringYesMinimum length: 1 · Maximum length: 200
idstringYesFormat: 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})$
namestringYesMinimum length: 1 · Maximum length: 200
organizationIdstringYesFormat: 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})$
revokedAtanyOfYes
View nested schema
anyOf

anyOf · 2 alternatives

Alternative 1
string
  • 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)))$
Alternative 2
null
seatLimitintegerYesMinimum: 1 · Maximum: 2147483647
updatedAtstringYesFormat: 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)))$
validFromstringYesFormat: 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)))$
validUntilanyOfYes
View nested schema
anyOf

anyOf · 2 alternatives

Alternative 1
string
  • 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)))$
Alternative 2
null

400 Invalid request. Known error codes: invalid_license_extension, invalid_request, idempotency_key_required, invalid_idempotency_key.

Content type: application/json

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

401 Authentication failed.

Content type: application/json

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

404 The authorized resource was not found. Known error codes: project_not_found, license_not_found.

Content type: application/json

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

409 The request conflicts with current resource state. Known error codes: license_revoked, license_non_expiring, idempotency_request_in_progress.

Content type: application/json

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

422 The Idempotency-Key was reused for a different logical request. Known error codes: idempotency_key_reused.

Content type: application/json

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

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

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

500 An unexpected server error occurred.

Content type: application/json

object · ErrorResponse
  • No additional properties
FieldTypeRequiredDescription / constraints
errorobjectYesNo additional properties
View nested schema
object
  • No additional properties
FieldTypeRequiredDescription / constraints
codestringYesMinimum length: 1
messagestringYesMinimum length: 1

Understand the Licenses concept →

← All API operations