Optimization Protection
Generate a Zone PIN Key
Use the POST /keys endpoint to create a Zone PIN Key (ZPK), which is used to securely encrypt PIN data between trusted zones.
Key configuration requirements:
- Set
keyTypeto AES (Advanced Encryption standard). - Set
keyCategoryto ZPK (Zone PIN Key - Symmetric key used to encrypt PINs between zones).
The following table shows the required and optional fields for generating a ZPK:
| Field name | Description | Required (R) or Optional (O) |
|---|---|---|
keyType |
The cryptographic key type. Valid value is:
|
R |
keyCategory |
Key categories supported for key creation. Valid value is:
|
R |
keyPurpose |
The cryptographic purpose of the key. Valid value is:
|
O |
futureActivationTimestamp |
Indicates when the key becomes active and available for use. Activation date/time as EPOCH timestamp (milliseconds since 1970-01-01T00:00:00Z). |
O |
keyRotation.expirationTimestamp |
Expiry date for the key as EPOCH timestamp (milliseconds since 1970-01-01T00:00:00Z) | O |
keyRotation.count |
Number of records processed before rotation. | O |
metaData |
Optional custom metadata key-value pairs for keys. | O |
HTTP Method: POST
Endpoint: /keys
Scenario: Generating a ZPK
Json
{
"keyType": "AES",
"keyCategory": "ZPK",
"keyPurpose": "ENCRYPTION",
"futureActivationTimestamp": 2752499200000,
"keyRotation": {
"expirationTimestamp": 2784035200000,
"count": 1000000
},
"metadata": {
"zone": "acquirer-network-A",
"environment": "prod"
}
}Response:
Json
{
"activationTimestamp": 2752499200000,
"keyCategory": "ZPK",
"keyCreationTimestamp": 1791809608413,
"keyExpirationTimestamp": 2784035200000,
"keyId": "E5D1D7",
"keyMaterial": {
"keyBlock": "RD0144P0AB00E0000A0FE28EE269E8BB2DF3C242F9514BC18DBF52A41214531F2EEC06E1D2986BF7878AD24F91A2034BDA695FED2AA99CF5A66740214ABB8A93D1085A40706F77C97E5D1D7"
},
"keyPurpose": "ENCRYPTION",
"keyRotation": {
"count": 1000000,
"expirationTimestamp": 2784035200000
},
"keyType": "AES",
"owner": "JPMC",
"requestId": "8200ea86-e0f8-41f8-bf48-0974ba461523",
"responseCode": "ACCEPTED",
"responseMessage": "Request completed",
"status": "PENDING_ACTIVATION",
"timestamp": 1791809608416
}