Payment encryption: retires one key entry.
POST
/api/merchants/{id}/payment-encryption-bindings/{providerName}/keys/{ksi}/deactivate
deprecated
Requires: Merchants.Merchants.Update, merchant scope.
Deactivates the entry so it is never matched again. The ordinary end of a key's life: the entry stays readable so a transaction decrypted under it can still be explained, and its key reference stays stored so a reactivation does not need it sent again. Only the status and its timestamp change. Idempotent. Optionally send `If-Match: "<concurrencyStamp>"`.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a . See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id
required |
path | string (uuid) | The merchant id. |
providerName
required |
path | string | The provider whose binding holds the key table. |
ksi
required |
path | string | The key serial identifier to retire. |
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|
This request body has no documented fields.
Responses
200 OK
Body: PaymentEncryptionKeyEntry
Each item has these fields.
| Field | Type | Description |
|---|---|---|
ksi
required |
string | The key serial identifier: six to ten significant hex characters, stored upper-case with leading `F` padding stripped. Unique within a binding. Conditional: When Ksi is not empty. nullable |
label
required |
string | An operator-facing label for this key, such as the device family it was injected into. Shown wherever the key reference itself must not be. nullablemax length 100 |
scheme
required |
all of PaymentEncryptionScheme | Which encryption scheme the terminals under this key produce. Required: When Status != Deactivated. nullable |
dukptMode
required |
all of PaymentEncryptionDukptMode | The DUKPT key derivation algorithm this key uses. nullable |
aesWorkingKeyType
required |
string | The AES working-key type, required when `dukptMode` is `Aes` and meaningless otherwise. A provider token value rather than an enum, because the vocabulary belongs to the vendor's command set. Required: When DukptMode == Aes. Conditional: When DukptMode is not null and DukptMode != Aes. nullablemax length 16 |
keyReference
required |
string | The HSM key reference: a storage-table slot or a wrapped key block. <b>Always stored encrypted, and never returned on a read that leaves the server.</b> nullablemax length 1024 |
isKeyReferenceConfigured
required |
boolean | Whether a key reference is stored, set on reads so an operator can tell a configured key from an empty one without the reference ever being sent. Server-owned: the save paths ignore whatever arrives here. nullable |
majorKey
required |
string | The major key the reference is stored under, in the provider's own token vocabulary. Null leaves the provider's default in force. nullablemax length 16 |
onGuardExtendedEncryption
required |
boolean | On-Guard extended encryption, when the device family uses it. Meaningful only when `scheme` is `OnGuard`. Conditional: When Scheme is not null and Scheme != OnGuard. nullable |
onGuardEndingPanDigitsEncrypted
required |
boolean | Whether the device family encrypts the ending PAN digits. Meaningful only for `OnGuard`. Conditional: When Scheme is not null and Scheme != OnGuard. nullable |
onGuardClearPanDigits
required |
integer (int32) | How many leading PAN digits the device family leaves in the clear. Meaningful only for `OnGuard`. Conditional: When Scheme is not null and Scheme != OnGuard. Conditional: When OnGuardClearPanDigits is not null. Range: 0 to 6. nullable |
status
required |
all of PaymentEncryptionKeyEntryStatus | Whether the entry may be matched. Null reads as `Deactivated`: an entry whose status nobody set has not been through the boarding step that activates it, and matching it would use a key the platform cannot confirm is live. nullable |
requireMac
required |
boolean | Reserved: whether the device family attaches a MAC that should be verified during decryption. nullable |
createdAtUtc
required |
string (date-time) | When the entry was created, in UTC. nullable |
statusChangedAtUtc
required |
string (date-time) | When `status` last changed, in UTC. Separate from the audit log because it is shown on the key table itself, where an operator decides whether a key is still in rotation. nullable |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
400 Bad Request
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.