Download OpenAPI specification:Download
Enigma Vault encrypts and tokenizes data of all shapes and sizes. Enigma Vault provides the following services:
To get started, head on over to our AWS Marketplace page and select one of our offerings. Once you have credentials, feel free to use the PostMan app or our Swagger UI.
Enigma Vault utilizes AWS Lambda for performance and security reasons. Are you using Lambda as well? You can integrate using your favorite runtime http client or you can also use one of the SDKs below.
When a card is stored in the vault, the original card information is not retrievable by the client without the cardvault_raw scope (contact support). The CVV's ttl is set to the same ttl as the card unless the card is stored permanently. If the card is stored permanently, the CVV's ttl is set to 30 minutes. The CVV is purged after its first use or after its ttl expires, whichever comes first. After the card's ttl, the card is deleted. To make the card permanent, leave out the ttl property. The full card number can be used through the proxy endpoint. You can get the first six, the last four, full name, and expiration from /cardvault/cards (GET).
preserveFormat | boolean If true, a Luhn passable token is returned consisting of the original first six and last four. |
x-api-version required | string Default: 1.5 The requested API version |
Card information.
ccn required | string <credit-card> ^\d+$ Card number. |
fullName required | string [ 2 .. 30 ] characters Full name located on the card. |
expMonth required | integer <int32> [ 1 .. 12 ] Expiration month. |
expYear required | integer <int32> ^\d{4}$ Expiration year. |
cvv | string or null^\d{3}$|^\d{4}$ Card verification value (security code). This value is not stored permanently. |
cardType required | string [ 1 .. 30 ] characters Type of card (amex, diners_club_carte_blanche, diners_club_international, jcb, laser, visa_electron, visa, mastercard, discover, dankort, maestro, uatp, mir). |
cvvTtl required | integer <int32> [ 0 .. 1800 ] Remaining ttl before the CVV gets deleted. |
ttl | integer or null <int32> [ 60 .. 1800 ] The card's time to live in seconds. Once expired the card is deleted from the vault. |
{- "ccn": "4111111111111111",
- "fullName": "Edward E Nigma",
- "expMonth": 12,
- "expYear": 9999,
- "cvv": "123",
- "cardType": "visa",
- "cvvTtl": 60,
- "ttl": 1800
}
{- "token": "81524853-1a19-4bd6-9ba4-70f54dce30a2da13543e-6b8e-4fa9-9af5-ef8c1e4aae87"
}
Provides card data. The first six and the last four are included in the response. The ttl values represent the time remaining in seconds until that item is purged. the original card information is not retreivable by the client without the cardvault_raw scope (contact support). If you have the proper scope, use the cardvault/raw/cards endpoint.
ephemeralKey | string or null <uuid> Expiring key for temporary access. |
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
{- "firstSix": "411111",
- "lastFour": "1111",
- "ccn": "4111111111111111",
- "expMonth": 12,
- "expYear": 9999,
- "fullName": "Edward E Nigma",
- "cardType": "visa",
- "cvvTtl": 60,
- "ttl": 60
}
Returns an empty 204 response on success.
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
{ }
Special endpoint to retreive raw card data. It can only be used with the cardvault_raw scope.
ephemeralKey | string or null <uuid> Expiring key for temporary access. |
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
{- "ccn": "4111111111111111",
- "fullName": "Edward E Nigma",
- "expMonth": 12,
- "expYear": 9999,
- "cvv": "123",
- "cardType": "visa",
- "cvvTtl": 60,
- "ttl": 1800
}
The ephemeralKey is a one time use expiring key that allows an external client to use a card token. The destinationClientId is a valid Enigma Vault clientId of the destination app. The time to live (ttl) is in seconds.
destinationClientId required | string Enigma Vault client granted use of the ephemeralKey. |
ttl | integer or null <int32> [ 60 .. 1800 ] Time to live in seconds, max of 1800 seconds. This is only applicable when the card has a ttl of 0 (permanent). Otherwise the ephemeralKey ttl is set to the card ttl. |
cardToken required | string [ 13 .. 72 ] characters Reference to the vaulted card. |
x-api-version required | string Default: 1.5 The requested API version |
{- "ephemeralKey": "b99b4ad0-2c32-4db8-bc03-283f420a3549"
}
The card's time to live in seconds. Once expired the card is deleted from the vault. If -1, the card lives forever until manually deleted.
ephemeralKey | string or null <uuid> Expiring key for temporary access. |
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
{- "cvvTtl": 1800,
- "ttl": 1800
}
Adjusts the time (seconds) until deletion. Additional time cannot be added to the CVV's ttl.
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
New card ttl value.
ttl required | integer <int32> [ 60 .. 1800 ] The card's time to live in seconds. Once expired the card is deleted from the vault. If -1, card lives forever until manually deleted. |
{- "ttl": 1800
}
{ }
This endpoint allows you to use a stored card without touching the card data. Build out the request meant for the upstream url and then use the following placeholders to have the endpoint populate them with card data: ${ccn}, ${cvv}, ${fullName}, ${lastName}, ${firstName}, ${cardType}, ${mm}, ${yy}, and ${yyyy}. Supports GET/PUT/POST/DELETE.
ephemeralKey | string or null <uuid> Expiring key for temporary access. |
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
Token and gateway information.
url required | string <uri> URL to use on the payment gateway request. |
httpMethod required | string^GET$|^PUT$|^POST$|^DELETE$/i HTTP method to use on the payment gateway request. |
Array of objects or null (HeadersModel) Headers to use on the payment gateway request. | |
body | string or null Body to use on the payment gateway request. |
{- "httpMethod": "POST",
- "headers": [
- {
- "name": "Content-type",
- "value": "application/json"
}
], - "body": "{\"createTransactionRequest\":{\"merchantAuthentication\":{\"name\":\"XXXXXXXXX\",\"transactionKey\":\"XXXXXXXXXXX\"},\"refId\":\"123456\",\"transactionRequest\":{\"transactionType\":\"authOnlyTransaction\",\"amount\":\"5.50\",\"payment\":{\"creditCard\":{\"cardNumber\":\"${ccn}\",\"expirationDate\":\"${yyyy}-${mm}\",\"cardCode\":\"999\"}},\"billTo\":{\"firstName\":\"${firstName}\",\"lastName\":\"${lastName}\",\"company\":\"Souveniropolis\",\"address\":\"14 Main Street\",\"city\":\"Pecan Springs\",\"state\":\"TX\",\"zip\":\"44628\",\"country\":\"USA\"}}}}"
}
{- "headers": [
- {
- "name": "Content-type",
- "value": "application/json"
}
], - "statusCode": 200,
- "contentType": "application/json",
- "body": "{\"transactionResponse\":{\"responseCode\":\"1\",\"authCode\":\"AKXD8T\",\"avsResultCode\":\"Y\",\"cvvResultCode\":\"P\",\"cavvResultCode\":\"2\",\"transId\":\"60159519275\",\"refTransID\":\"\",\"transHash\":\"\",\"testRequest\":\"0\",\"accountNumber\":\"XXXX1111\",\"accountType\":\"Visa\",\"messages\":[{\"code\":\"1\",\"description\":\"This transaction has been approved.\"}],\"transHashSha2\":\"\",\"SupplementalDataQualificationIndicator\":0,\"networkTransId\":\"0V3X5LPO079GCBFQM2B348D\"},\"refId\":\"123456\",\"messages\":{\"resultCode\":\"Ok\",\"message\":[{\"code\":\"I00001\",\"text\":\"Successful.\"}]}}"
}
The card processing UI allows your customers to enter their card data and process upstream with the payment gateway without your app touching it. Build out the request meant for the upstream url and then use the following placeholders to have the endpoint populate them with card data: ${total}, ${ccn}, ${cvv}, ${fullName}, ${lastName}, ${firstName}, ${cardType}, ${mm}, ${yy}, and ${yyyy}. Supports GET/PUT/POST/DELETE. The customer is redirected back to your app (callback url) via POST with the parameter eVsessionId. You can then use /cardvault/process/sessions/ to determine the adjudication. The session information is available for 72 hours. If the customer choses to save their card, it will be available through the sessions endpoint. If the customer chooses to cancel or if the form timeouts, evException will have a value within the POST callback. For cancels, evException's value will be 'cancel'. For timeouts, the evException's value will be 'timeout'. There are multiple ways to integrate the card process form. You can use it within a popup, redirect or simple iframe.
callbackUrl required | string <uri> URL the user is redirected to after storing the card. |
showTimer required | boolean Show or hide the timer. |
showCard required | boolean Show or hide the card visual. |
ttl required | integer <int32> [ 60 .. 1800 ] Form session time to live in seconds. After it expires, the form can no longer be used. |
preserveFormat | boolean If true, a Luhn passable token is returned consisting of the original first six and last four. |
cardTypes | string or null Card types, comma delimited. Omit for any card. (amex, diners_club_carte_blanche, diners_club_international, jcb, laser, visa_electron, visa, mastercard, discover, dankort, maestro, uatp, mir). |
pageHeader | string or null [ 3 .. 35 ] characters Configurable page header. |
submitButtonText | string or null [ 0 .. 20 ] characters Default: "Pay Now" Text of the submit button. |
language | string or null^en|es|fr|zh-Hans$ Default: "en" The language to use on the form. Currently en (English), es (Spanish), fr (French), and zh-Hans (Chinese simplified) are available. |
submitButtonColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#0078e7" The hex color of the submit button. |
cancelButtonColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#f08080" The hex color of the cancel button. |
pageColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#ffffff" The hex color of the page background. |
submitButtonTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#ffffff" The hex color of the submit button text. |
cancelButtonTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#000000" The hex color of the cancel button text. |
pageTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#000000" The hex color of the page text. |
cartTableBorderColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#e0e0e0" The hex color of the cart table header and border. |
cartTableAlternateRowColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#f2f2f2" The hex color of the cart table's alternating rows. |
x-api-version required | string Default: 1.5 The requested API version |
Gateway and cart information.
required | object (GatewayRequestModel) |
required | object (CartModel) |
{- "gatewayRequest": {
- "httpMethod": "POST",
- "headers": [
- {
- "name": "Content-type",
- "value": "application/json"
}
], - "body": "{\"createTransactionRequest\":{\"merchantAuthentication\":{\"name\":\"XXXXXXXXX\",\"transactionKey\":\"XXXXXXXXXXX\"},\"refId\":\"123456\",\"transactionRequest\":{\"transactionType\":\"authOnlyTransaction\",\"amount\":\"${total}\",\"payment\":{\"creditCard\":{\"cardNumber\":\"${ccn}\",\"expirationDate\":\"${yyyy}-${mm}\",\"cardCode\":\"${cvv}\"}},\"billTo\":{\"firstName\":\"${firstName}\",\"lastName\":\"${lastName}\",\"company\":\"Souveniropolis\",\"address\":\"14 Main Street\",\"city\":\"Pecan Springs\",\"state\":\"TX\",\"zip\":\"44628\",\"country\":\"USA\"}}}}"
}, - "cart": {
- "cultureCode": "en-US",
- "cartItems": [
- {
- "description": "Personal pizza small - pepperoni",
- "amount": 5.55
}
], - "total": 5.55,
- "gatewayIntegersOnly": false
}
}
{
}
Obtain the results from the gateway and retrieve the card token if the customer decided to save it.
id required | string <uuid> Session ID |
x-api-version required | string Default: 1.5 The requested API version |
{- "gatewayResponse": {
- "headers": [
- {
- "name": "Content-type",
- "value": "application/json"
}
], - "statusCode": 200,
- "contentType": "application/json",
- "body": "{\"transactionResponse\":{\"responseCode\":\"1\",\"authCode\":\"AKXD8T\",\"avsResultCode\":\"Y\",\"cvvResultCode\":\"P\",\"cavvResultCode\":\"2\",\"transId\":\"60159519275\",\"refTransID\":\"\",\"transHash\":\"\",\"testRequest\":\"0\",\"accountNumber\":\"XXXX1111\",\"accountType\":\"Visa\",\"messages\":[{\"code\":\"1\",\"description\":\"This transaction has been approved.\"}],\"transHashSha2\":\"\",\"SupplementalDataQualificationIndicator\":0,\"networkTransId\":\"0V3X5LPO079GCBFQM2B348D\"},\"refId\":\"123456\",\"messages\":{\"resultCode\":\"Ok\",\"message\":[{\"code\":\"I00001\",\"text\":\"Successful.\"}]}}"
}, - "cart": {
- "cultureCode": "en-US",
- "cartItems": [
- {
- "description": "Personal pizza small - pepperoni",
- "amount": 5.55
}
], - "total": 5.55,
- "gatewayIntegersOnly": false
}, - "token": "81524853-1a19-4bd6-9ba4-70f54dce30a2da13543e-6b8e-4fa9-9af5-ef8c1e4aae87"
}
The card store form allows your app to store and later use customer card data without touching it. After the cardTtl expires, the card is deleted. If the user decides to save the card, the card is stored permanently. If you're seeking to permanently store the card outside of a transaction (wallet style), set walletSave to true. If you set walletSave to true, the buttonText and cardTtl are overriden. If walletSave is true the CVV isn't requested. If you intend to use the card in a transaction within 30 minutes, set walletSave to false. On callback, your app will receive via POST the card token within the parameter eVtoken. If the customer chooses to cancel or if the form timeouts, the evException parameter will contain the reason. For cancels, evException's value will be 'cancel'. For timeouts, evException's value will be 'timeout'. If embedFormForControl is set to true, pass 'submit' as a message over to the iframe to submit the form. On response, the parent will receive an object that consists of the status, the token, and CardModel object. There are multiple ways to integrate the card store form. You can use it within a popup, redirect, simple iframe, or iframe where the parent page has control to submit the form. You can find example code for the advanced iframe integration on GitHub.
showTimer required | boolean Show or hide the timer. |
showCard required | boolean Show or hide the card visual. |
walletSave required | boolean Make true to store the card in your app's wallet. This overrides the cardTtl and buttonText values. The CVV isn't requested if true. If you intend to use the card in a transaction within 30 minutes, set walletSave to false. |
embedFormForControl required | boolean If true, it removes its buttons and any additional padding/spacing, and enables the windows interface for 2-way comms. |
ttl required | integer <int32> [ 60 .. 1800 ] Form session time to live in seconds. After it expires, the form can no longer be used. |
cardTtl | integer or null <int32> [ 60 .. 1800 ] The card's time to live in seconds (60-1800 secs). Once expired the card is deleted from the vault. Use the /cardvault/cards/ttl endpoint to extend it. This field is required if walletSave is false. |
preserveFormat | boolean If true, a Luhn passable token is returned consisting of the original first six and last four. |
cardTypes | string or null Card types, comma delimited. Omit for any card. (amex, diners_club_carte_blanche, diners_club_international, jcb, laser, visa_electron, visa, mastercard, discover, dankort, maestro, uatp, mir). |
callbackUrl | string or null <uri> URL the user is redirected to after storing the card. |
parentUrl | string or null <uri> The parent page URL. The store form uses it when embedFormForControl is true to communicate with the parent window. |
pageHeader | string or null [ 3 .. 35 ] characters Configurable page header. |
language | string or null^en|es|fr|zh-Hans$ Default: "en" The language to use on the form. Currently en (English), es (Spanish), fr (French), and zh-Hans (Chinese simplified) are available. |
submitButtonText | string or null [ 0 .. 20 ] characters Default: "Save" Text of the submit button. |
submitButtonColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#0078e7" The hex color of the submit button. |
cancelButtonColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#f08080" The hex color of the cancel button. |
pageColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#ffffff" The hex color of the page background. |
submitButtonTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#ffffff" The hex color of the submit button text. |
cancelButtonTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#000000" The hex color of the cancel button text. |
pageTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#000000" The hex color of the page text. |
x-api-version required | string Default: 1.5 The requested API version |
{
}
The CVV store form allows your app to temporarily store the CVV until authorization. The CVV ttl is set to the card's ttl. If the card has a ttl of -1, the CVV ttl will be set to 1800 seconds. If autoSave is true, the callback will not trigger so the client app will need to verify the cvv ttl for its existence. There are multiple ways to integrate the cvv form. You can use it within a popup, redirect, simple iframe, (previous 3 can use autosave) or iframe where the parent page has control to submit the form. You can find example code for the advanced iframe integration on GitHub.
showTimer required | boolean Show or hide the timer. |
showCancelButton required | boolean Show or hide the cancel button. |
autoSave required | boolean If true, the buttons and header are removed, and cvv will be autosaved after user entry. The callback will not trigger so the client app will need to verify the cvv ttl for its existence. |
embedFormForControl required | boolean If true, it removes its buttons and any additional padding/spacing, and enables the windows interface for 2-way comms. |
callbackUrl | string or null <uri> URL the user is redirected to after storing the card. |
parentUrl | string or null <uri> The parent page URL. The store form uses it when embedFormForControl is true to communicate with the parent window. |
pageHeader | string or null [ 3 .. 35 ] characters Configurable page header. |
language | string or null^en|es|fr|zh-Hans$ Default: "en" The language to use on the form. Currently en (English), es (Spanish), fr (French), and zh-Hans (Chinese simplified) are available. |
submitButtonText | string or null [ 0 .. 20 ] characters Default: "Submit" Text of the submit button. |
submitButtonColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#0078e7" The hex color of the submit button. |
cancelButtonColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#f08080" The hex color of the cancel button. |
pageColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#ffffff" The hex color of the page background. |
submitButtonTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#ffffff" The hex color of the submit button text. |
cancelButtonTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#000000" The hex color of the cancel button text. |
pageTextColor | string or null^#(?:[0-9a-fA-F]{3}){1,2}$ Default: "#000000" The hex color of the page text. |
cardToken required | string [ 13 .. 72 ] characters Card token. |
x-api-version required | string Default: 1.5 The requested API version |
{
}
cultureCode | string or null ISO 639-1 (language) and ISO 3166-1 (country) code. |
x-api-version required | string Default: 1.5 The requested API version |
[- {
- "cultureCode": "en-US",
- "cultureName": "English (United States)",
- "currencySymbol": "$"
}
]
Supports up to 5,000 plaintext objects per request. Plaintext strings must be less than 1000 characters in length. The customIdentifier attribute ties your unencrypted data to the tokens. The customIdentifier is not stored within the vault.
x-api-version required | string Default: 1.5 The requested API version |
Your secrets to vault.
plaintext required | string [ 1 .. 1000 ] characters Secret text to vault. |
customIdentifier | string or null [ 0 .. 100 ] characters Client provided identifier tying the tokens back to some other client data. |
[- {
- "plaintext": "Super secret info",
- "customIdentifier": "123"
}
]
[- {
- "token": "81524853-1a19-4bd6-9ba4-70f54dce30a2da13543e-6b8e-4fa9-9af5-ef8c1e4aae87",
- "customIdentifier": "123"
}
]
The ephemeralKey is a one time use expiring key that allows an external client to obtain the token's secret. To generate one, use the datavault/secrets/ephemeralKey endpoint.
token required | string = 72 characters Reference to the vaulted secret. |
ephemeralKey | string or null <uuid> One time use expiring key. |
x-api-version required | string Default: 1.5 The requested API version |
{- "plaintext": "Super secret info"
}
Exact matches will only be returned and is case sensitive.
x-api-version required | string Default: 1.5 The requested API version |
Text to search within the vault. Exact matches will only be returned and is case sensitive.
plaintext required | string [ 1 .. 1000 ] characters Secret text. |
{- "plaintext": "Super secret info"
}
[- {
- "token": "81524853-1a19-4bd6-9ba4-70f54dce30a2da13543e-6b8e-4fa9-9af5-ef8c1e4aae87"
}
]
The ephemeralKey is a one time use expiring key that allows an external client to obtain the token's secret. The destinationClientId is a valid Enigma Vault clientId of the destination app. The time to live (ttl) is in seconds.
token required | string = 72 characters Reference to the vaulted secret. |
destinationClientId required | string Enigma Vault client granted use of the ephemeralKey. |
ttl required | integer <int32> [ 1 .. 300 ] Time to live in seconds, max of 300. |
x-api-version required | string Default: 1.5 The requested API version |
{- "ephemeralKey": "b99b4ad0-2c32-4db8-bc03-283f420a3549"
}
The url is used to upload (PUT) a file into the vault. The url has an exipration of five minutes. The file size cannot exceed 5 gigabytes. A websocket url is provided so that the status of the file can be tracked in realtime.
contentType required | string [ 3 .. 255 ] characters The MIME type associated with the file. |
fileExtension required | string^[0-9a-zA-Z]{1,10}$ The file extension without the leading . |
x-api-version required | string Default: 1.5 The requested API version |
{- "fileName": "b99b4ad0-2c32-4db8-bc03-283f420a3549.pdf",
- "wsUrl": "wss://filestatus-api.enigmavault.io?fileName=b99b4ad0-2c32-4db8-bc03-283f420a3549.pdf&sessionId=abcdefg"
}
This endpoint has been deprecated because the file status is now provided through a websocket API.
fileName required | string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Tokenized file name. |
x-api-version required | string Default: 1.5 The requested API version |
{- "fileStatus": "string"
}
The url is used to download the file out of the vault. The url has an exipration of five minutes. When aSync is set to true for large files, a websocket API url is returned so that the file status can be monitored in real time. When the file is finished decrypting, the download url is provided through the websocket connection.
fileName required | string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Tokenized file name. |
aSync required | boolean Set to true to decrypt large files; you'll use the websocket API for notifications. |
ephemeralKey | string or null <uuid> One time use expiring key. |
x-api-version required | string Default: 1.5 The requested API version |
{
}
On successful deletion, a 204 response is returned.
fileName required | string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Tokenized file name. |
x-api-version required | string Default: 1.5 The requested API version |
The ephemeralKey is a one time use expiring key that allows an external client to obtain a download url. The destinationClientId is a valid Enigma Vault clientId of the destination app. The time to live (ttl) is in seconds.
fileName required | string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Tokenized file name. |
destinationClientId required | string Enigma Vault client granted use of the ephemeralKey. |
ttl required | integer <int32> [ 1 .. 300 ] Time to live in seconds, max of 300. |
x-api-version required | string Default: 1.5 The requested API version |
{- "ephemeralKey": "b99b4ad0-2c32-4db8-bc03-283f420a3549"
}