JSON specs, format 2.0

This commit is contained in:
Aleksei Akimov
2017-11-26 23:35:25 +01:00
committed by GitHub
parent 5b1f3b68b5
commit 47101489ce
6 changed files with 5433 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,471 @@
{
"swagger" : "2.0",
"info" : {
"version" : "18",
"title" : "Adyen Recurring Service",
"description" : "recurring service operations"
},
"host" : "pal-test.adyen.com",
"basePath" : "/pal/servlet/Recurring/v18",
"schemes" : [
"https"
],
"produces" : [
"application/json"
],
"consumes" : [
"application/json"
],
"x-groups" : [
"General"
],
"paths" : {
"/disable" : {
"post" : {
"summary" : "Disables stored payment details.",
"description" : "Disables stored payment details to stop charging a shopper with this particular recurring detail ID.",
"x-groupName" : "General",
"x-sortIndex" : 2,
"parameters" : [
{
"name" : "request",
"in" : "body",
"schema" : {
"$ref" : "#/definitions/DisableRequest"
}
}
],
"responses" : {
"200" : {
"description" : "OK - the request has succeeded.",
"schema" : {
"$ref" : "#/definitions/DisableResult"
}
},
"400" : {
"description" : "Bad Request - a problem reading or understanding the request."
},
"422" : {
"description" : "Unprocessable Entity - a request validation error."
},
"401" : {
"description" : "Unauthorized - authentication required."
},
"500" : {
"description" : "Internal Server Error - the server could not process the request."
},
"403" : {
"description" : "Forbidden - insufficient permissions to process the request."
}
}
}
},
"/listRecurringDetails" : {
"post" : {
"summary" : "Retrieves stored payment details for a shopper.",
"description" : "Lists the stored payment details for a shopper, if available. The recurring detail ID can be used with a regular authorisation request to charge the shopper. A summary of the payment detail is returned for presentation to the shopper.",
"x-groupName" : "General",
"x-sortIndex" : 1,
"parameters" : [
{
"name" : "request",
"in" : "body",
"schema" : {
"$ref" : "#/definitions/RecurringDetailsRequest"
}
}
],
"responses" : {
"200" : {
"description" : "OK - the request has succeeded.",
"schema" : {
"$ref" : "#/definitions/RecurringDetailsResult"
}
},
"400" : {
"description" : "Bad Request - a problem reading or understanding the request."
},
"422" : {
"description" : "Unprocessable Entity - a request validation error."
},
"401" : {
"description" : "Unauthorized - authentication required."
},
"500" : {
"description" : "Internal Server Error - the server could not process the request."
},
"403" : {
"description" : "Forbidden - insufficient permissions to process the request."
}
}
}
}
},
"definitions" : {
"Address" : {
"properties" : {
"city" : {
"description" : "The city name.",
"type" : "string"
},
"country" : {
"description" : "A valid value is an ISO two-character country code (e.g. 'NL').",
"type" : "string"
},
"houseNumberOrName" : {
"description" : "The house number or name.",
"type" : "string"
},
"postalCode" : {
"description" : "The postal code with a maximum of 5 characters for USA and maximum of 10 characters for any other country.",
"type" : "string"
},
"stateOrProvince" : {
"description" : "For USA or Canada, a valid 2-character abbreviation for the state or province respectively. For other countries any abbreviation with maximum 3 characters for the state or province.",
"type" : "string"
},
"street" : {
"description" : "The street name.\n> Don't append the house number to this field. Instead, pass the house number separately as `houseNumberOrName`.\n",
"type" : "string"
}
},
"required" : [
"street",
"houseNumberOrName",
"city",
"country"
]
},
"BankAccount" : {
"properties" : {
"bankAccountNumber" : {
"description" : "The bank account number (without separators).",
"type" : "string"
},
"bankCity" : {
"description" : "The bank city.",
"type" : "string"
},
"bankLocationId" : {
"description" : "The location id of the bank. The field value is `nil` in most cases.",
"type" : "string"
},
"bankName" : {
"description" : "The name of the bank.",
"type" : "string"
},
"bic" : {
"description" : "The [Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362) (BIC) is the SWIFT address assigned to a bank. The field value is `nil` in most cases.",
"type" : "string"
},
"countryCode" : {
"description" : "Country code where the bank is located.\n\nA valid value is an ISO two-character country code (e.g. 'NL').",
"type" : "string"
},
"iban" : {
"description" : "The [International Bank Account Number](https://en.wikipedia.org/wiki/International_Bank_Account_Number) (IBAN).",
"type" : "string"
},
"ownerName" : {
"description" : "The name of the bank account holder.\nIf you submit a name with non-Latin characters, we automatically replace some of them with corresponding Latin characters to meet the FATF recommendations. For example:\n* χ12 is converted to ch12.\n* üA is converted to euA.\n* Peter Møller is converted to Peter Mller, because banks don't accept 'ø'.\nAfter replacement, the ownerName must have at least three alphanumeric characters (A-Z, a-z, 0-9), and at least one of them must be a valid Latin character (A-Z, a-z). For example:\n* John17 - allowed.\n* J17 - allowed.\n* 171 - not allowed.\n* John-7 - allowed.\n> If provided details don't match the required format, the response returns the error message: 203 'Invalid bank account holder name'.",
"type" : "string"
},
"taxId" : {
"description" : "The bank account holder's tax ID.",
"type" : "string"
}
}
},
"Card" : {
"properties" : {
"billingAddress" : {
"$ref" : "#/definitions/Address"
},
"cvc" : {
"description" : "The [card verification code](https://docs.adyen.com/developers/payment-glossary#cardsecuritycodecvccvvcid) (1-20 characters). Depending on the card brand, it is known also as:\n* CVV2/CVC2 length: 3 digits\n* CID length: 4 digits\n> If you are using [Client-Side Encryption](https://docs.adyen.com/developers/ecommerce-integration), the CVC code is present in the encrypted data. You must never post the card details to the server.\n> This field must be always present in a [one-click payment request](https://docs.adyen.com/developers/features/recurring-payments).\n> When this value is returned in a response, it is always empty because it is not stored.",
"maxLength" : 20,
"minLength" : 1,
"type" : "string"
},
"expiryMonth" : {
"description" : "The card expiry month.\nFormat: 2 digits, zero-padded for single digits. For example:\n* 03 = March\n* 11 = November",
"maxLength" : 2,
"minLength" : 1,
"type" : "string"
},
"expiryYear" : {
"description" : "The card expiry year.\nFormat: 4 digits. For example: 2018",
"maxLength" : 4,
"minLength" : 4,
"type" : "string"
},
"holderName" : {
"description" : "The name of the cardholder, as printed on the card.",
"maxLength" : 50,
"minLength" : 1,
"type" : "string"
},
"issueNumber" : {
"description" : "The issue number of the card (for some UK debit cards only).",
"maxLength" : 2,
"minLength" : 1,
"type" : "string"
},
"number" : {
"description" : "The card number (4-19 characters). Do not use any separators.\nWhen this value is returned in a response, only the last 4 digits of the card number are returned.",
"maxLength" : 19,
"minLength" : 4,
"type" : "string"
},
"startMonth" : {
"description" : "The month component of the start date (for some UK debit cards only).",
"maxLength" : 2,
"minLength" : 1,
"type" : "string"
},
"startYear" : {
"description" : "The year component of the start date (for some UK debit cards only).",
"maxLength" : 4,
"minLength" : 4,
"type" : "string"
}
},
"required" : [
"number",
"expiryMonth",
"expiryYear",
"holderName"
]
},
"DisableRequest" : {
"properties" : {
"contract" : {
"description" : "specify the contract if you only want to disable a specific use",
"type" : "string"
},
"merchantAccount" : {
"description" : "the merchant account which will be used for processing this request",
"type" : "string"
},
"recurringDetailReference" : {
"description" : "the recurring detail you wish to disable",
"type" : "string"
},
"shopperReference" : {
"description" : "a reference you use to uniquely identify the shopper (e.g. user ID or account ID)",
"type" : "string"
}
},
"required" : [
"merchantAccount",
"shopperReference"
]
},
"DisableResult" : {
"properties" : {
"details" : {
"description" : "a list of one or more recurring payment details that were disabled",
"items" : {
"$ref" : "#/definitions/RecurringDetail"
},
"type" : "array"
},
"response" : {
"description" : "Depending on whether a specific recurring detail was in the request, result is either [detail-successfully-disabled] or [all-details-successfully-disabled]",
"type" : "string"
}
}
},
"ELV" : {
"properties" : {
"accountHolderName" : {
"type" : "string"
},
"bankAccountNumber" : {
"type" : "string"
},
"bankLocation" : {
"type" : "string"
},
"bankLocationId" : {
"type" : "string"
},
"bankName" : {
"type" : "string"
}
}
},
"Name" : {
"properties" : {
"firstName" : {
"description" : "A person's first name.",
"type" : "string"
},
"gender" : {
"description" : "A person's gender (can be unknown).",
"enum" : [
"MALE",
"FEMALE",
"UNKNOWN"
],
"maxLength" : 1,
"minLength" : 1,
"type" : "string"
},
"infix" : {
"description" : "A person name's infix, if applicable. Maximum length: 20 characters.",
"type" : "string"
},
"lastName" : {
"description" : "A person's last name.",
"type" : "string"
}
},
"required" : [
"firstName",
"lastName",
"gender"
]
},
"Recurring" : {
"properties" : {
"contract" : {
"description" : "The type of recurring contract to be used.\nPossible values:\n* `ONECLICK` The shopper opts to store their card details for future use. The shopper is present for the subsequent transaction, for cards the security code (CVC/CVV) is required.\n* `RECURRING` Payment details are stored for future use. For cards, the security code (CVC/CVV) is not required for subsequent payments. This is used for shopper not present transactions.\n* `ONECLICK,RECURRING` Payment details are stored for future use. This allows the use of the stored payment details regardless of whether the shopper is on your site or not.",
"enum" : [
"ONECLICK",
"RECURRING",
"PAYOUT"
],
"type" : "string"
},
"recurringDetailName" : {
"description" : "A descriptive name for this detail.",
"type" : "string"
}
}
},
"RecurringDetail" : {
"properties" : {
"acquirer" : {
"type" : "string"
},
"acquirerAccount" : {
"type" : "string"
},
"additionalData" : {
"additionalProperties" : {
"type" : "string"
},
"type" : "object"
},
"alias" : {
"type" : "string"
},
"aliasType" : {
"type" : "string"
},
"bank" : {
"$ref" : "#/definitions/BankAccount"
},
"billingAddress" : {
"$ref" : "#/definitions/Address"
},
"card" : {
"$ref" : "#/definitions/Card"
},
"contractTypes" : {
"items" : {
"type" : "string"
},
"type" : "array"
},
"creationDate" : {
"format" : "date-time",
"type" : "string"
},
"elv" : {
"$ref" : "#/definitions/ELV"
},
"firstPspReference" : {
"type" : "string"
},
"name" : {
"description" : "An optional descriptive name for this recurring detail",
"type" : "string"
},
"paymentMethodVariant" : {
"type" : "string"
},
"recurringDetailReference" : {
"description" : "The reference that uniquely identifies the recurring detail",
"type" : "string"
},
"shopperName" : {
"$ref" : "#/definitions/Name"
},
"socialSecurityNumber" : {
"type" : "string"
},
"tokenDetails" : {
"$ref" : "#/definitions/TokenDetails"
},
"variant" : {
"type" : "string"
}
}
},
"RecurringDetailsRequest" : {
"properties" : {
"merchantAccount" : {
"description" : "the merchant account which will be used for processing this request",
"type" : "string"
},
"recurring" : {
"description" : "the type of recurring contract to be used.",
"$ref" : "#/definitions/Recurring"
},
"shopperReference" : {
"description" : "a reference you use to uniquely identify the shopper (e.g. user ID or account ID)",
"type" : "string"
}
}
},
"RecurringDetailsResult" : {
"properties" : {
"creationDate" : {
"description" : "the creation date when the shopper record was created",
"format" : "date-time",
"type" : "string"
},
"details" : {
"description" : "a list of one or more recurring payment details",
"items" : {
"$ref" : "#/definitions/RecurringDetail"
},
"type" : "array"
},
"lastKnownShopperEmail" : {
"description" : "the most recent email for this shopper (if available)",
"type" : "string"
},
"shopperReference" : {
"description" : "the reference you use to uniquely identify the shopper (e.g. user ID or account ID)",
"type" : "string"
}
}
},
"TokenDetails" : {
"properties" : {
"tokenData" : {
"additionalProperties" : {
"type" : "string"
},
"type" : "object"
},
"tokenDataType" : {
"type" : "string"
}
}
}
}
}

