Skip to content

Essence API Key Management ​

All OpenAPI documents

Version v1 · OpenAPI 3.0.1 · 18 operations · Download the JSON document

API key management service for the Essence API Platform (EPIC 8)

Generated from the ApiKeyManagement service's code at build time (api-specs/generated/ApiKeyManagement/Essence.Api.KeyManagement.Api.json) and drift-checked in CI. It describes what the code registers, which is not the same as what any one deployment has routed.

ApiKeys

GET/api/v1/api-keys

Gets all API keys for the authenticated user

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
pageNumberqueryinteger (int32)no—
pageSizequeryinteger (int32)no—

Request body

No request body.

Responses

POST/api/v1/api-keys

Creates a new API key. The plain key is returned ONCE in the response and cannot be retrieved again.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — CreateApiKeyResponse
400Bad Request — ProblemDetails
POST/api/v1/api-keys/introspect

Says whether a presented key is live and usable for one scope, and which organisation it acts for — WITHOUT recording a request against it (#10370).

For a backend that authenticates a key for itself rather than trusting an identity the edge forwards (EPIC 51's compliance gate). The edge's `validate` has already metered the request; this one must not meter it twice. Restricted to service callers holding `apikey.introspect`: plain `[Authorize]` would let any signed-in user test key guesses here without a single request ever being counted against them.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

400Bad Request — ProblemDetails
403Forbidden — ProblemDetails
GET/api/v1/api-keys/usage

Rolls up consumption across every key the calling developer holds.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
developerIdquerystring (uuid)noOptional, and must be the caller's own id when supplied. The console passes it explicitly; accepting an arbitrary value would turn this into a read of anyone's consumption pattern, which reveals their traffic volume and outage windows.

Request body

No request body.

Responses

200Success — AccountUsageDto
403Forbidden — ProblemDetails
POST/api/v1/api-keys/validate

Validates an API key (used by the API gateway for key-based authentication). Uses CryptographicOperations.FixedTimeEquals for constant-time comparison (SEC-005).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

400Bad Request — ProblemDetails
GET/api/v1/api-keys/{id}

Gets an API key by ID

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200Success — ApiKeyDto
404Not Found — ProblemDetails
DELETE/api/v1/api-keys/{id}

Revokes an API key

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

204No Content
404Not Found — ProblemDetails
POST/api/v1/api-keys/{id}/rotate

Rotates an API key (creates a new key with the same properties and revokes the old one — at once, or after an optional overlap of up to 24 hours during which both validate). The new plain key is returned ONCE in the response.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200Success — RotateApiKeyResponse
404Not Found — ProblemDetails
GET/api/v1/api-keys/{id}/usage

Reports one key's consumption against its quota (FR-25.009.5): requests today, the enforced daily ceiling, current burst pressure, whether the key is being throttled right now and on which dimension, and a seven-day trend.

Answers 404 both when the key does not exist and when it is not the caller's, so the response cannot be used to enumerate key ids.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200Success — KeyUsageDto
404Not Found — ProblemDetails

ApiVersions

GET/api/v1/versions

The publisher version catalogue (FR-08.050).

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200Success — ApiVersionDto[]
GET/api/v1/versions/pending-sunsets

Pending sunsets affecting a developer's applications (FR-08.039).

developerId is accepted for the console's query-string contract but is NOT the identity: a developer may only read their own pending sunsets, so a value other than the caller's own is refused rather than honoured. Trusting it would turn a convenience parameter into a cross-tenant read of another developer's integration inventory — which endpoints they call, and on which versions.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
developerIdquerystring (uuid)no—

Request body

No request body.

Responses

200Success — PendingSunsetDto[]
403Forbidden — ProblemDetails
POST/api/v1/versions/{version}/acknowledge

The maintainer acknowledges the sunset notice (FR-08.051).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—

Request body

Not marked as required in the document.

Responses

200Success — PendingSunsetDto
404Not Found — ProblemDetails
POST/api/v1/versions/{version}/consumers/{principalId}/extension

Grants one consumer a grace extension past the sunset date.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—
principalIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

204No Content
404Not Found — ProblemDetails
POST/api/v1/versions/{version}/deprecate

Declares a version deprecated (FR-08.050).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—

Request body

Not marked as required in the document.

Responses

200Success — ApiVersionDto
400Bad Request — ProblemDetails
409Conflict — ProblemDetails
422The sunset date is inside the 12-month floor (`sunset_floor_violation`). — ProblemDetails
GET/api/v1/versions/{version}/deprecation-report

The read-only governance/audit bundle (FR-08.053).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—

Request body

No request body.

Responses

200Success — DeprecationReportDto
404Not Found — ProblemDetails
GET/api/v1/versions/{version}/migration-progress

Per-consumer migration progress (FR-08.051).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—

Request body

No request body.

Responses

200Success — MigrationProgressDto
404Not Found — ProblemDetails
POST/api/v1/versions/{version}/notify

Sends or re-sends the deprecation notice campaign (FR-08.050 → EPIC 66).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—

Request body

Not marked as required in the document.

Responses

200Success — NotifyCampaignResponse
404Not Found — ProblemDetails
409Conflict — ProblemDetails
POST/api/v1/versions/{version}/retire

Retires a version, subject to the zero-traffic gate (FR-08.052).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
versionpathstringyes—

Request body

Not marked as required in the document.

Responses

200Success — RetireVersionResponse
404Not Found — ProblemDetails
409Live traffic or unacknowledged consumers remain (`version_still_in_use`). — ProblemDetails

Schemas

AccountUsageDto

PropertyTypeRequiredDescription
developerIdstring (uuid)no—
keysKeyUsageDto[] | nullno—
organizationIdstring (uuid) | nullno—
overageAccruedMinorinteger (int64) | nullno—
overageCeilingMinorinteger (int64) | nullno—
overageCurrencystring | nullno—
overageRequestsinteger (int64)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—

AcknowledgeSunsetRequest

PropertyTypeRequiredDescription
applicationIdstring (uuid)no—

ApiKeyDto

PropertyTypeRequiredDescription
createdAtstring (date-time)no—
descriptionstring | nullno—
expiresAtstring (date-time) | nullno—
failedRequestsinteger (int64)no—
idstring (uuid)no—
ipWhiteliststring[] | nullno—
keyPrefixstring | nullno—
lastRotatedAtstring (date-time) | nullno—
lastUsedAtstring (date-time) | nullno—
namestring | nullno—
requestsPerDayinteger (int32)no—
requestsPerHourinteger (int32)no—
requestsPerMinuteinteger (int32)no—
revokedAtstring (date-time) | nullno—
revokedReasonstring | nullno—
rotationOverlapEndsAtstring (date-time) | nullno—
scopesstring[] | nullno—
statusstring | nullno—
supersededByKeyIdstring (uuid) | nullno—
tierstring | nullno—
totalRequestsinteger (int64)no—
userIdstring (uuid)no—

ApiKeyDtoPaginatedResponse

PropertyTypeRequiredDescription
hasNextPagebooleanno—
hasPreviousPagebooleanno—
itemsApiKeyDto[] | nullno—
pageNumberinteger (int32)no—
pageSizeinteger (int32)no—
totalCountinteger (int32)no—
totalPagesinteger (int32)no—

ApiKeyIntrospectionResultDto

PropertyTypeRequiredDescription
activebooleanno—
apiKeyIdstring (uuid) | nullno—
organizationIdstring (uuid) | nullno—
scopesstring[] | nullno—

ApiKeyValidationResultDto

PropertyTypeRequiredDescription
apiKeyIdstring (uuid) | nullno—
breachedDimensionstring | nullno—
burstUsedThisMinuteinteger (int32) | nullno—
dailyResetAtstring (date-time) | nullno—
failureReasonstring | nullno—
insufficientScopebooleanno—
isValidbooleanno—
requestsPerDayinteger (int32) | nullno—
requestsPerDayLimitinteger (int64) | nullno—
requestsPerHourinteger (int32) | nullno—
requestsPerMinuteinteger (int32) | nullno—
requestsTodayinteger (int64) | nullno—
requiredScopestring | nullno—
retryAfterSecondsinteger (int32) | nullno—
scopesstring[] | nullno—
throttledbooleanno—
tierstring | nullno—
userIdstring (uuid) | nullno—

ApiVersionDto

PropertyTypeRequiredDescription
changeClassstring | nullno—
decisionRegisterRefstring | nullno—
deprecatedAtstring (date-time) | nullno—
migrationGuideUrlstring | nullno—
remainingConsumersinteger (int32)no—
replacementVersionstring | nullno—
statusstring | nullno—
sunsetAtstring (date-time) | nullno—
versionstring | nullno—

ConsumerMigrationRowDto

PropertyTypeRequiredDescription
ackStatestring | nullno—
applicationNamestring | nullno—
calls30dinteger (int64)no—
extensionUntilstring (date-time) | nullno—
lastSeenAtstring (date-time) | nullno—
maintainerEmailstring | nullno—
migratedbooleanno—
principalIdstring (uuid)no—

CreateApiKeyRequest

PropertyTypeRequiredDescription
descriptionstring | nullno—
expiresAtstring (date-time) | nullno—
namestring | nullno—
scopesstring[] | nullno—
tierstring | nullno—

CreateApiKeyResponse

PropertyTypeRequiredDescription
apiKeystring | nullno—
createdAtstring (date-time)no—
expiresAtstring (date-time) | nullno—
idstring (uuid)no—
keyPrefixstring | nullno—
namestring | nullno—
scopesstring[] | nullno—
tierstring | nullno—

DeclareDeprecationRequest

PropertyTypeRequiredDescription
changeClassstring | nullno—
deprecationDatestring (date-time)no—
migrationGuideUrlstring | nullno—
rationalestring | nullno—
replacementVersionstring | nullno—
sunsetDatestring (date-time)no—

DeprecationDecisionDto

PropertyTypeRequiredDescription
changeClassstring | nullno—
decidedAtstring (date-time)no—
decidedBystring | nullno—
decisionRegisterRefstring | nullno—
rationalestring | nullno—

DeprecationReportDto

PropertyTypeRequiredDescription
decisionDeprecationDecisionDtono—
notificationEvidenceNotificationEvidenceDtono—
paritySurfaceParityDto[] | nullno—
versionstring | nullno—
zeroTrafficRecordZeroTrafficRecordDtono—

GrantExtensionRequest

PropertyTypeRequiredDescription
reasonstring | nullno—
untilstring (date-time)no—

IntrospectApiKeyRequest

PropertyTypeRequiredDescription
apiKeystring | nullno—
requiredScopestring | nullno—

KeyUsageDto

PropertyTypeRequiredDescription
applicationIdstring (uuid)no—
applicationNamestring | nullno—
breachedDimensionstring | nullno—
burstPerMinuteLimitinteger (int32)no—
burstUsedThisMinuteinteger (int32)no—
dailyResetAtstring (date-time)no—
keyIdstring (uuid)no—
requestsPerDayLimitinteger (int64) | nullno—
requestsTodayinteger (int64)no—
retryAfterSecondsinteger (int32) | nullno—
throttledNowbooleanno—
tierCodestring | nullno—
trend7DayUsageTrendPointDto[] | nullno—

MigrationProgressDto

PropertyTypeRequiredDescription
consumersConsumerMigrationRowDto[] | nullno—
liveRequestsInWindowinteger (int64)no—
measurementWindowDaysinteger (int32)no—
versionstring | nullno—

NotificationEvidenceDto

PropertyTypeRequiredDescription
acknowledgedinteger (int32)no—
correlationIdstring | nullno—
deliveredinteger (int32)no—
failedinteger (int32)no—
notAcknowledgedinteger (int32)no—
totalRecipientsinteger (int32)no—

NotifyCampaignRequest

PropertyTypeRequiredDescription
audiencestring | nullno—
reminderCadencestring[] | nullno—

NotifyCampaignResponse

PropertyTypeRequiredDescription
correlationIdstring | nullno—
recipientsinteger (int32)no—

PendingSunsetDto

PropertyTypeRequiredDescription
ackStatestring | nullno—
applicationIdstring (uuid)no—
applicationNamestring | nullno—
deprecatedAtstring (date-time) | nullno—
endpointsCalledstring[] | nullno—
measurementWindowDaysinteger (int32)no—
migratedbooleanno—
migrationGuideUrlstring | nullno—
replacementVersionstring | nullno—
sunsetAtstring (date-time)no—
versionstring | nullno—

ProblemDetails

PropertyTypeRequiredDescription
detailstring | nullno—
instancestring | nullno—
statusinteger (int32) | nullno—
titlestring | nullno—
typestring | nullno—

RetireVersionRequest

PropertyTypeRequiredDescription
forcebooleanno—
signOffRationalestring | nullno—

RetireVersionResponse

PropertyTypeRequiredDescription
retiredAtstring (date-time)no—
zeroTrafficVerifiedAtstring (date-time)no—

RevokeApiKeyRequest

PropertyTypeRequiredDescription
reasonstring | nullno—

RotateApiKeyRequest

PropertyTypeRequiredDescription
overlapHoursinteger (int32)no—

RotateApiKeyResponse

PropertyTypeRequiredDescription
apiKeystring | nullno—
createdAtstring (date-time)no—
expiresAtstring (date-time) | nullno—
keyPrefixstring | nullno—
newKeyIdstring (uuid)no—
oldKeyIdstring (uuid)no—
previousKeyValidUntilstring (date-time) | nullno—

SurfaceParityDto

PropertyTypeRequiredDescription
deprecatedbooleanno—
detailstring | nullno—
surfacestring | nullno—

UsageTrendPointDto

PropertyTypeRequiredDescription
datestring | nullno—
requestsinteger (int64)no—
throttledRequestsinteger (int64)no—

ValidateApiKeyRequest

PropertyTypeRequiredDescription
apiKeystring | nullno—
endpointstring | nullno—
ipAddressstring | nullno—
requestedVersionstring | nullno—
requiredScopestring | nullno—

ZeroTrafficRecordDto

PropertyTypeRequiredDescription
liveRequestsInWindowinteger (int64)no—
measurementWindowDaysinteger (int32)no—
verifiedAtstring (date-time)no—

Built with ❤️ for developers · Service status