View File

@@ -0,0 +1,478 @@
{
"swagger" : "2.0",
"info" : {
"version" : "25",
"title" : "Adyen Recurring Service",
"description" : "recurring service operations"
},
"host" : "pal-test.adyen.com",
"basePath" : "/pal/servlet/Recurring/v25",
"schemes" : [
"https"
],
"produces" : [
"application/json"
],
"consumes" : [
"application/json"
],
"x-groups" : [
"General"
],
"paths" : {
"/disable" : {
"post" : {
"summary" : "Disables stored payment details.",
"description" : "Disables stored payment details to stop charging a shopper with this particular recurring detail ID.",
"x-groupName" : "General",
"x-sortIndex" : 2,
"parameters" : [
{
"name" : "request",
"in" : "body",
"schema" : {
"$ref" : "#/definitions/DisableRequest"
}
}
],
"responses" : {
"200" : {
"description" : "OK - the request has succeeded.",
"schema" : {
"$ref" : "#/definitions/DisableResult"
}
},
"400" : {
"description" : "Bad Request - a problem reading or understanding the request."
},
"422" : {
"description" : "Unprocessable Entity - a request validation error."
},
"401" : {
"description" : "Unauthorized - authentication required."
},
"500" : {
"description" : "Internal Server Error - the server could not process the request."
},
"403" : {
"description" : "Forbidden - insufficient permissions to process the request."
}
}
}
},
"/listRecurringDetails" : {
"post" : {
"summary" : "Retrieves stored payment details for a shopper.",
"description" : "Lists the stored payment details for a shopper, if available. The recurring detail ID can be used with a regular authorisation request to charge the shopper. A summary of the payment detail is returned for presentation to the shopper.",
"x-groupName" : "General",
"x-sortIndex" : 1,
"parameters" : [
{
"name" : "request",
"in" : "body",
"schema" : {
"$ref" : "#/definitions/RecurringDetailsRequest"
}
}
],
"responses" : {
"200" : {
"description" : "OK - the request has succeeded.",
"schema" : {
"$ref" : "#/definitions/RecurringDetailsResult"
}
},
"400" : {
"description" : "Bad Request - a problem reading or understanding the request."
},
"422" : {
"description" : "Unprocessable Entity - a request validation error."
},
"401" : {
"description" : "Unauthorized - authentication required."
},
"500" : {
"description" : "Internal Server Error - the server could not process the request."
},
"403" : {
"description" : "Forbidden - insufficient permissions to process the request."
}
}
}
}
},
"definitions" : {
"Address" : {
"properties" : {
"city" : {
"description" : "The city name.",
"type" : "string"
},
"country" : {
"description" : "A valid value is an ISO two-character country code (e.g. 'NL').",
"type" : "string"
},
"houseNumberOrName" : {
"description" : "The house number or name.",
"type" : "string"
},
"postalCode" : {
"description" : "The postal code with a maximum of 5 characters for USA and maximum of 10 characters for any other country.",
"type" : "string"
},
"stateOrProvince" : {
"description" : "For USA or Canada, a valid 2-character abbreviation for the state or province respectively. For other countries any abbreviation with maximum 3 characters for the state or province.",
"type" : "string"
},
"street" : {
"description" : "The street name.\n> Don't append the house number to this field. Instead, pass the house number separately as `houseNumberOrName`.\n",
"type" : "string"
}
},
"required" : [
"street",
"houseNumberOrName",
"city",
"country"
]
},
"BankAccount" : {
"properties" : {
"bankAccountNumber" : {
"description" : "The bank account number (without separators).",
"type" : "string"
},
"bankCity" : {
"description" : "The bank city.",
"type" : "string"
},
"bankLocationId" : {
"description" : "The location id of the bank. The field value is `nil` in most cases.",
"type" : "string"
},
"bankName" : {
"description" : "The name of the bank.",
"type" : "string"
},
"bic" : {
"description" : "The [Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362) (BIC) is the SWIFT address assigned to a bank. The field value is `nil` in most cases.",
"type" : "string"
},
"countryCode" : {
"description" : "Country code where the bank is located.\n\nA valid value is an ISO two-character country code (e.g. 'NL').",
"type" : "string"
},
"iban" : {
"description" : "The [International Bank Account Number](https://en.wikipedia.org/wiki/International_Bank_Account_Number) (IBAN).",
"type" : "string"
},
"ownerName" : {
"description" : "The name of the bank account holder.\nIf you submit a name with non-Latin characters, we automatically replace some of them with corresponding Latin characters to meet the FATF recommendations. For example:\n* χ12 is converted to ch12.\n* üA is converted to euA.\n* Peter Møller is converted to Peter Mller, because banks don't accept 'ø'.\nAfter replacement, the ownerName must have at least three alphanumeric characters (A-Z, a-z, 0-9), and at least one of them must be a valid Latin character (A-Z, a-z). For example:\n* John17 - allowed.\n* J17 - allowed.\n* 171 - not allowed.\n* John-7 - allowed.\n> If provided details don't match the required format, the response returns the error message: 203 'Invalid bank account holder name'.",
"type" : "string"
},
"taxId" : {
"description" : "The bank account holder's tax ID.",
"type" : "string"
}
}
},
"Card" : {
"properties" : {
"cvc" : {
"description" : "The [card verification code](https://docs.adyen.com/developers/payment-glossary#cardsecuritycodecvccvvcid) (1-20 characters). Depending on the card brand, it is known also as:\n* CVV2/CVC2 length: 3 digits\n* CID length: 4 digits\n> If you are using [Client-Side Encryption](https://docs.adyen.com/developers/ecommerce-integration), the CVC code is present in the encrypted data. You must never post the card details to the server.\n> This field must be always present in a [one-click payment request](https://docs.adyen.com/developers/features/recurring-payments).\n> When this value is returned in a response, it is always empty because it is not stored.",
"maxLength" : 20,
"minLength" : 1,
"type" : "string"
},
"expiryMonth" : {
"description" : "The card expiry month.\nFormat: 2 digits, zero-padded for single digits. For example:\n* 03 = March\n* 11 = November",
"maxLength" : 2,
"minLength" : 1,
"type" : "string"
},
"expiryYear" : {
"description" : "The card expiry year.\nFormat: 4 digits. For example: 2018",
"maxLength" : 4,
"minLength" : 4,
"type" : "string"
},
"holderName" : {
"description" : "The name of the cardholder, as printed on the card.",
"maxLength" : 50,
"minLength" : 1,
"type" : "string"
},
"issueNumber" : {
"description" : "The issue number of the card (for some UK debit cards only).",
"maxLength" : 2,
"minLength" : 1,
"type" : "string"
},
"number" : {
"description" : "The card number (4-19 characters). Do not use any separators.\nWhen this value is returned in a response, only the last 4 digits of the card number are returned.",
"maxLength" : 19,
"minLength" : 4,
"type" : "string"
},
"startMonth" : {
"description" : "The month component of the start date (for some UK debit cards only).",
"maxLength" : 2,
"minLength" : 1,
"type" : "string"
},
"startYear" : {
"description" : "The year component of the start date (for some UK debit cards only).",
"maxLength" : 4,
"minLength" : 4,
"type" : "string"
}
},
"required" : [
"number",
"expiryMonth",
"expiryYear",
"holderName"
]
},
"DisableRequest" : {
"properties" : {
"contract" : {
"description" : "specify the contract if you only want to disable a specific use",
"type" : "string"
},
"merchantAccount" : {
"description" : "the merchant account which will be used for processing this request",
"type" : "string"
},
"recurringDetailReference" : {
"description" : "the recurring detail you wish to disable",
"type" : "string"
},
"shopperReference" : {
"description" : "a reference you use to uniquely identify the shopper (e.g. user ID or account ID)",
"type" : "string"
}
},
"required" : [
"merchantAccount",
"shopperReference"
]
},
"DisableResult" : {
"properties" : {
"details" : {
"description" : "a list of one or more recurring payment details that were disabled",
"items" : {
"$ref" : "#/definitions/RecurringDetail"
},
"type" : "array"
},
"response" : {
"description" : "Depending on whether a specific recurring detail was in the request, result is either [detail-successfully-disabled] or [all-details-successfully-disabled]",
"type" : "string"
}
}
},
"ELV" : {
"properties" : {
"accountHolderName" : {
"type" : "string"
},
"bankAccountNumber" : {
"type" : "string"
},
"bankLocation" : {
"type" : "string"
},
"bankLocationId" : {
"type" : "string"
},
"bankName" : {
"type" : "string"
}
}
},
"Name" : {
"properties" : {
"firstName" : {
"description" : "A person's first name.",
"type" : "string"
},
"gender" : {
"description" : "A person's gender (can be unknown).",
"enum" : [
"MALE",
"FEMALE",
"UNKNOWN"
],
"maxLength" : 1,
"minLength" : 1,
"type" : "string"
},
"infix" : {
"description" : "A person name's infix, if applicable. Maximum length: 20 characters.",
"type" : "string"
},
"lastName" : {
"description" : "A person's last name.",
"type" : "string"
}
},
"required" : [
"firstName",
"lastName",
"gender"
]
},
"Recurring" : {
"properties" : {
"contract" : {
"description" : "The type of recurring contract to be used.\nPossible values:\n* `ONECLICK` The shopper opts to store their card details for future use. The shopper is present for the subsequent transaction, for cards the security code (CVC/CVV) is required.\n* `RECURRING` Payment details are stored for future use. For cards, the security code (CVC/CVV) is not required for subsequent payments. This is used for shopper not present transactions.\n* `ONECLICK,RECURRING` Payment details are stored for future use. This allows the use of the stored payment details regardless of whether the shopper is on your site or not.",
"enum" : [
"ONECLICK",
"RECURRING",
"PAYOUT"
],
"type" : "string"
},
"recurringDetailName" : {
"description" : "A descriptive name for this detail.",
"type" : "string"
},
"tokenService" : {
"description" : "The name of the token service.",
"enum" : [
"VISATOKENSERVICE"
],
"type" : "string"
}
}
},
"RecurringDetail" : {
"properties" : {
"acquirer" : {
"type" : "string"
},
"acquirerAccount" : {
"type" : "string"
},
"additionalData" : {
"additionalProperties" : {
"type" : "string"
},
"type" : "object"
},
"alias" : {
"type" : "string"
},
"aliasType" : {
"type" : "string"
},
"bank" : {
"$ref" : "#/definitions/BankAccount"
},
"billingAddress" : {
"$ref" : "#/definitions/Address"
},
"card" : {
"$ref" : "#/definitions/Card"
},
"contractTypes" : {
"items" : {
"type" : "string"
},
"type" : "array"
},
"creationDate" : {
"format" : "date-time",
"type" : "string"
},
"elv" : {
"$ref" : "#/definitions/ELV"
},
"firstPspReference" : {
"type" : "string"
},
"name" : {
"description" : "An optional descriptive name for this recurring detail",
"type" : "string"
},
"paymentMethodVariant" : {
"type" : "string"
},
"recurringDetailReference" : {
"description" : "The reference that uniquely identifies the recurring detail",
"type" : "string"
},
"shopperName" : {
"$ref" : "#/definitions/Name"
},
"socialSecurityNumber" : {
"type" : "string"
},
"tokenDetails" : {
"$ref" : "#/definitions/TokenDetails"
},
"variant" : {
"type" : "string"
}
}
},
"RecurringDetailsRequest" : {
"properties" : {
"merchantAccount" : {
"description" : "the merchant account which will be used for processing this request",
"type" : "string"
},
"recurring" : {
"description" : "the type of recurring contract to be used.",
"$ref" : "#/definitions/Recurring"
},
"shopperReference" : {
"description" : "a reference you use to uniquely identify the shopper (e.g. user ID or account ID)",
"type" : "string"
}
}
},
"RecurringDetailsResult" : {
"properties" : {
"creationDate" : {
"description" : "the creation date when the shopper record was created",
"format" : "date-time",
"type" : "string"
},
"details" : {
"description" : "a list of one or more recurring payment details",
"items" : {
"$ref" : "#/definitions/RecurringDetail"
},
"type" : "array"
},
"invalidOneclickContracts" : {
"type" : "boolean"
},
"lastKnownShopperEmail" : {
"description" : "the most recent email for this shopper (if available)",
"type" : "string"
},
"shopperReference" : {
"description" : "the reference you use to uniquely identify the shopper (e.g. user ID or account ID)",
"type" : "string"
}
}
},
"TokenDetails" : {
"properties" : {
"tokenData" : {
"additionalProperties" : {
"type" : "string"
},
"type" : "object"
},
"tokenDataType" : {
"type" : "string"
}
}
}
}
}