{"models":{"VoidRequest":{"description":"Void an old transaction / request.","id":"VoidRequest","required":["requestRef"],"properties":{"customRequestDate":{"description":"Custom request date, used to set an alternative processing date on this checkout request. Must be turned on via brand setting. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"requestRef":{"description":"The requestRef of the transaction to void. Note: if this references a two-stage locking checkout, it should always reference the checkout complete API call. If the checkout complete call overwrote the payment methods that were used, those will be considered for voiding instead of the ones specified during the checkout setup. Note: if this references a checkout that contained payment methods that redeemed balance, or referenced updateBalance calls as payment methods, those payment methods will be voided as well. ","type":"string"},"usedCouponResets":{"defaultValue":false,"description":"When the original transaction was a checkout call, this flag indicates if coupons used by the original checkout should be reset. When this is set to true, coupons will be reset and will become available to be used again.Set to false to leave the coupons as used. Defaults to false. (requires JSON v2)","type":"boolean"},"failIfCouponsUsed":{"defaultValue":false,"description":"If disabledIssuedCoupons is true and the original checkout issued coupons that had since been used, make the request fail (because it can\u0027t disable the coupons anymore). This flag defaults to false.","type":"boolean"},"childCardNumber":{"description":"The child card number that was used in the original request. If a child card number was used in the original request, the child card number specified in this request has to match","type":"string"},"cardNumber":{"description":"The card number that was used in the original request, this must be specified if the original call was non-anonymous. Note: anonymous request voiding requires JSON v2 access","type":"string"},"disableIssuedCoupons":{"defaultValue":true,"description":"When the original transaction was a checkout call, indicates whether coupons that were issued as part of the original checkout should be disabled. Defaults to true (requires JSON v2)","type":"boolean"}}},"Customer":{"description":"Represents a Customer object coming back from the API. For restrictions on each of the fields, see the CustomerUpdates object.","id":"Customer","required":[],"properties":{"birthday":{"description":"Format is yyyy-MM-dd, e.g. 2015-01-01","type":"string"},"lastName":{"type":"string"},"country":{"description":"ISO 3166-1 Country code, 2 characters","type":"string"},"mobileCarrier":{"description":"Display name for the mobile carrier for this customer. This field will not always be populated.","type":"string"},"gender":{"type":"string","enum":["F","M"]},"city":{"type":"string"},"latitude":{"format":"double","description":"Latitude in degrees, value from 90 to -90. Positive values are north of the equator, negative values are south of the equator. Precision is 6 decimals.","type":"number"},"profileType":{"description":"Vertical for this customer","type":"string"},"phonePref":{"description":"Opt (I)n, Opt (O)ut for text messages","type":"string","enum":["I","O"]},"state":{"type":"string"},"mailPref":{"description":"Opt (I)n, Opt (O)ut for post mail","type":"string","enum":["I","O"]},"isMobile":{"description":"(Y)es, (N)o or empty","type":"string","enum":["Y","N"]},"email":{"type":"string"},"longitude":{"format":"double","description":"Longitude in degrees, value from 180 to -180. Positive values are east of the prime meridian, negative values are west of the prime meridian. Precision is 6 decimals.","type":"number"},"address2":{"description":"Second address line","type":"string"},"address1":{"description":"First address line","type":"string"},"firstName":{"type":"string"},"flv":{"format":"int32","description":"FLV or Future Lifetime Value","type":"integer"},"mobilePhone":{"description":"Mobile phone number in E164 format.","type":"string"},"phone":{"description":"Phone number in E164 format.","type":"string"},"affiliatedLocationObjects":{"description":"Affiliated Location Objects, will be limited to the first 20 affiliated locations in case the card has more.","type":"array","items":{"$ref":"LocationData"}},"affiliatedLocations":{"description":"Deprecated. External IDs of affiliated locations. Do not use this property, but instead get it from affiliatedLocationObjects.","type":"array","items":{"type":"string"}},"middleName":{"type":"string"},"postal":{"type":"string"},"emailPref":{"description":"Opt (I)n, Opt (O)ut for email","type":"string","enum":["I","O"]},"anniversary":{"description":"Format is yyyy-MM-dd, e.g. 2015-01-01","type":"string"}}},"ListRequestsRequest":{"description":"Request for listRequests, can list all requests that match a certain externalTransactionId.","id":"ListRequestsRequest","required":["externalTransactionId"],"properties":{"externalTransactionId":{"description":"External transaction ID to search for. Will return anywhere from 0 to many matching requestRefs, depending on how many requests used this externalTransactionId.","type":"string"}}},"CardEntryMethod":{"description":"Card entry method, may be provided for receipt functionality.","id":"CardEntryMethod","required":[],"properties":{}},"CardSubscription":{"description":"Compact representation of a subscription on a card.","id":"CardSubscription","required":[],"properties":{"tier":{"description":"The subscription\u0027s tier.","type":"string"},"sourceSystem":{"description":"Source system of the subscription.","type":"string"},"name":{"description":"Name of the subscription.","type":"string"},"systemType":{"description":"System type of the subscription.","type":"string"},"subscriptionStatus":{"description":"The current status of the subscription.","type":"string","enum":["Active","Inactive"]},"assignmentStartDate":{"description":"Date the subscription starts. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"externalId":{"description":"External id, which can overlap universities.","type":"string"},"subType":{"description":"Sub type of the subscription.","type":"string"},"assignmentDate":{"description":"Date the subscription was assigned to the card. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"assignmentEndDate":{"description":"Date the subscription ends. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"subscriptionId":{"description":"Subscription id, unique for each subscription.","type":"string"}}},"OfferActivityResponse":{"description":"Response from OfferActivity requests.","id":"OfferActivityResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"offerRedeemedActivity":{"description":"A list of all offer activity for tracking redeemed offers. (requires JSON v2)","type":"array","items":{"$ref":"OfferActivityRow"}},"offerSentActivity":{"description":"A list of all offer activity for tracking sent offers. (requires JSON v2)","type":"array","items":{"$ref":"OfferActivityRow"}},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"clickedDiscountNrs":{"description":"A set of all discount nrs that have been clicked. (requires JSON v2)","type":"array","items":{"format":"int64","type":"integer"}}}},"HistoricCheckout":{"description":"Compact representation of a historic checkout for a card.","id":"HistoricCheckout","required":[],"properties":{"externalReference":{"description":"External reference to the original request.","type":"string"},"isReturn":{"defaultValue":false,"description":"Indication if this was a return or a checkout. Will be true for returns and false for regular checkouts.","type":"boolean"},"checkoutDate":{"description":"Date when this checkout was executed. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"mutations":{"description":"Balance mutations that happened during this historic checkout. Will not include discounts, but only real balance mutations. Will not contain balance mutations from before this feature was released (mid 2016). (requires JSON v2)","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"transactionReference":{"description":"Reference to the original request. For most brand configurations, this will be the requestRef.","type":"string"},"locationId":{"description":"External ID of the location that processed this checkout.","type":"string"},"checkoutTotal":{"format":"double","description":"Checkout total, in the native currency of the processing location. In case of returns, this will be a negative number.","type":"number"},"merchantName":{"description":"Optional, the merchant name that was associated with this transaction, in case there was no location data available. (requires JSON v2)","type":"string"}}},"SurveyResponseRegistration":{"description":"Registration of a survey response, or survey response update.","id":"SurveyResponseRegistration","required":["surveyId","instanceId","fieldResponses"],"properties":{"surveyId":{"description":"The survey ID for the survey for which a response should be recorded.","type":"string"},"sentDate":{"description":"The date when the user first received a link to complete this survey. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"instanceId":{"description":"The instance ID of this survey response registration.","type":"string"},"fieldResponses":{"description":"The fields to set for this survey response. If this card already has an existing response to the same survey, you can specify field responses to update or remove in this list.","type":"array","items":{"$ref":"SurveyFieldRegistration"}},"removeRegistration":{"description":"Optional, set this to true to remove the survey response registration for the specified survey + instance ID for this card.","type":"boolean"},"responseChannel":{"description":"Optional, the channel type the user responded to when completing the survey.","type":"string","enum":["phone","direct","email","push"]}}},"EventTypeDefinition":{"description":"Represents an event type definition.","id":"EventTypeDefinition","required":["eventType","categoryId"],"properties":{"sentiment":{"format":"int32","description":"The sentiment of this event definition - 0 for neutral, 1 for positive, -1 for negative.","type":"integer"},"groupType":{"description":"the type for this event definition. Can be ECOM, EMAIL, SMS, DIRECT MAIL, IN STORE, FEEDBACK, SOCIAL, MILESTONE, OTHER","type":"string"},"specificId":{"description":"Lower level ID for this event\u0027s event type.","type":"string"},"name":{"description":"Descriptive name of this event type.","type":"string"},"modifiedDate":{"description":"The date this event definition was last modified (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"active":{"description":"Whether or not this event definition is active or archived.","type":"boolean"},"eventType":{"description":"Event type. E.g. for custom events, this will be CUSTOM.","type":"string"},"categoryId":{"description":"High level ID for this event\u0027s event type.","type":"string"},"createDate":{"description":"The date this event definition was created (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"CheckoutProductProperty":{"description":"Representation of a single property of a single line item in a checkout.","id":"CheckoutProductProperty","required":["property"],"properties":{"dateValue":{"description":"If the property is a date, this is the date value that goes with the specified property. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"property":{"description":"Property key, this is the internal name from the custom SKU property model. Specify one of the different values depending on the property\u0027s data type.","type":"string"},"choiceValue":{"description":"If the property is a choice, this is the string value of the choice that goes with the specified property.","type":"string"},"longValue":{"format":"int64","description":"If the property is a number, this is the numerical value that goes with the specified property.","type":"integer"}}},"CommunicationActivityRequest":{"description":"Used to place CommunicationActivity requests, which can be used to get a list of historic communication activity for a specific card / customer.","id":"CommunicationActivityRequest","required":["cardNumber"],"properties":{"sortMostRecentFirst":{"defaultValue":true,"description":"Optional, defaults to true. True means most recent results will be sent first. False means the oldest results will come first. (requires JSON v2)","type":"boolean"},"offset":{"defaultValue":0.0,"format":"int32","description":"Optional, defaults to 0, the amount of matching communication activity rows to skip before returning results. Value should not be smaller than 0. Value should not be larger than 1000. (requires JSON v2)","type":"integer"},"maxResults":{"defaultValue":20.0,"format":"int32","description":"Optional, defaults to 20, maximum amount of results to obtain in one request. Value should not be smaller than 1. Value should not be larger than 100. (requires JSON v2)","type":"integer"},"cardNumber":{"description":"Card number to request the communication activity history for.","type":"string"}}},"TriggerCustomCampaignRequest":{"description":"Request to place a triggerCustomCampaign request.","id":"TriggerCustomCampaignRequest","required":["cardNumber"],"properties":{"customKeyValues":{"description":"Custom key-value pairs that can optionally be used for custom campaign triggering. This entire array is optional.","type":"array","items":{"$ref":"CheckoutKeyValue"}},"cardNumber":{"description":"Card number for which to trigger a campaign rule.","type":"string"}}},"CardMetaData":{"description":"Meta data for a single card object","id":"CardMetaData","required":["programType","programName"],"properties":{"cardCurrency":{"description":"Base currency (currency code) assigned to the card","type":"string"},"programType":{"description":"Program type of the program to which this card\u0027s card set belongs.","type":"string"},"programName":{"description":"Name of the program to which this card\u0027s card set belongs.","type":"string"},"owningLocationName":{"description":"Name of the owning location that\u0027s associated to this card.","type":"string"},"baseCurrency":{"description":"Base currency (currency code) of the program to which this card\u0027s card set belongs.","type":"string"}}},"CheckoutLookupResponse":{"description":"Response from CheckoutLookup request.","id":"CheckoutLookupResponse","required":["requestRef","success"],"properties":{"revenueCenter":{"description":"The revenue center assigned to the checkout. These are pre-configured for each brand. (requires JSON v2)","type":"string"},"completingCheckoutRequestRef":{"description":"The request ref for the checkout complete call if a two stage checkout setup transaction.","type":"string"},"checkoutTotalBeforeDiscount":{"format":"double","description":"Checkout total before any discounts are applied, based on checkoutTotal in the original request, otherwise based on the sum of SKU prices.","type":"number"},"skus":{"description":"All SKUs that were sent in as part of the original checkout.","type":"array","items":{"$ref":"CheckoutProduct"}},"setupCheckoutRequestRef":{"description":"The request ref for the checkout setup call if a two stage checkout complete transaction.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"terminalId":{"description":"Terminal ID (external) at which this checkout was executed. This field may not be included for older checkouts and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"checkoutTaxTotal":{"format":"double","description":"Total tax applied to the checkout. (requires JSON v2)","type":"number"},"locationId":{"description":"Location ID (external) at which this checkout was executed. This field may not be included for older checkouts and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"paymentMethods":{"description":"The payment methods that were used in this checkout. If this was a two-stage locking checkout complete call that specified payment methods in the checkout complete stage, those will be shown instead of the ones from the checkout setup call. (requires JSON v2)","type":"array","items":{"$ref":"PaymentMethod"}},"externalTransactionId":{"description":"The external transaction ID that was sent in for this transaction, if one was specified in the source request. This field will only be returned for requests placed with the new JSON API. If the field does not come back while you were expecting this, please contact Clutch support. (requires JSON v2)","type":"string"},"referringCardNumber":{"description":"The referring customer\u0027s card number. (requires JSON v2)","type":"string"},"checkoutExecuted":{"description":"Flag to determine if checkout call was executed.","type":"boolean"},"checkoutShippingTotal":{"format":"double","description":"Total shipping amount paid with the checkout. (requires JSON v2)","type":"number"},"childCardNumber":{"description":"Child card number that was used in this request. Field will not be present for anonymous checkouts or checkouts that didn\u0027t specify a child card number.","type":"string"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"employeeId":{"description":"Employee ID (external) that was sent in for this transaction. This field may not be included for older checkouts and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"isVoided":{"defaultValue":false,"description":"Whether this checkout has been voided already. This field may not be included for older checkouts and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"boolean"},"customKeyValues":{"description":"Custom key-value pairs that were optionally sent in for custom campaign triggering. This entire array is optional. This field will only be returned for requests placed with the new JSON API. If the field does not come back while you were expecting this, please contact Clutch support. (requires JSON v2)","type":"array","items":{"$ref":"CheckoutKeyValue"}},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"balanceMutations":{"description":"All balance mutations that were caused by campaigns that were active during this checkout. Will contain hypothetical balance updates in case of a checkout setup request.","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"checkoutDate":{"description":"Date/time when this checkout was executed. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"orderMode":{"description":"The name of the order mode assigned to the checkout. If no order mode is sent in at the checkout level, this will return the order mode . (requires JSON v2)","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"totalDiscount":{"format":"double","description":"Total discount given based on campaigns.","type":"number"},"cardNumber":{"description":"Card number of the loyalty card that was used in this request. Field will not be present for anonymous checkouts.","type":"string"}}},"ListValueTypesResponse":{"description":"Resposne from ListValueType requests.","id":"ListValueTypesResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"valueTypes":{"description":"All available value types.","type":"array","items":{"$ref":"ValueTypeResult"}}}},"GeneratePassLinkRequest":{"description":"Request to obtain a link code for a Wallet Pass.","id":"GeneratePassLinkRequest","required":["cardNumber"],"properties":{"cardNumber":{"description":"Card number to request the Wallet Pass link code for.","type":"string"}}},"CardSegment":{"description":"Describe a segment that a card is part of.","id":"CardSegment","required":["id","name"],"properties":{"name":{"description":"Name of the segment.","type":"string"},"description":{"description":"Short description of the segment.","type":"string"},"id":{"description":"ID of the segment.","type":"string"}}},"ChannelSubscriptionResponse":{"description":"Response from ChannelSubscription request.","id":"ChannelSubscriptionResponse","required":["requestRef","success"],"properties":{"customKeyValues":{"description":"Optional list of custom brand values.","type":"array","items":{"$ref":"ChannelKeyValuesType"}},"globalOptIn":{"defaultValue":false,"description":"Global subscription status.","type":"boolean"},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"transactionalOptIn":{"defaultValue":false,"description":"Boolean status for transactional channel communications.","type":"boolean"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"doubleOptIn":{"defaultValue":false,"description":"Boolean status for if double opt in is or was required.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"channel":{"description":"Channel to manage subscription for.","type":"string","enum":["phone","email"]},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"channelUser":{"description":"Email address or phone number.","type":"string"},"doubleOptInConfirmed":{"defaultValue":false,"description":"Boolean status for if double opt in has been confirmed.","type":"boolean"},"categories":{"description":"Optional subscription status of sub categories.","type":"array","items":{"$ref":"ChannelCategoryType"}}}},"CampaignBalanceMutation":{"description":"Represents a balance mutation or discount that occurred during the request. If this balance mutation was caused by a campaign, this object will also indicate which campaign was responsible. If this object represents a discount and the discount is related to a specific SKU / product, the SKU to which this discount applies will be specified as well.","id":"CampaignBalanceMutation","required":["isDiscount","amount"],"properties":{"campaignUUID":{"description":"UUID of the campaign responsible for this balance mutation.","type":"string"},"amount":{"format":"double","description":"Amount that is relevant to this mutation. Discounts always have a positive amount, issuances also have a positive amount and redemptions have a negative amount.","type":"number"},"campaignRevisionUUID":{"description":"UUID of the campaign revision of the campaign that was responsible for this balance mutation.","type":"string"},"skuUnitPrice":{"format":"double","description":"If the related SKU is set, this field indicates the original (before-discount) unit price of the SKU purchase to which the discount applies.","type":"number"},"skuAmount":{"format":"double","description":"If the related SKU is set, this field indicates how many units of this SKU this discount applies to.","type":"number"},"childCard":{"description":"Flag, will be true if this mutation happened against a child card. Null or false indicates the mutation happened against the parent card","type":"boolean"},"skuUnitDiscount":{"format":"double","description":"If the related SKU is set, this field indicates how much the discount per unit of this SKU is.","type":"number"},"campaignResultUUID":{"description":"UUID of the campaign result object responsible for this balance mutation if there was one.","type":"string"},"isDiscount":{"defaultValue":false,"description":"Whether this mutation is a discount or a real balance update.","type":"boolean"},"balanceExpiration":{"format":"int64","description":"Expiration of the issued balance, the number of milliseconds since January 1, 1970, 00:00:00 GMT. Only relevant for issuances. No balanceExpiration means the issued balance does not have any custom expiration rules set on it.","type":"integer"},"campaignConditionUUID":{"description":"UUID of the campaign condition object responsible for this balance mutation if there was one. Only relevant for conditions that explicitly take away balance, such as the balance condition.","type":"string"},"balanceActiveDate":{"format":"int64","description":"Active date of the issued balance, the number of milliseconds since January 1, 1970, 00:00:00 GMT. Only relevant for issuances. No balanceActiveDate means the issued balance is available immediately.","type":"integer"},"balanceType":{"description":"The type of balance that this amount represents.","type":"string","enum":["Points","Currency","Punches","Custom"]},"balanceCode":{"description":"If the balance type is Currency or Custom, this field indicates the currency code or custom code of the balance.","type":"string"},"subtrackDisplayName":{"description":"In case of balance mutations that relate to a specific punch subtrack, this will be the display name of that track","type":"string"},"sku":{"description":"If this mutation is a discount, this field will be set if the discount applies to a particular SKU.","type":"string"},"skuSequenceId":{"format":"int32","description":"If the related SKU is set, this field indicates the original sequence number of the product that was discounted.","type":"integer"},"offerIndex":{"format":"int64","description":"In case of discounts that were triggered by personalized offers, this will be the offer index of the offer that triggered this discount","type":"integer"},"campaignRuleUUID":{"description":"UUID of the campaign rule responsible for this balance mutation. Will not be present in case of campaign-wide conditions.","type":"string"},"campaignDescriptiveName":{"description":"Descriptive name of the campaign result or condition that triggered this mutation. (requires JSON v2)","type":"string"}}},"ReturnRequest":{"description":"Used to place returnMerchandise requests, which can be used to notify the Clutch API of returned merchandise, being sales with negative totals.","id":"ReturnRequest","required":[],"properties":{"customRequestDate":{"description":"Custom request date, used to set an alternative processing date on this returnMerchandise request. Must be turned on via brand setting. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"checkoutRequestRef":{"description":"RequestRef of the original request. Should be set if this return is linked to a known checkout. If this field is specified, it is required to also specify the cardNumber used in the original checkout. In case the original checkout used two-stage locking, use the requestRef of the checkout complete API call.","type":"string"},"failIfCouponsUsed":{"defaultValue":true,"description":"If disabledIssuedCoupons is true (default value) and the original checkout issued coupons that had since been used, make the request fail (because it can\u0027t disable the coupons anymore). This flag defaults to true.","type":"boolean"},"reversePayments":{"defaultValue":false,"description":"Whether payments should be reversed. Will log reverse for all payments and those flagged as redeemBalance \u003d true or with an updateBalanceRequestRef will be reversed fully. Note: this flag should not be set to true more than once for a given source checkout, to prevent over-returning. (requires JSON v2)","type":"boolean"},"childCardNumber":{"description":"The child card number that was used in the original request. If a child card number was used in the original request, the child card number specified in this request has to match. If this field is specified, the cardNumber field also has to be specified.","type":"string"},"additionalReturnAmount":{"format":"double","description":"Additional amount of the original checkout total that is being returned, excluding the part of the checkout that is explained by SKUs with a unitPrice and amountPurchased specified in the returnProducts property already.","type":"number"},"removeCustomEvents":{"defaultValue":false,"description":"Whether any custom events that were created by logEvent campaign results on the original checkout should be removed by this return, if they had not been removed by a potential previous return for the same checkout. Defaults to false.","type":"boolean"},"merchantName":{"description":"Optional, the merchant name to associate with this transaction, in case there is no location data available. Value should not be longer than 64 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"returnedProducts":{"description":"Products that are returned. Only required fields on each CheckoutProduct object are sku and amountPurchased. For amountPurchased, specify the amount that is returned. In addition, unitPrice can be specified.","type":"array","items":{"$ref":"CheckoutProduct"}},"usedCouponResets":{"defaultValue":"OnlyOnFullReturn","description":"Flag to indicate if and when to reset coupons used by the original checkout. If this is set to always, coupons will always be reset. If this is set to never, they will never be reset. Set to OnlyOnFullReturn if the used coupons should be reset only if this return (combined with any possible previous returns for the same checkout) totals the entire sum of the original checkout. Defaults to OnlyOfFullReturn. (requires JSON v2)","type":"string","enum":["OnlyOnFullReturn","Never","Always"]},"failIfOverReturn":{"defaultValue":true,"description":"Whether requests should fail if they return more products than specified on the original checkout, combined from this return call and any other possible previous returns for the same checkout. If this is set to true (or not specified), and this return tries to return too many products, the request will fail. This flag defaults to true. This flag will be ignored if no checkoutRequestRef has been specified, or if the referenced checkout was anonymous. Will compare the total value of returned products plus additionalReturnAmount compared to the original checkout and also verify the quantities sent in per SKU. (requires JSON v2)","type":"boolean"},"simulateOnly":{"defaultValue":false,"description":"Flag to indicate if this is a real return or just a simulation. If it\u0027s just a simulation, nothing is actually executed, but the request is only simulated and the results are returned.","type":"boolean"},"cardNumber":{"description":"Card number of loyalty card used in this transaction. Leave field out for anonymous returns. This field is required if a checkoutRequestRef is specified.","type":"string"},"disableIssuedCoupons":{"defaultValue":true,"description":"Whether coupons that were issued as part of the original checkout should be disabled. Defaults to true","type":"boolean"}}},"CardStatistics":{"description":"Representation of card purchase statistics.","id":"CardStatistics","required":[],"properties":{"mostSpentLocationId":{"description":"External location id of the location with the most amount spent","type":"string"},"lastShoppedLocationId":{"description":"External location id of the last location customer shopped at with the card","type":"string"},"mostShoppedLocationId":{"description":"External location id of the location with the most checkouts","type":"string"}}},"RequestLookupResponse":{"description":"Response from RequestLookup request.","id":"RequestLookupResponse","required":["requestRef","success"],"properties":{"note":{"description":"Note that was sent in with the original request. (requires JSON v2)","type":"string"},"checkoutTotalBeforeDiscount":{"format":"double","description":"If this call was a checkout call, the checkout total before any discounts are applied, based on checkoutTotal in request, or sum of SKU prices. (requires JSON v2)","type":"number"},"childCardNumber":{"description":"Child card number used in this request, will not be present for anonymous requests or requests that didn\u0027t include a child card number. (requires JSON v2)","type":"string"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"vtUserId":{"description":"User ID header that was sent in. This field may not be included for older requests and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"employeeId":{"description":"Employee header that was sent in. This field may not be included for older requests and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"terminalId":{"description":"Terminal header that was sent in. This field may not be included for older requests and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"isVoided":{"defaultValue":false,"description":"Whether this request has been voided already. This field may not be included for older requests and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"boolean"},"holdBalanceMutations":{"description":"Optional, will only be populated if the \u0027splitHoldMutations\u0027 request param is set to true. Contains all hold related balance mutations and/or discounts that were executed in the requested API call. Will not contain hypothetical balance updates in case of a checkout setup request. Will contain references to campaigns if the mutations were triggered by campaigns. NOTE: This field does not exist for transactions placed before July 2016. (requires JSON v2)","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"callType":{"description":"Optional, this value can optionally be present for transactions coming from the new JSON API. It will only be set if the API call was one of the predefined types. If it is not being returned and you would like to access this field, please contact Clutch. (requires JSON v2)","type":"string","enum":["UPDATE_BALANCE","VOID_CHECKOUT","SEARCH","CHECKOUT_SETUP","UPDATE_ACCOUNT","REPORTING","CHECKOUT_COMPLETE","CHECKOUT_CANCEL","ALLOCATE","TRANSFER","TRIGGER_ONLY","RETURN_MERCHANDISE","VOID","ACCOUNT_HISTORY"]},"detailedHoldMutations":{"description":"Optional, will only be returned if showDetailedMutations was set to true. This field contains detailed balance mutation information, such as the mutation type. The amount of mutations can vary from the regular balanceMutations structure, as that might have rolled up sub-mutations. This field only include hold mutations. (requires JSON v2)","type":"array","items":{"$ref":"HistoricTransactionBalanceUpdate"}},"requestErrorCode":{"format":"int32","description":"The error code that was sent back for this request, if there was one. This field will not be specified if the specified request was successful. (requires JSON v2)","type":"integer"},"detailedNonHoldMutations":{"description":"Similar to detailedHoldMutations, except only containing non-hold mutations. (requires JSON v2)","type":"array","items":{"$ref":"HistoricTransactionBalanceUpdate"}},"balanceMutations":{"description":"All balance mutations and/or discounts that were executed in the requested API call. Will not contain hypothetical balance updates in case of a checkout setup request. Will contain references to campaigns if the mutations were triggered by campaigns. NOTE: This field does not exist for transactions placed before July 2016. (requires JSON v2)","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"locationId":{"description":"Location header that was sent in. This field may not be included for older requests and will require the latest version of the JSON API to be active. (requires JSON v2)","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"requestDate":{"description":"Date/time when this request was executed. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"totalDiscount":{"format":"double","description":"If this call was a checkout call, the total discount given based on campaigns. (requires JSON v2)","type":"number"},"externalTransactionId":{"description":"External transaction ID as it was sent in with the original request. (requires JSON v2)","type":"string"},"cardNumber":{"description":"Card number used in this request, will not be present for anonymous requests. (requires JSON v2)","type":"string"}}},"AllocateCouponRequest":{"description":"Used to place AllocateCoupon requests, which can be used to allocate a randomly selected coupon from a coupon set, or to allocate a specific coupon.","id":"AllocateCouponRequest","required":[],"properties":{"createIfNew":{"defaultValue":false,"description":"Create the coupon if it does not yet exist (including Inventory or any other status). If this field is set, the couponId and the couponSetId must be specified. This function is available only to select brands. (requires JSON v2)","type":"boolean"},"failOnMultipleCoupons":{"defaultValue":true,"description":"Flag to determine if the request should fail if the card already has a coupon for the given promotion.","type":"boolean"},"customTags":{"description":"Optional, if this value is present in the request and is not null, the custom tags of the specified coupon will be set to this value right as it is allocated. If this value is an empty array, the custom tags will be reset (in case there were already tags on the coupon before allocation).","type":"array","items":{"type":"string"}},"couponSetId":{"description":"ID of the coupon set from which to allocate a new coupon.","type":"string"},"couponId":{"description":"Coupon ID of the coupon to allocate. If this field is set, the couponSetId should not to be specified.","type":"string"},"cardNumber":{"description":"Card number of loyalty card to issue this coupon to. Optional field, leave out to only allocate the coupon. If specified, promotionId and allowMultipleCoupons parameters are required.","type":"string"},"promotionId":{"description":"ID of the promotion to attach to the coupon on the card. Required if card number is passed in.","type":"string"},"newPin":{"description":"In case createIfNew is set to true and the coupon is related to a cardNumber, and a new coupon is being created, this field can be used to specify the PIN for this newly created coupon. Value should not be longer than 20 characters if it\u0027s specified.","type":"string"},"expirationDate":{"description":"Optional, if specified, the newly allocated coupon will immediately start out with this expiration date. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00. Cannot be in the past. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"allowMultipleCoupons":{"defaultValue":false,"description":"Flag to determine if multiple coupons per promotion are allowed for one card. If set to false request will fail if card already has a coupon.","type":"boolean"}}},"AddPersonalOfferResponse":{"description":"Response from addPersonalOffer requests.","id":"AddPersonalOfferResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"ListEventTypesResponse":{"description":"Response for listEventTypes call, returns a list of all event types that have been set up for this brand","id":"ListEventTypesResponse","required":["requestRef","eventTypes","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"eventTypes":{"description":"List of all event types that were set up","type":"array","items":{"$ref":"EventTypeDefinition"}}}},"Card":{"description":"Represents a Card object that can come back from a Search request. The fields that are available in this object will depend on the used SearchReturnFields in the Search request.","id":"Card","required":["cardNumber"],"properties":{"enrollmentDate":{"description":"Date when this customer enrolled, only specified if the customer is enrolled and isEnrolled is set in the returnFields object. The format is yyyy-MM-dd, e.g. 2015-01-01. Not always available, contact Clutch if this property is needed but not available. (requires JSON v2)","type":"string"},"customData":{"description":"Custom data from the custom third party that was set for this card. This can be any string value. If there is a need to store multiple values, you could consider using a stringified JSON object as customData object. This data is not searchable, but can be returned if the card number is known.","type":"string"},"recommendedProducts":{"description":"Recommended products for this card. (requires JSON v2)","type":"array","items":{"$ref":"RecommendedProduct"}},"segments":{"description":"Matching segments. (requires JSON v2)","type":"array","items":{"$ref":"CardSegment"}},"score":{"description":"Customer score (requires JSON v2)","$ref":"CardScore"},"metaData":{"description":"Additional card meta data, only returned if metaData was requested in the search return fields object. (requires JSON v2)","$ref":"CardMetaData"},"balances":{"description":"All balances associated with this card. If balances reach 0, they may be excluded from this list.","type":"array","items":{"$ref":"CardBalance"}},"giverCustomer":{"description":"The customer that gave this card, if this card was given by another customer.","$ref":"Customer"},"alternateCustomer":{"description":"An alternate customer that can be linked to this card. Can be used in the case of a secondary card holder.","$ref":"Customer"},"pin":{"description":"Card pin (requires JSON v2)","type":"string"},"sequenceNr":{"format":"int32","description":"Sequence NR for this card, used for multi-issuance.","type":"integer"},"childCards":{"description":"Child cards that are attached to this card. Even if you specified any child card filters on this search request, the childCards structure here will not be filtered and contain all child cards attached to the matching parent card. (requires JSON v2)","type":"array","items":{"$ref":"Card"}},"coupons":{"description":"List of active coupons for this card. Max of 20 coupons returned. (requires JSON v2)","type":"array","items":{"$ref":"CardCoupon"}},"personalOffers":{"description":"Personal offers that are available for this card, only returned if this was requested in the search return fields object. Will not include expired offers, but will include offers that are not yet available. NOTE: Will only return up to 100 offers. (requires JSON v2)","type":"array","items":{"$ref":"CardPersonalOffer"}},"cardSetId":{"description":"ID of the card set to which this card belongs. Will always be set on regular cards, will not be set on child cards.","type":"string"},"walletPassiOS":{"description":"Flag, this can be set to true or false to indicate if the card currently has an Apple Wallet pass installed. (requires JSON v2)","type":"boolean"},"isEnrolled":{"description":"Whether the primary customer linked to this card is flagged as enrolled into the loyalty program.","type":"boolean"},"cardStatus":{"description":"The status of this card. This field is only returned when includeInactive is set to true, and was allowed to be set to true.","type":"string","enum":["Lost","Activated","Demo","Closed","Distributed","Transfer","Expired","Suspended","Inventory","Stolen"]},"events":{"description":"List of events that are stored for this card.","type":"array","items":{"$ref":"SearchResultEvent"}},"brandDemographics":{"description":"Custom Brand Demographics for the specified card. This will be a stringified JSON map where the keys are the internal names for the custom demographic fields, mapping directly to their corresponding values.","type":"string"},"checkouts":{"description":"List of compact checkout overviews for historic checkouts for this card. (requires JSON v2)","type":"array","items":{"$ref":"HistoricCheckout"}},"mailings":{"description":"List of mailings that were sent to this card holder. This field is not guaranteed to be set, even if mailings are requested to be returned, as not all card holders might have received mailings.","type":"array","items":{"$ref":"Mailing"}},"emailBounced":{"description":"Whether a BOUNCED event was logged on the card that was not followed by an UNBOUNCED event.","type":"boolean"},"campaignCounters":{"description":"Campaign counters representing campaign rule firing data for this card. Campaign Counter data for this card is only returned if this was requested in the search return fields object. (requires JSON v2)","type":"array","items":{"$ref":"CardCampaignCounter"}},"enrolledPrograms":{"description":"Programs that this card is enrolled in, this is excluding the main loyalty program if applicable. (requires JSON v2)","type":"array","items":{"$ref":"EnrolledProgram"}},"surveyResponses":{"description":"Survey response data, only returned if this was requested in the search return fields object. (requires JSON v2)","type":"array","items":{"$ref":"SurveyResponse"}},"thirdPartyLinks":{"description":"Third party communication and opt in settings were set for this card. This will be an array of ThirdPartyCardProperties objects. Will not contain custom data property from ThirdPartyCardProperties object.","type":"array","items":{"$ref":"ThirdPartyCardProperties"}},"mmsBounced":{"description":"Whether a COMMUNICATION_FAILED event was logged on the card that was not followed by an MMS_FAILURE_CLEARED event.","type":"boolean"},"walletPassAndroid":{"description":"Flag, this can be set to true or false to indicate if the card currently has a Google Wallet pass installed. (requires JSON v2)","type":"boolean"},"customCardNumber":{"description":"Custom card number (external card reference) for this card if it was set for the card and if this field was requested to be returned.","type":"string"},"activationDate":{"description":"Date when this card was activated. This field is not guaranteed to be set, even if the activation date was requested to be returned, as some cards may not be activated. Will be returned in the format yyyy-MM-dd HH:mm:ss (e.g. 2000-12-31 23:59:59). This field only includes the date, not the time of day. (requires JSON v2) (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"cardNumber":{"description":"Card number, the main identifier of the card.","type":"string"},"customer":{"description":"The primary customer linked to this card.","$ref":"Customer"},"statistics":{"description":"Card purchase statistics, only returned if this was requested in the search return fields object. Returns mostShoppedLocationId, mostSpentLocationId, and lastShoppedLocation. (requires JSON v2)","$ref":"CardStatistics"}}},"PaymentReceiptInformation":{"description":"Optional information that may be provided specifically for receipt printing or e-receipt generation.","id":"PaymentReceiptInformation","required":[],"properties":{"paymentToken":{"description":"Token that identifies the applied payment method. Value should not be longer than 36 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"paymentNetwork":{"description":"Merchant identifier for the payment network that was used. For example, \u002702\u0027 Value should not be longer than 3 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"cardHolderVerification":{"description":"Method used to verify the card holder. (requires JSON v2)","type":"string","enum":["CVC","PIN","NONE","SIGNATURE"]},"cardHolderName":{"description":"Name of the card holder. Value should not be longer than 60 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"authorizationCode":{"description":"Alphanumeric authorization code Value should not be longer than 6 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"cardEntryMethod":{"description":"Card number entry method. (requires JSON v2)","type":"string","enum":["SWIPE","CHIP","KEYED_IN","CONTACTLESS","ONLINE"]},"authorizationMode":{"description":"Method that was used to authorize the provided payment method. (requires JSON v2)","type":"string","enum":["ISSUER","NONE","OFFLINE"]},"last4Digits":{"description":"Last 4 digits of the used card. Value should not be longer than 4 characters if it\u0027s specified. (requires JSON v2)","type":"string"}}},"BalanceBucket":{"description":"Reference to a bucket of balance, e.g. balance for a given coupon will have a reference BalanceBucket object to indicate which coupon it belongs to.","id":"BalanceBucket","required":[],"properties":{"subtrackConversionRate":{"format":"int32","description":"Optional, in case this balance bucket relates to a punch subtrack, this is the conversion rate of that subtrack","type":"integer"},"subtrackDollarBased":{"description":"Optional, in case this balance bucket relates to a punch subtrack, this is a flag that is true for dollar-based subtracks and false for quantity-based subtracks","type":"boolean"},"subtrackDisplayName":{"description":"Optional, in case this balance bucket relates to a punch subtrack, this is the display name of that subtrack","type":"string"},"couponId":{"description":"Optional, in case this balance bucket belongs to a coupon, this is the coupon ID","type":"string"}}},"SearchFilters":{"description":"Represents the filters used to search cards / customers.","id":"SearchFilters","required":[],"properties":{"birthday":{"description":"Use this filter to find all cards where the birthday of the primary customer linked to the card matches with the specified value. The format is yyyy-MM-dd, e.g. 2015-01-01","type":"string"},"lastName":{"description":"Use this filter to find all cards where the last name of the primary customer linked to the card matches with the specified value.","type":"string"},"firstNamePrefix":{"description":"Use this filter to find customers by a first name prefix. This filter can generally only be used to restrict search results to cards matching this first name prefix. If both firstNamePrefix and lastNamePrefix are defined and are both at least 3 characters long (or shorter if the name on the intended card is shorter than 3 characters), no other filters are required to be specified. This functionality is not available by default, please contact Clutch support for access. (requires JSON v2)","type":"string"},"customDemographics":{"description":"Use this filter to look for cards with a certain value  (requires JSON v2)","type":"array","items":{"$ref":"CustomDemographicFilter"}},"firstName":{"description":"Use this filter to find all cards where the first name of the primary customer linked to the card matches with the specified value.","type":"string"},"lastNamePrefix":{"description":"Use this filter to find customers by a last name prefix, otherwise similar to firstNamePrefix. This functionality is not available by default, please contact Clutch support for access. (requires JSON v2)","type":"string"},"excludeCardSetIds":{"description":"Use this filter to exclude cards from the specified card sets. This filter can never be used as the only filter, as it will generally match too many cards by itself. Only specify this on the main filters, do not use it in child card filters.","type":"array","items":{"type":"string"}},"mobilePhone":{"description":"Use this filter to find all cards where the mobile phone number of the primary customer linked to the card matches with the specified value. The value should be in an E-164 format. If a value is sent in in any other format, it will be attempted to be converted to E164 format, but this is not recommended. (requires JSON v2)","type":"string"},"phone":{"description":"Use this filter to find all cards where the phone number of the primary customer linked to the card matches with the specified value. The value should be in an E-164 format. If a value is sent in in any other format, it will be attempted to be converted to E164 format, but this is not recommended.","type":"string"},"cardSetId":{"description":"Use this filter to restrict search results to cards from the specified card set. This filter can never be used as the only filter, as it will generally match too many cards by itself. Only specify this on the main filters, do not use it in child card filters.","type":"string"},"customCardNumber":{"description":"The custom card number, being a custom reference to the card to look up. This custom card number can be set through updateAccount and can be used to find cards.","type":"string"},"cardNumber":{"description":"The card number to look up. When using this filter, the other filters should most likely not be used. Value should not be longer than 200 characters if it\u0027s specified.","type":"string"},"email":{"description":"Use this filter to find all cards where the email address of the primary customer linked to the card matches with the specified value.","type":"string"},"programTypes":{"description":"If specified, only cards from card sets from programs with these program types will be allowed. If not specified, which program types are allowed will depend on the brand settings. If there is no brand setting to specify which program types are allowed by default, any program type is allowed. Only specify this on the main filters, do not use it in child card filters.","type":"array","items":{"type":"string","enum":["Gift","Prepaid","Combo","Marketing Only","Loyalty"]}}}},"OfferActivityRow":{"description":"Represents an offer activity row for a card.","id":"OfferActivityRow","required":["timestamp"],"properties":{"discountNr":{"defaultValue":0.0,"format":"int64","description":"Discount number associated with this offer activity.","type":"integer"},"timestamp":{"description":"Date and time when this offer activity happened. The value is in epoch seconds. (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"LogPushEventRequest":{"description":"Request to add a push event to a card.","id":"LogPushEventRequest","required":["cardNumber","categoryId","eventType","specificId"],"properties":{"specificId":{"description":"The event specific id from the push payload data object","type":"string"},"eventType":{"description":"The type of event","type":"string","enum":["delivered","clicked"]},"cardNumber":{"description":"Card number to log this event to","type":"string"},"categoryId":{"description":"The event category id from the push payload data object","type":"string"}}},"TriggerReferRewardsResponse":{"description":"Response from triggerReferRewards calls.","id":"TriggerReferRewardsResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"ResponseObject":{"description":"Represents an object containing more details relating to a response message.","id":"ResponseObject","required":[],"properties":{"receiptMessage":{"defaultValue":false,"description":"Flag that indicates whether the response message is a receipt message. If this is set to true, the message will have been excluded from the top level responseMessages property.","type":"boolean"},"message":{"description":"The content of the response message this response object belongs to","type":"string"},"campaignRuleUUID":{"description":"The UUID of the campaign rule triggering the response message","type":"string"}}},"CampaignOption":{"description":"A campaign execution option that is available for a user to pick.","id":"CampaignOption","required":[],"properties":{"maxSelectedOptions":{"defaultValue":0.0,"format":"int32","description":"Maximum amount of options in the current choice group that can be selected. If more options in the same choice group are sent in than this number, this option will not be executed.","type":"integer"},"choiceGroupId":{"description":"ID of the group to which this choice option belongs.","type":"string"},"optionId":{"description":"ID of this unique option","type":"string"},"campaignRuleUUID":{"description":"UUID of the campaign rule that produced this campaign choice. May be used to later determine which campaign balance mutations related to this campaign choice.","type":"string"},"selected":{"defaultValue":false,"description":"Flag that indicates whether this campaign option was marked as selected in the checkout request.","type":"boolean"},"optionDisplayValue":{"description":"A display value for this specific option, in the default language of the current brand","type":"string"}}},"UpdateAccountRequest":{"description":"Used to place UpdateAccount requests, which can be used to update demographics information linked to a card, flag a card / customer as enrolled or update third party settings.","id":"UpdateAccountRequest","required":["cardNumber"],"properties":{"forcePinValidation":{"defaultValue":false,"description":"If set to true, a valid pin is always required for the specified card.","type":"boolean"},"customRequestDate":{"description":"Custom request date, used to set an alternative processing date on this updateAccount request. Must be turned on via brand setting. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"brandDemographics":{"description":"Custom Brand Demographics for the specified card.","type":"array","items":{"$ref":"BrandDemographicsProperties"}},"childCardNumber":{"description":"Child card number, can be specified to modify balance on a child card inside the root card. (requires JSON v2)","type":"string"},"newEvents":{"description":"New events that should be added to the card.","type":"array","items":{"$ref":"EventRegistration"}},"surveyResponses":{"description":"Survey responses. These can be new responses or updates to existing responses.","type":"array","items":{"$ref":"SurveyResponseRegistration"}},"customKeyValues":{"description":"Custom key-value pairs that can optionally be used for custom campaign triggering. This entire array is optional.","type":"array","items":{"$ref":"CheckoutKeyValue"}},"thirdPartyUpdates":{"description":"Third party link information for the specified card.","type":"array","items":{"$ref":"ThirdPartyCardProperties"}},"returnBalanceMutations":{"defaultValue":false,"description":"When set to true, returns a list of detailed balance mutation information for all balance updates.","type":"boolean"},"countAsEnrollment":{"defaultValue":false,"description":"Whether this transaction should always count as an enrollment for the primary customer, provided this customer is not enrolled yet.","type":"boolean"},"returnBalances":{"defaultValue":false,"description":"When set to true, returns the balance information for the specified card","type":"boolean"},"primaryCustomer":{"description":"Updates to the primary customer.","$ref":"CustomerUpdates"},"alternateCustomer":{"description":"Updates to the alternate customer.","$ref":"CustomerUpdates"},"pin":{"description":"Pin for the specified card, only used if pin validation is needed.","type":"string"},"updatedPin":{"description":"Updated pin, used only to change the pin on v2 cards. Value should not be longer than 6 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"customCardNumber":{"description":"A custom reference to this card. This value does not need to be unique across cards and this value can be used to find the card back in a later request. The maximum length is 64 characters.","type":"string"},"skipOptInConfirmationEmails":{"defaultValue":false,"description":"Skip any potential opt in confirmation emails that this API call would trigger. (requires JSON v2)","type":"boolean"},"programEnrollments":{"description":"Programs to enroll or un-enroll the card to. (requires JSON v2)","type":"array","items":{"$ref":"ProgramEnrollment"}},"cardNumber":{"description":"Card number for which to update the linked account.","type":"string"}}},"CreateEventTypeRequest":{"description":"Create a new custom event type defintion.","id":"CreateEventTypeRequest","required":["categoryId"],"properties":{"sentiment":{"format":"int32","description":"The sentiment of this event definition - 0 for neutral, 1 for positive, -1 for negative.","type":"integer"},"groupType":{"description":"Optional, the type for this event definition. Can be ECOM, EMAIL, SMS, DIRECT MAIL, IN STORE, FEEDBACK, SOCIAL, MILESTONE, OTHER. Will default to OTHER unless specified.","type":"string"},"name":{"description":"Optional, a descriptive name for this event type definition. If an event with the specified categoryId already exists, and the name field is specified, the name will be updated to this new value.","type":"string"},"categoryId":{"description":"Category ID to use for the event to be created.","type":"string"}}},"UpdateBalanceRequest":{"description":"Used to place UpdateBalance requests, these requests can be used to issue or redeem balance, place holds, use holds, or perform accounting adjustments on cards.","id":"UpdateBalanceRequest","required":["cardNumber","action"],"properties":{"isReturnRelated":{"defaultValue":false,"description":"If this is an issuance, isReturnRelated can be set to true to indicate that the balance being issued is related to the return of merchandise.","type":"boolean"},"subtrackIndex":{"format":"int32","description":"Subtrack index, can be specified (either this, couponId, or neither, but never both) to indicate which bucket of balance it targeted for this mutation. This relates to balance punch subtrack balances. (requires JSON v2)","type":"integer"},"returnBalanceExpirations":{"defaultValue":false,"description":"If returnBalances is set to true, this flag indicates if the balances should be broken down by expiration date, showing the expiration date for each block of balances. (requires JSON v2)","type":"boolean"},"issuedBalanceActivation":{"description":"Activation date of the issued balance. The balance will not be available until this date, if specified. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00 (requires JSON v2) (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"couponId":{"description":"Coupon ID, can be specified to update balance for a specific coupon. Coupon balances are separate from main card balances. NOTE: This functionality is not supported for child card balances. (requires JSON v2)","type":"string"},"merchantName":{"description":"Optional, the merchant name to associate with this transaction, in case there is no location data available. Value should not be longer than 64 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"redeemFromHoldTransactionId":{"description":"When redeeming, set this field to the hold transaction ID of the held balance you want to redeem from","type":"string"},"returnBalances":{"defaultValue":false,"description":"Indicates whether balance information for the specified card should be returned","type":"boolean"},"pin":{"description":"Pin for the card, only used if pin validation is needed.","type":"string"},"issuedBalanceExpiration":{"description":"Expiration date of the issued balance. Leave this blank for the default behaviour, which is to issue the balance as non-expiring. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00 (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"releaseHoldRemainder":{"defaultValue":false,"description":"When redeeming from a held balance by using a hold transaction ID reference, set this flag to true if the held balance in excess of the redeemed amount should be released again","type":"boolean"},"action":{"description":"Whether balance should be issued, redeemed or held from the specified card. Set to adjustOnly if the balance does not need to be modified, but only the status needs to be adjusted. The value adjustOnly is only allowed when isAccountingAdjustment is true.","type":"string","enum":["adjustOnly","issue","redeem","hold"]},"adjustStatus":{"description":"If this transaction is an accounting adjustment, this component may be used to adjust the status of the card. Once the status has been adjusted and is no longer an active card, it will no longer be possible to do anything with the card.","$ref":"AdjustmentStatusDetails"},"forcePinValidation":{"defaultValue":false,"description":"If set to true, a valid pin is always required.","type":"boolean"},"customMutationType":{"description":"Define a custom balance mutation type to be associated with this mutation for reporting purposes. This functionality is not available by default, please contact Clutch support for access.","type":"string"},"redeemMaxOnOverdraw":{"defaultValue":false,"description":"If the amount to redeem is more than what is available on the card, set this flag to true if you want still want to redeem as much as possible. If set to false or left blank, overdrawing will cause an overdrawing request to fail instead.","type":"boolean"},"customRequestDate":{"description":"Custom request date, used to set an alternative processing date on this updateBalance request. Must be turned on via brand setting. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"amount":{"description":"How much to add or subtract from the specified card, should be a positive amount. This is required if the action is issue, redeem or hold.","$ref":"CardBalanceAmount"},"isAccountingAdjustment":{"defaultValue":false,"description":"Set to true if this transaction should be treated as an accounting adjustment","type":"boolean"},"suspensionReason":{"description":"Describes reason for suspended account","type":"string","enum":["lostOrStolenAccount","other","dataPrivacyRequest","duplicateAccount","employee","hacked","customer","spamPhishing"]},"childCardNumber":{"description":"Child card number, can be specified to modify balance on a child card inside the root card. (requires JSON v2)","type":"string"},"orderTotal":{"format":"double","description":"Numerical value representing the order total of the transaction in which a Stored Value balance redemption is occurring. When provided, this value should be positive and larger than or equal to the requested redemption amount. This value is used to calculate percentage of lift over a card’s issued value. Lift reporting only applies to Stored value cards limited to a single issuance. Value should not be smaller than 0. (requires JSON v2)","type":"number"},"customKeyValues":{"description":"Custom key-value pairs that can optionally be used for custom campaign triggering. This entire array is optional.","type":"array","items":{"$ref":"CheckoutKeyValue"}},"balanceReference":{"description":"A reference to add to issued balance. This can be specified for balance issuances only. Contact Clutch support for access. Value should not be longer than 25 characters if it\u0027s specified.","type":"string"},"isCashout":{"defaultValue":false,"description":"Used for redemption only. Set to true if the redemption is being used to issue the balance remainder in cash due to customer request. This field can be used to comply with cash-out laws by state. isCashout cannot be used if a card contains any held balance(s). Balance cannot go negative, requested amount should reflect the amount needed to reduce the card balance to 0.00.","type":"boolean"},"cardNumber":{"description":"Card of which to modify a balance","type":"string"},"returnDelayedBalances":{"defaultValue":false,"description":"If returnBalances is set to true, this flag indicates if delayed balances should also be returned. Delayed balance objects represent balance that is not yet available for redemption until its active date. Delayed balances being returned will also be split out by their expiration date if there was one, regardless of the returnBalanceExpirations flag. (requires JSON v2)","type":"boolean"}}},"ProcessMessageRequest":{"description":"Used to place processMessage API requests, which can be used to process incoming messages for a card","id":"ProcessMessageRequest","required":["message","cardNumber"],"properties":{"message":{"description":"Incoming message content.","type":"string"},"cardNumber":{"description":"Card number for which the incoming message should be processed.","type":"string"}}},"HistoricTransactionBalanceUpdate":{"description":"This model represents a main balance update that was executed during a historic transaction.","id":"HistoricTransactionBalanceUpdate","required":["balanceType","amount"],"properties":{"campaignRuleName":{"description":"Can contain the name of the campaign rule that triggered this balance update. (requires JSON v2)","type":"string"},"amount":{"format":"double","description":"The amount of this balance update. This amount is positive for issuances and negative for redemptions.","type":"number"},"balanceType":{"description":"The balance type of this balance update.","type":"string","enum":["Points","Currency","Punches","Custom"]},"balanceCode":{"description":"This is only defined for Currency or Custom balance types, to further define the balance type that was affected by this balance mutation.","type":"string"},"mutationType":{"description":"Mutation type flag (requires JSON v2)","type":"string","enum":["Campaign","Adjustment","Cashout","Transfer","Expiration","ReturnMerchandise","Void","Uknown","Hold","UpdateBalance"]},"issuanceIndex":{"format":"int32","description":"Optional, set to null for redemptions, otherwise orders issuance transactions starting from 1. Specific balance buckets (coupons) and balance types get their own indexes. (requires JSON v2)","type":"integer"},"campaignResultName":{"description":"Can contain the name of the campaign result that triggered this balance update. (requires JSON v2)","type":"string"},"campaignName":{"description":"Can contain the name of the campaign that triggered this balance update. (requires JSON v2)","type":"string"},"campaignConditionName":{"description":"Can contain the name of the campaign condition that triggered this balance update. (requires JSON v2)","type":"string"},"balanceBucket":{"description":"Optional, this will typically be null. If this is specified, the balance mutation belongs to a specific \u0027bucket\u0027 on the card, e.g. it\u0027s balance that belongs to a certain coupon on the card.","$ref":"BalanceBucket"},"balanceActiveDate":{"format":"int64","description":"Active date of this balance, the number of milliseconds since January 1, 1970, 00:00:00 GMT. This field is only included if this balance object represents balance that was not yet available for redemption during the time of the original API call that issued this balance. NOTE: This field will not change over time, the balanceActiveDate may be in the past compared to the cardHistory call. (requires JSON v2)","type":"integer"}}},"AllocateRequest":{"description":"Used to place Allocate requests, which can be used to allocate a randomly selected card from a card set and activate it, or to activate a specific card.","id":"AllocateRequest","required":[],"properties":{"createIfNew":{"defaultValue":false,"description":"Create the card if it does not yet exist (including Inventory or any other status). If this field is set, the cardNumber and the cardSetId must be specified. This function is available only to select brands. (requires JSON v2)","type":"boolean"},"customRequestDate":{"description":"Custom request date, used to set an alternative processing date on this allocate request. Must be turned on via brand setting. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"brandDemographics":{"description":"Custom Brand Demographics for the specified card. These fields will be populated immediately after allocation. (requires JSON v2)","type":"array","items":{"$ref":"BrandDemographicsProperties"}},"cardSetId":{"description":"ID of card set from which to allocate a new card, usually for virtual cards. If createIfNew is true, specify this field and also cardNumber. If createIfNew is false, only specify cardNumber or cardSetId, but not both.","type":"string"},"customerUpdates":{"description":"Sets basic demographic values for the primary customer.","$ref":"CustomerUpdates"},"cardNumber":{"description":"Card number of the card to allocate, usually used for physical cards. If createIfNew is true, specify this field and also cardSetId. If createIfNew is false, only specify cardNumber or cardSetId, but not both. If specified, should be at least 4 characters long and at most 100 characters long.","type":"string"}}},"RequestLookupRequest":{"description":"Used to place RequestLookup requests, which can be used to find information about a specific previous request.","id":"RequestLookupRequest","required":["requestRef"],"properties":{"showDetailedMutations":{"defaultValue":false,"description":"Optional, defaults to false. If true, the response will include detailed balance mutations similar to those returned by CardHistory.","type":"boolean"},"requestRef":{"description":"The requestRef of the request to look up.","type":"string"},"splitHoldMutations":{"defaultValue":false,"description":"Optional, defaults to false. If true, the balance mutations of transactions are broken down into hold related mutations and regular mutations.","type":"boolean"}}},"UpdateBalanceResponse":{"description":"Response from UpdateBalance requests.","id":"UpdateBalanceResponse","required":["requestRef","success"],"properties":{"balances":{"description":"All balances for the specified card, after the update was applied. If balances reach 0, they may be excluded from this list.","type":"array","items":{"$ref":"CardBalance"}},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"convertedAmount":{"format":"double","description":"If this API call triggered a redemption that performed a currency conversion, this field will contain the amount that was actually redeemed, in the card\u0027s main currency. (requires JSON v2)","type":"number"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"overdrawAmountOriginalCurrency":{"format":"double","description":"If didOverdraw is set to true and the request converted the amount to the card\u0027s main currency, this field will contain the overdraw amount in the original request currency.","type":"number"},"didOverdraw":{"defaultValue":false,"description":"If a redemption exceeded the amount available on the card, this flag will be set to true","type":"boolean"},"overdrawAmount":{"format":"double","description":"If didOverdraw is set to true, this field will contain the amount that was overdrawn","type":"number"},"transactionId":{"description":"Reference of this transaction, will always be included for successful requests. This is mainly used to reference the transaction that triggered a hold.","type":"string"},"cardNumber":{"description":"Card number of which balance was updated. Will always be included for successful requests.","type":"string"}}},"CustomDemographicFilter":{"description":"Filter for a value of a custom brand demographics field.","id":"CustomDemographicFilter","required":["fieldName","textValue"],"properties":{"fieldName":{"description":"Field name of the custom brand demographics field.","type":"string"},"textValue":{"description":"Expected text value for the given field. Specify this field is a text value is expected.","type":"string"}}},"ProcessMessageResponse":{"description":"Response from processMessage requests.","id":"ProcessMessageResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"triggeredRuleCount":{"defaultValue":0.0,"format":"int32","description":"The number of campaign rules that were triggered.","type":"integer"}}},"LocationData":{"description":"Represents a Location object coming back from the API.","id":"LocationData","required":[],"properties":{"name":{"description":"Display name of the location","type":"string"},"externalId":{"description":"External ID of the location","type":"string"}}},"HistoricTransaction":{"description":"Represents a transaction / API call that happened in the past.","id":"HistoricTransaction","required":["transactionId","transactionTime","isLegacy"],"properties":{"locationName":{"description":"Location name of the location where this transaction was initiated. Will only be included if location names were requested. (requires JSON v2)","type":"string"},"skus":{"description":"Optional. All SKUs that were sent in as part of the original checkout.","type":"array","items":{"$ref":"SimplifiedSkuObject"}},"isLegacy":{"defaultValue":false,"description":"Whether this transaction was placed through a legacy API call (e.g. through the SOAP API), or through this current API.","type":"boolean"},"checkoutShippingTotal":{"format":"double","description":"Total shipping amount paid with the checkout. (requires JSON v2)","type":"number"},"childCardNumber":{"description":"Child card number used in this request. Will only be specified if there was a child card number. (requires JSON v2)","type":"string"},"isVoided":{"defaultValue":false,"description":"Boolean that\u0027s set to true if and only if the transaction has been voided (requires JSON v2)","type":"boolean"},"transactionTime":{"format":"int64","description":"Date and time when this transaction executed. The value is the number of milliseconds since January 1, 1970, 00:00:00 GMT.","type":"integer"},"mainBalanceUpdate":{"format":"double","description":"The main balance update amount from this transaction. For an issuance, this will be the amount issued, for a redemption it will be the actual amount redeemed. For checkout API calls from this API, more balance mutation details are available through checkoutLookup.","type":"number"},"checkoutTotalBeforeDiscounts":{"format":"double","description":"Optional. The total cost before discounts.","type":"number"},"transactionId":{"description":"Transaction ID of this historic transaction. Even though these values are usually numerical, they can be any unordered alphanumerical value.","type":"string"},"callType":{"description":"Optional, this value can optionally be present for transactions coming from the new JSON API. It will only be set if the API call was one of the predefined types. If it is not being returned and you would like to access this field, please contact Clutch. (requires JSON v2)","type":"string","enum":["UPDATE_BALANCE","VOID_CHECKOUT","SEARCH","CHECKOUT_SETUP","UPDATE_ACCOUNT","REPORTING","CHECKOUT_COMPLETE","CHECKOUT_CANCEL","ALLOCATE","TRANSFER","TRIGGER_ONLY","RETURN_MERCHANDISE","VOID","ACCOUNT_HISTORY"]},"balanceUpdates":{"description":"Optional, this property can optionally be present if the new JSON API is being used. It will only include high-level balance update information, not including any potential discounts. It will not be included for child card transactions. If it is not being returned and you would like to access this field, please contact Clutch. (requires JSON v2)","type":"array","items":{"$ref":"HistoricTransactionBalanceUpdate"}},"merchantName":{"description":"Optional, the merchant name that was associated with this transaction, in case there was no location data available. This will only be returned if the flag includeMainBalanceUpdate was true in the request. (requires JSON v2)","type":"string"},"legacyType":{"description":"Optional, this value will only be present for transactions coming from the legacy APIs, such as the SOAP API. The values map to the abbreviations for transaction types in the Web Services documentation. Calls to the JSON API will not have a legacyType assigned to them.","type":"string","enum":["GI","PR","E","MR","LR","AH","I","GR","ER","R","EX","T","V","X","PI","MI","LI","TR"]},"requestRef":{"description":"RequestRef of the original request. Only present if the original request was placed with the same API version that is being used in the card history response.","type":"string"},"checkoutTaxTotal":{"format":"double","description":"Total tax applied to the checkout. (requires JSON v2)","type":"number"},"checkoutTotalAfterDiscounts":{"format":"double","description":"In case the transaction is a checkout, this field will indicate the checkout total after discounts, both pre-discounts and discounts issued by Clutch. Set includeMainBalanceUpdate in the request to true to include this field in the response. (requires JSON v2)","type":"number"},"totalDiscount":{"format":"double","description":"Optional. Total discount given based on campaigns.","type":"number"},"location":{"description":"External location ID, the location where this transaction was initiated. Usually not returned. Please contact Clutch customer support if you want to use this field.","type":"string"},"externalTransactionId":{"description":"External transaction ID that was sent in with this request. (requires JSON v2)","type":"string"},"holdBalanceUpdates":{"description":"Optional, this property can optionally be present if the new JSON API is being used. If the request parameter \u0027splitHoldMutations\u0027 is set to true this property will contain all balance update information for held balances.  It will not be included for child card transactions.","type":"array","items":{"$ref":"HistoricTransactionBalanceUpdate"}}}},"VoidResponse":{"description":"Response from a void request.","id":"VoidResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"CardHolderVerificationType":{"description":"Card holder verification method, may be provided for receipt functionality.","id":"CardHolderVerificationType","required":[],"properties":{}},"PersonalOfferProduct":{"description":"Representation of a product that can receive a discount as part of a personal offer.","id":"PersonalOfferProduct","required":[],"properties":{"includeChildProducts":{"defaultValue":false,"description":"Flag, set this to true to also discount any child products attached to this SKU. This will be determined by the parent sequenceId","type":"boolean"},"sku":{"description":"The SKU that identifies the product that will receive the discount","type":"string"}}},"ThirdPartyCategory":{"description":"Subscription status for a specific category of communications.","id":"ThirdPartyCategory","required":["optIn"],"properties":{"optInConfirmed":{"description":"Confirmed state, if true the customer has confirmed this opt in and the opt in status will be set to true. This field should only be used for sms categories.","type":"boolean"},"optInPending":{"description":"Pending state, if true we are waiting for a customer to confirm this opt in. This field should only be used for sms categories.","type":"boolean"},"name":{"description":"Unique identifier of the category.","type":"string"},"optIn":{"defaultValue":false,"description":"Opt in value, true to opt in, false to opt out.","type":"boolean"},"optInSourceName":{"description":"Name of the API opt in source to use. If this is specified, do not specify optInSourceId as well. It is recommended to specify the name rather than the id. optInSourceName or optInSourceId must be passed in for phone-related opt in requests.","type":"string"},"uuid":{"description":"Unique identifier of the category. This field is required if name is not present.","type":"string"},"optInSourceId":{"description":"Opt in source that is triggering this opt in request. Only applies in cases of phone-related opt in requests.","type":"string"}}},"ListValueTypesRequest":{"description":"Used to place ListValueTypes requests, which can be used to list all value types available for a certain card or a certain card set.","id":"ListValueTypesRequest","required":[],"properties":{"lookupCardNumber":{"description":"Card number to look up the value types for. Optional - either this field or cardSetId can be specified.","type":"string"},"cardSetId":{"description":"ID of card set for which to look up the value types. Optional - if this field is set, cardNumber does not have to be specified. If cardNumber is set, don\u0027t include this field in the request.","type":"string"}}},"CardScore":{"description":"RFM scoring information for a card.","id":"CardScore","required":["monetaryScore","recencyScore","frequencyScore","totalScore"],"properties":{"scoreLabel":{"description":"Label that goes with the overall score. (requires JSON v2)","type":"string"},"monetaryScore":{"format":"double","description":"Monetary score, on a scale of 1 to 5. Has 3 decimals precision. (requires JSON v2)","type":"number"},"recencyScore":{"format":"double","description":"Recency score, on a scale of 1 to 5. Has 3 decimals precision. (requires JSON v2)","type":"number"},"frequencyScore":{"format":"double","description":"Frequency score, on a scale of 1 to 5. Has 3 decimals precision. (requires JSON v2)","type":"number"},"totalScore":{"format":"double","description":"Overall score, on a scale of 0 to 100. Has 0 decimals precision. (requires JSON v2)","type":"number"}}},"CheckoutLookupRequest":{"description":"Used to place CheckoutLookup requests, which can be used to find information about a specific previous checkout.","id":"CheckoutLookupRequest","required":["checkoutTransactionId"],"properties":{"checkoutTransactionId":{"description":"The transaction ID of the checkout to look up. If a checkout-setup transaction was used and linked to the checkout-complete call, use the transaction ID of the checkout-complete API call.","type":"string"}}},"SurveyFieldResponse":{"description":"Representation of a previous response to a single survey field / question.","id":"SurveyFieldResponse","required":["displayName","fieldName"],"properties":{"dateValue":{"format":"int64","description":"This field is populated if the field type is a date. If specified, this is a value in epoch milliseconds.","type":"integer"},"numericalValue":{"format":"int64","description":"This field is populated if the field type is a single number.","type":"integer"},"enumDisplayOptions":{"description":"If enumOptions is specified, this can optionally be specified as an array of the same length. It will contain the display names of each of the enumOptions, appearing in the same order as enumOptions.","type":"array","items":{"type":"string"}},"stringValue":{"description":"This field is populated if the field type is text.","type":"string"},"stringValues":{"description":"This field is populated if the field type is a list of text values.","type":"array","items":{"type":"string"}},"enumOptions":{"description":"Optional, can contain a list of all string values that are allowed to be specified as stringValue / stringValues. These are the internal names used in the API as references.","type":"array","items":{"type":"string"}},"fieldName":{"description":"Internal field name, only unique within the survey","type":"string"},"displayName":{"description":"Display name for this survey field","type":"string"},"stringValueDisplay":{"description":"This field is populated if the stringValue field is defined as an enum option and enum display values were defined for this field, in which case this will contain the display value for that enum option.","type":"string"},"boolValue":{"description":"This field is populated if the field type is a boolean.","type":"boolean"},"numericalValues":{"description":"This field is populated if the field type is a list of numbers.","type":"array","items":{"format":"int64","type":"integer"}},"stringValuesDisplay":{"description":"This field is populated if the stringValues field is defined as list of enum options and enum display values were defined for thie field, in which case this will contain the matching display values for those enum options.","type":"array","items":{"type":"string"}}}},"SearchReturnFields":{"description":"Describes which fields should be returned from a Search request.","id":"SearchReturnFields","required":[],"properties":{"balanceExpirations":{"defaultValue":false,"description":"If balances is set to true, this flag indicates if the balances should be broken down by expiration date, showing the expiration date for each block of balances.","type":"boolean"},"checkoutMutations":{"defaultValue":false,"description":"Indicate if mutations that happened during historic checkouts should also be returned. This flag is only considered if checkouts is also set to true. NOTE: In case the checkout was performed on a child card, and parent card balances were used, any balance mutation against the parent card will not show up here. See CheckoutLookup or RequestLookup for complete details in these cases. (requires JSON v2)","type":"boolean"},"customData":{"defaultValue":false,"description":"Indicate if the third party custom data from the custom third party should be returned.","type":"boolean"},"segments":{"defaultValue":false,"description":"Indicate if all segments should be returned that a card is in. This will only be returned for the first card in the search response. It is recommended to only use this return field in combination with a card number filter. This functionality is not available by default, please contact Clutch support for access. (requires JSON v2)","type":"boolean"},"metaData":{"defaultValue":false,"description":"Indicate if card meta data should be returned. Meta data includes owning location name, program type/name. (requires JSON v2)","type":"boolean"},"balances":{"defaultValue":false,"description":"Indicate if balance information should be returned for all results. Will not include delayed balances.","type":"boolean"},"giverCustomer":{"defaultValue":false,"description":"Indicate if the giver customer information object should be returned for all results.","type":"boolean"},"alternateCustomer":{"defaultValue":false,"description":"Indicate if the alternate customer information object should be returned for all results","type":"boolean"},"pin":{"defaultValue":false,"description":"Indicate if the pin from the matching cards should be returned. This functionality is not available by default, please contact Clutch support for access. (requires JSON v2)","type":"boolean"},"walletPassStatus":{"defaultValue":false,"description":"Indicate if the mobile wallet pass status should be returned. (requires JSON v2)","type":"boolean"},"childCards":{"defaultValue":false,"description":"Indicate if child cards should be returned if they were attached to any of the returned cards. (requires JSON v2)","type":"boolean"},"coupons":{"defaultValue":false,"description":"Indicate if coupon information for matching cards should be returned. Only active coupons will be returned with a limit of 20 (requires JSON v2)","type":"boolean"},"personalOffers":{"defaultValue":false,"description":"Indicate if personal offers should be returned. This can only be returned if a single card is selected. (requires JSON v2)","type":"boolean"},"decorationLang":{"description":"Indicate the language to be used when decorating custom choice values. This field is only considered if decorateCustomValues is set to true. Defaults to English (\"en\").","type":"string"},"isEnrolled":{"defaultValue":false,"description":"Indicate if the enrollment status and date per card / primary customer should be returned.","type":"boolean"},"events":{"defaultValue":false,"description":"Indicate if all events stored on cards should be returned for the matching card(s).","type":"boolean"},"delayedBalances":{"defaultValue":false,"description":"If balances is set to true, this flag indicates if delayed balances should also be returned. Delayed balance objects represent balance that is not yet available for redemption until its active date. Delayed balances being returned will also be split out by their expiration date if there was one, regardless of the balanceExpirations flag. (requires JSON v2)","type":"boolean"},"brandDemographics":{"defaultValue":false,"description":"Indicate if the brand specific demographics for a card should be returned.","type":"boolean"},"checkouts":{"defaultValue":false,"description":"Indicate if basic information from all historic checkouts for matching cards should be returned. (requires JSON v2)","type":"boolean"},"decorateCustomValues":{"defaultValue":false,"description":"Indicate if the choice descriptions should be returned instead of just the choice values for brand demographics when a fieldType is integer and the Segment Filter type is choice (v2 brands only). If using with the Clutch SFMC connector, requires enablement in brand settings to reflect the field name in reporting.","type":"boolean"},"mailings":{"defaultValue":false,"description":"Indicate if historical mailing data should be included in the response data. This functionality is not available by default, please contact Clutch support for access. (requires JSON v2)","type":"boolean"},"emailBounced":{"defaultValue":false,"description":"Indicate if the emailBounced property of cards should be returned.","type":"boolean"},"campaignCounters":{"defaultValue":false,"description":"Indicate if campaign counters should be returned. This can only be returned if a single card is selected. (requires JSON v2)","type":"boolean"},"enrolledPrograms":{"defaultValue":false,"description":"Indicate if the programs that the card is enrolled in should be returned. (requires JSON v2)","type":"boolean"},"surveyResponses":{"defaultValue":false,"description":"Indicate if card affiliated location data should be returned. This flag is only considered if customer is also set to true. This will only be returned for the first card in the search response. It is recommended to only use this return field in combination with a card number filter. (requires JSON v2)","type":"boolean"},"thirdPartyLinks":{"defaultValue":false,"description":"Indicate if the third party links data from the third party should be returned.","type":"boolean"},"mmsBounced":{"defaultValue":false,"description":"Indicate if the mmsBounced property of cards should be returned.","type":"boolean"},"recommendationAmount":{"defaultValue":0.0,"format":"int32","description":"Indicate how many (if any) product recommendations should be returned per customer card. This field is not allowed to be set, unless the card number filter is specified. This functionality is not available by default, please contact Clutch support for access. Value should not be smaller than 0. Value should not be larger than 20. (requires JSON v2)","type":"integer"},"affiliatedLocations":{"defaultValue":false,"description":"Indicate if card affiliated location data should be returned. This flag is only considered if customer is also set to true. (requires JSON v2)","type":"boolean"},"customCardNumber":{"defaultValue":false,"description":"Indicate if the custom card number (external card reference) for cards should be returned, if they are present.","type":"boolean"},"activationDate":{"defaultValue":false,"description":"Indicate if the card activation dates should be included for activated cards. This functionality is not available by default, please contact Clutch support for access. (requires JSON v2)","type":"boolean"},"expiredBalances":{"defaultValue":false,"description":"If balances is set to true and balanceExpirations is also set to true, this flag indicates if expired balances should be still be returned. This will include balances that were expired before they were redeemed.","type":"boolean"},"customer":{"defaultValue":false,"description":"Indicate if main customer information should be returned for all results","type":"boolean"},"statistics":{"defaultValue":false,"description":"Indicate if card purchase statistics should be returned. Returns mostShoppedLocationId, mostSpentLocationId, and lastShoppedLocation. This will only be returned for the first card in the search response. It is recommended to only use this return field in combination with a card number filter. (requires JSON v2)","type":"boolean"}}},"SendEmailTemplateResponse":{"description":"Response from SendEmailTemplate request.","id":"SendEmailTemplateResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"AddPersonalOfferRequest":{"description":"Request to add a personal offer to a card, for later use during checkouts.","id":"AddPersonalOfferRequest","required":["cardNumber"],"properties":{"offer":{"description":"The personal offer to add, will be required unless offerId is populated","$ref":"PersonalOffer"},"offerId":{"format":"int32","description":"The personal offer id to add. Used to retrieve the PersonalOffer from Cassandra. May only be populated when the offer object is not provided.","type":"integer"},"cardNumber":{"description":"Card number that receives this personal offer","type":"string"}}},"Mailing":{"description":"Mailing data, represents one mailing that was sent to a card holder.","id":"Mailing","required":["sentAt","mailingRunId","mailingListId"],"properties":{"mailingListId":{"description":"Mailing list ID, identifies the mailing list.","type":"string"},"mailingRunId":{"description":"Mailing run ID, this is a unique identifier that is generated every time a mailing list is mailed out.","type":"string"},"sentAt":{"format":"int64","description":"Date and time when this mailing was sent. The value is the number of milliseconds since January 1, 1970, 00:00:00 GMT.","type":"integer"}}},"SubscriptionDetailsRequest":{"description":"Request object to interact with subscriptionDetails.","id":"SubscriptionDetailsRequest","required":["action","cardNumber"],"properties":{"assignmentStartDate":{"description":"The date the subscription starts. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"action":{"description":"Action to take with the specified card number and the subscriptions assigned to it.","type":"string","enum":["update","details","delete","assign"]},"assignmentDate":{"description":"The date the subscription was assigned to the card. For update, and delete action, assignment date is used as an identifier for subscriptions. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"assignmentEndDate":{"description":"The date the subscription ends. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"subscriptionId":{"description":"Id of the subscription on the card. For assign, update, and delete, subscription id is needed to identify specific subscription id.","type":"string"},"cardNumber":{"description":"Card number the subscription(s) are assigned to.","type":"string"},"status":{"description":"The status of the subscription on the card. For details, if specified, only subscriptions of that status are returned. For assign and update, if specified, the new status of the subscription on the card.","type":"string","enum":["Active","Inactive"]}}},"CustomerStats":{"description":"Statistics object for a single customer.","id":"CustomerStats","required":[],"properties":{"lifetimeSpend":{"format":"double","description":"Sum of all checkout totals that were sent in during completed checkouts. Will be 0 if there aren\u0027t any purchases.","type":"number"},"last60DaySpend":{"format":"double","description":"Sum of all checkout totals that were sent in during completed checkouts in the last 60 days. Will be 0 if there aren\u0027t any purchases in the last 60 days.","type":"number"},"averageOrderValue":{"format":"double","description":"Average order value, or 0 if there aren\u0027t any purchases. Defined as the lifetimeSpend divided by the total amount of completed checkouts.","type":"number"},"customerLifetimeValue":{"format":"int64","description":"Customer Lifetime Value, calculated as AOV * Purchases Per Year * Avg Years of Relationship.","type":"integer"},"mostRecentPurchaseLocationName":{"description":"Location name of the most recent purchase, if there is at least 1 purchase.","type":"string"},"mostRecentPurchaseDate":{"description":"Date and time of the most recent purchase, in the format yyyy-MM-dd HH:mm:ss. Will only be present if there is at least 1 purchase. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"mostShoppedLocationName":{"description":"Location name of the location where most purchases happened, if there is at least 1 purchase.","type":"string"},"totalCheckouts":{"format":"double","description":"Total amount of checkouts.","type":"number"},"mostShoppedLocationId":{"description":"External location ID of the location where most purchases happened, if there is at least 1 purchase.","type":"string"},"averageBasketSize":{"format":"double","description":"Average basket size, or 0 if there aren\u0027t any purchases. Defined as the average amount of line items per completed checkout.","type":"number"},"mostRecentPurchaseLocationId":{"description":"External location ID of the most recent purchase, if there is at least 1 purchase.","type":"string"}}},"ChannelSubscriptionRequest":{"description":"Used to place ChannelSubscription requests used to retrive the a channel subscription entry.","id":"ChannelSubscriptionRequest","required":["channel","channelUser"],"properties":{"channel":{"description":"Channel to manage subscription for.","type":"string","enum":["phone","email"]},"channelUser":{"description":"Email address or phone number. Phone number must be in E164 format for numbers outside the US.","type":"string"}}},"CheckoutKeyValue":{"description":"As part of a Checkout request, 0..n of these custom key/value pairs can be sent in. Each entry consists of a key and a value, and multiple entries with the same key and/or value are allowed to be sent in at once.","id":"CheckoutKeyValue","required":["value","key"],"properties":{"value":{"description":"Value for the specified key. Should always be in string format","type":"string"},"key":{"description":"Key name. Should always be in string format","type":"string"}}},"CardCoupon":{"description":"Compact representation of a coupon on a card.","id":"CardCoupon","required":[],"properties":{"redemptionDate":{"description":"Date when this coupon was redeemed. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"couponValueType":{"description":"Value type of coupon. This does not related to any coupon balances, but just to the couponValue!","type":"string"},"issuedDate":{"description":"Date when this coupon was issued. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"firstIssuanceAmount":{"format":"double","description":"Optional, if this is a coupon attached to a card and the card had any issuances for balance specifically for this coupon, this is the amount of balance that was issued during the first issuance to the coupon.","type":"number"},"description":{"description":"Description of coupon.","type":"string"},"couponId":{"description":"Coupon ID.","type":"string"},"promotionId":{"description":"Promotion ID","type":"string"},"couponValue":{"format":"double","description":"Value of coupon. Note - this is not the coupon balance! For coupon balances, see the balance responses, with objects that contain a balance reference to the coupon ID.","type":"number"},"expirationDate":{"description":"Date when this coupon expires. (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"CheckoutRequest":{"description":"Used to place Checkout requests, which should be called after every customer checkout, both in-store and online. This should also be called for anonymous checkouts, where no card is used.","id":"CheckoutRequest","required":[],"properties":{"cancelSetup":{"defaultValue":false,"description":"Optional. If set to true, this API call will be ignored and the outstanding checkout setup lock on the current card for the specified setup transaction ID will be released immediately.","type":"boolean"},"revenueCenter":{"format":"int32","description":"Revenue center, can optionally be specified on the checkout for reporting purposes. (requires JSON v2)","type":"integer"},"lockExcludedValueTypes":{"description":"If lockSetupDuration is set to \u003e0, but you want to be able to update balances of certain value types anyway, use this parameter to specify all value types of which balance updates should be allowed while the card is locked in a checkout.","type":"array","items":{"$ref":"ValueType"}},"lockSetupDuration":{"defaultValue":0.0,"format":"int32","description":"Amount of seconds to lock the card used in this checkout, preventing concurrent checkouts or modifications. Optional, will be ignored unless value is larger than 0. If the value is ignored, the setup will not be a locking setup and cannot be used to hard-link to a checkout complete call. Only applies when isSetup is true. The lock will be reset when the checkout completes or cancels. When this field is set to a \u003e0 value, you must specify a cardNumber in the request. Value should not be smaller than 0.","type":"integer"},"products":{"description":"All product purchased as part of this checkout. In case a locking checkout setup call is used, the products only have to be specified on the setup call. The checkout complete call will use the products from the setup in this case.","type":"array","items":{"$ref":"CheckoutProduct"}},"merchantName":{"description":"Optional, the merchant name to associate with this transaction, in case there is no location data available. In case of two stage checkouts that have a value for this field, this should be sent in with the checkout complete call as well. Value should not be longer than 64 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"ignoreLocks":{"description":"Optional, if this is set to true on a checkout or checkout setup call, any previous checkout locks on the same card will be released. Should only be set if the card number is only populated. Should not be used on cancelSetup calls. Should not be used if relatedSetupTransactionId is populated. NOTE: If the original checkout setup used any coupons, those coupons will be unlocked, but you won\u0027t be used those same coupons in this checkout.","type":"boolean"},"returnBalanceMutations":{"defaultValue":false,"description":"Set to true to obtain a list of detailed balance mutation information for all balance updates and discounts.","type":"boolean"},"customLoggingDate":{"description":"Custom logging date, used to set an alternative logging date on this checkout request that may be up to one year in the past. This will not impact balance mutations, only the date on the transaction and purchase object will be altered. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"returnBalances":{"defaultValue":false,"description":"Set to true to obtain balance data for the cardNumber that was used after this checkout is processed. If no card number is specified, no balances will be returned.","type":"boolean"},"pin":{"description":"Pin for the loyalty card, only used if pin validation is needed (forcePinValidation\u003dtrue).","type":"string"},"coupons":{"description":"Optional, all coupon IDs of the coupons that should be used for this checkout. At most 10 coupons can be specified. The same coupon cannot be used by more than one API call concurrently, this will result in a concurrent access error. For a locking checkout setup, the relevant coupons will also be reserved.","type":"array","items":{"type":"string"}},"paymentMethods":{"description":"This parameter can be used to specify how the customer paid for this checkout. Payment methods can be specified during a standalone checkout or checkout setup call, to potentially include them in campaign processing. If payment information is not known or complete during a checkout setup API call, it can also be sent in during the checkout complete phase. In this case, send in all payment methods relevant to the checkout during the checkout complete call. Payment method information during a checkout complete call for a two-stage checkout will not have any effect on campaign processing or redemptions made from payment methods specified during the checkout setup, but simply overwrite the payment methods that are stored for reporting purposes and lift calculation.","type":"array","items":{"$ref":"PaymentMethod"}},"relatedSetupTransactionId":{"description":"Optional, will be ignored unless isSetup is false. If set, will not execute the checkout, but just execute all actions and mutations shown in the locking setup transaction indicated by its transaction ID, as it was returned in the checkout setup API response. Can also be set in combination with cancelSetup set to true. If the checkout was set up using a non-empty card number, a subsequent linked checkout-complete request must also send in the card number, even if relatedSetupTransactionId is specified. Do not include this field unless the checkout setup was locking.","type":"string"},"referringCardNumber":{"description":"Referring customer\u0027s card number. If it\u0027s specified, this must be an existing card number. In case of two-stage checkouts, this should be specified on the checkout setup call only. (requires JSON v2)","type":"string"},"returnResponseObjects":{"defaultValue":false,"description":"Set to true to obtain response objects corresponding to the response messages for this checkout. If no response messages are returned for the checkout, no response objects will be returned.","type":"boolean"},"barcode":{"description":"Barcode for the checkout, used to lookup the transaction to retroactively apply it to a card (requires JSON v2)","type":"string"},"isSetup":{"defaultValue":false,"description":"Indicate whether this call is just the checkout setup or the checkout-complete call. A checkout-complete call (isSetup\u003dfalse) can be linked to the checkout-setup transaction if the checkout-setup was locking and did not expire or get cancelled.","type":"boolean"},"forcePinValidation":{"defaultValue":false,"description":"If set to true, a valid pin is always required for the used loyalty card. Anonymous checkouts will not be allowed if this is set to true.","type":"boolean"},"useParentBalancesOnly":{"defaultValue":false,"description":"If you are using a childCardNumber, set this property to true to indicate that any balance mutation happening in this API call should not happen on the child card, but on the parent card instead. (requires JSON v2)","type":"boolean"},"customRequestDate":{"description":"Custom request date, used to set an alternative processing date on this checkout request. Must be turned on via brand setting. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"checkoutShippingTotal":{"format":"double","description":"Total amount spent for shipping in this transaction, used for campaign processing. Optional - if left out, shipping total will be set to 0. If this is specified, checkoutTotal should not include shipping Value should not be larger than 10000000. (requires JSON v2)","type":"number"},"childCardNumber":{"description":"Child card number, can be specified to modify balance on a child card inside the root card. (requires JSON v2)","type":"string"},"receiptInformation":{"description":"Optional, receipt specific information that will only be available for receipt related functionality","$ref":"TransactionReceiptInformation"},"trigger":{"defaultValue":"checkout","description":"Checkout trigger, determines what prompted this API call. This defaults to checkout, which is the only allowed value for incoming API calls at the moment.","type":"string","enum":["date","social","checkout"]},"checkoutTotal":{"format":"double","description":"Total amount spent for this transaction, used for campaign processing. Optional - if left out, this will be calculated from the products that are passed in. Should be less than 10 million. If preDiscounts are included in this request, the checkoutTotal should be the total before any of those preDiscounts are applied. Value should not be larger than 10000000.","type":"number"},"preDiscounts":{"description":"Discounts that were already issued, outside of the Clutch campaign logic. (requires JSON v2)","type":"array","items":{"$ref":"PreDiscount"}},"customKeyValues":{"description":"Custom key-value pairs that can optionally be used for custom campaign triggering. This entire array is optional.","type":"array","items":{"$ref":"CheckoutKeyValue"}},"recommendationAmount":{"format":"int32","description":"Amount of product recommendations to return. This functionality is not available by default, please contact Clutch support for access. Value should not be smaller than 0. Value should not be larger than 20. (requires JSON v2)","type":"integer"},"orderMode":{"format":"int32","description":"Order mode, can optionally be specified on the checkout for reporting purposes. (requires JSON v2)","type":"integer"},"checkoutTipTotal":{"format":"double","description":"Total tip amount with this transaction. Optional, if left out it will be considered 0. If this is specified, the checkoutTotal should not include the tip amount. The tip amount will typically not be used for campaign processing. In two-stage checkouts, the tip can be overwritten in the complete step. Value should not be larger than 10000000. (requires JSON v2)","type":"number"},"failOnUnusedCoupons":{"defaultValue":true,"description":"By default, the request will fail if coupons are specified that are not used by campaigns. Set this field to false if a checkout request should not fail if not all coupons that are sent in are actually used. (requires JSON v2)","type":"boolean"},"removeBlockingCoupons":{"defaultValue":false,"description":"If this field is set to true, coupons that are not allocated, have already been used, have been reserved by another API call or are not valid for the current card number will be removed silently. If this field is not specified or set to false, such coupons will cause the checkout to fail with error code 27 (invalid coupons).","type":"boolean"},"cardNumber":{"description":"Card number of loyalty card used in this transaction. Leave field out for anonymous checkouts. This field is required for locking checkouts.","type":"string"},"campaignChoices":{"description":"Choices that a user selected for campaign execution.","type":"array","items":{"$ref":"CampaignChoice"}}}},"TriggerReferRewardsRequest":{"description":"Request to place a triggerCampaignRule request.","id":"TriggerReferRewardsRequest","required":["checkoutCount","cardNumber","checkoutTotalSum"],"properties":{"checkoutTotalSum":{"format":"double","description":"Sum of all checkout totals from referred customers in the previous period","type":"number"},"checkoutCount":{"defaultValue":0.0,"format":"int64","description":"Amount of checkouts from referred customers in the previous period","type":"integer"},"cardNumber":{"description":"Card number for which to trigger a campaign rule.","type":"string"}}},"AllocateChildCardResponse":{"description":"Response from allocateChildCard requests.","id":"AllocateChildCardResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"UpdateChannelSubscriptionRequest":{"description":"Used to place UpdateChannelSubscription requests used to maintain email, phone, etc channel entries.","id":"UpdateChannelSubscriptionRequest","required":["globalOptIn","channelUser","channel"],"properties":{"customKeyValues":{"description":"Optional list of custom brand values that will be stored together with the channel user.","type":"array","items":{"$ref":"ChannelKeyValuesType"}},"globalOptIn":{"defaultValue":false,"description":"Required boolean indicating channel is globally opted in or out. False will remove channel from all category lists.","type":"boolean"},"transactionalOptIn":{"description":"Optional boolean setting opt in status for transactional channel communications.","type":"boolean"},"doubleOptIn":{"description":"Optional boolean indicating channel must be confirmed a second time before use. Distributes branded opt in confirmation message if configured.","type":"boolean"},"channel":{"description":"Channel to manage subscription for.","type":"string","enum":["phone","email"]},"channelUser":{"description":"Email address or phone number. Phone number must be in E164 format for numbers outside the US.","type":"string"},"doubleOptInConfirmed":{"description":"Optional boolean that may be provided to set the double opt in status to confirmed.","type":"boolean"},"categories":{"description":"Optional subscription status of sub categories.","type":"array","items":{"$ref":"ChannelCategoryType"}}}},"RecommendedProduct":{"description":"Represents a recommendation for a SKU.","id":"RecommendedProduct","required":["sku"],"properties":{"name":{"description":"Product name.","type":"string"},"sku":{"description":"SKU that identifies the product.","type":"string"},"recommendationType":{"description":"Recommendation type. This field is required, values \u003d [Personalized, Backup]","type":"string","enum":["Backup","Personalized"]}}},"PersonalOffer":{"description":"Personal offer for a card","id":"PersonalOffer","required":["skus","expirationDate","discountType"],"properties":{"qualifyingSkus":{"description":"Optional list of qualifying SKUs. Each SKU must be present with a quantity of at least 1 for a checkout to qualify to apply this offer. This list can contain up to 5 entries.","type":"array","items":{"type":"string"}},"percentageDiscount":{"format":"int32","description":"This is required if and only if the discountType is a percentage discount. This should be a number between 1 and 100, where 100 gives the product for free as a 100% discount.","type":"integer"},"skus":{"description":"The list of products that can receive a discount as part of this offer. The offer will only apply if all of these products are present. Each entry will count as a quantity of 1. This list can contain up to 5 entries.","type":"array","items":{"$ref":"PersonalOfferProduct"}},"discountType":{"description":"The type of discount. For BOGO (buy one get one), you can only specify a single product.","type":"string","enum":["percentageDiscount","newGroupPrice","bogo","absoluteDiscount"]},"newGroupPrice":{"format":"double","description":"This is required if and only if the discountType is a new group price. This will be the new group price, as a the total that will be charged for the group of target skus/products.","type":"number"},"activationDate":{"description":"Optional, if not specified, the offer will be available for use immediately. Specify this property to set a date in the future when this offer becomes available. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"customId":{"format":"int32","description":"Optional ID that can be populated to track this offer. In exports and reports, you can find this ID when offers are redeemed.","type":"integer"},"maxUsageCount":{"format":"int32","description":"Optional maximum usage count, defaults to 1. Offers can only be applied once per checkout, but if this property is specified, the offer can be used in more than one checkout.","type":"integer"},"absoluteDiscount":{"format":"double","description":"This is required if and only if the discountType is an absolute discount. This is the discount to give in the target product\u0027s native currency.","type":"number"},"expirationDate":{"description":"Expiration date, must be at most 1 year into the future. (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"OfferActivityRequest":{"description":"Used to place OfferActivity requests, which can be used to get a list of historic offer activity for a specific card / customer.","id":"OfferActivityRequest","required":["cardNumber"],"properties":{"cardNumber":{"description":"Card number to request the offer activity history for.","type":"string"}}},"TriggerCustomCampaignResponse":{"description":"Response from triggerCustomCampaign calls.","id":"TriggerCustomCampaignResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"sentNotifications":{"defaultValue":0.0,"format":"int32","description":"Amount of notifications that were sent out, not including direct notifications (those are shown only in the responseMessages property).","type":"integer"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"responseMessages":{"description":"All messages that can be returned to the customer / end user - only used if campaigns trigger any of these.","type":"array","items":{"type":"string"}}}},"SurveyFieldRegistration":{"description":"Response that should be registered for a certain survey field. This model is only used for registrations, not for display. If a field response is included in an update to an existing survey response, the previous field response will be completely replaced with this new field response.","id":"SurveyFieldRegistration","required":["fieldName","setValue"],"properties":{"numericalValue":{"format":"int64","description":"If setValue is true and the field type is a number, a boolean or a date, this field is required. If the field type is a date, specify the timestamp in epoch milliseconds. If the field type is boolean, specify 1 for true and 0 for false.","type":"integer"},"stringValue":{"description":"If setValue is true and the field type is text or enum, this field is required. If the field is defined as an enum, this should be one of the allowed values only, case sensitive.","type":"string"},"stringValues":{"description":"If setValue is true and the field type is multiple choice enum, this field is required. This should only contain allowed values from the enum definition, case sensitive.","type":"array","items":{"type":"string"}},"fieldName":{"description":"Internal field name for the field to which this response applies.","type":"string"},"setValue":{"defaultValue":false,"description":"Flag, set this to true to specify the value or set this to false to remove the field response from an existing survey response.","type":"boolean"},"numericalValues":{"description":"If setValue is true and the field type is a list of numbers, this field is required.","type":"array","items":{"format":"int64","type":"integer"}}}},"TriggerCampaignRuleResponse":{"description":"Response from triggerCampaignRule calls.","id":"TriggerCampaignRuleResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"CustomerUpdatesStringList":{"description":"This object represents an update request for a property on a card that supports multiple string values being set.","id":"CustomerUpdatesStringList","required":[],"properties":{"mode":{"defaultValue":"overwrite","description":"Optional, may be set to \u0027append\u0027 to append items to fields with multiple values or \u0027appendUnique\u0027 to only append items that do not already exist within field. Defaults to \u0027overwrite\u0027. (requires JSON v2)","type":"string","enum":["appendUnique","overwrite","append"]},"values":{"description":"List of values to set the field value to, when mode is set to \u0027overwrite\u0027, passing a null value will unset the property. Only compatible with fields that are of a list type. (requires JSON v2)","type":"array","items":{"type":"string"}}}},"TransferRequest":{"description":"Used to transfer a card in or out.","id":"TransferRequest","required":["action","cardNumber"],"properties":{"forcePinValidation":{"defaultValue":false,"description":"If set to true, a valid pin is always required for the specified card. This pin always applies to the card specified by cardNumber. Pin validation is not used for the card indicated by oldCardNumber","type":"boolean"},"ignoreHoldBalances":{"defaultValue":false,"description":"By default, the transfer out request will fail if the specified card had active balance holds (reservations) on it, as the transfer operation would violate the reservation. If ignoreHoldBalances is set to true, any remaining balance holds will be turned into regular non-reserved balance instead, ready to be transferred out.","type":"boolean"},"transferCoupons":{"defaultValue":false,"description":"Transfers in all unique coupons and used coupons to the target card, also appends the target card number to the allowedWithCards coupon property in Cassandra","type":"boolean"},"oldChildCardNumber":{"description":"The old child card to transfer, only required for a transfer in. oldChildCardNumber, oldCardNumber, childCardNumber, and cardNumber all have to be specified to transfer in a child card.","type":"string"},"childCardNumber":{"description":"The child card to transfer in or out. Both childCardNumber and cardNumber have to be specified to transfer out a child card.","type":"string"},"overwriteDemographics":{"description":"DEPRECATED - use mergeMode instead. Whether demographics should be overwritten on the target card (cardNumber) with data coming from the card that is being transferred from (oldCardNumber). This also includes the enrollment status - if the old customer was enrolled and demographics are being overwritten, the card that is being transferred to will count this registration as the moment when it enrolls. If this is set to false, no demographics data will be transferred from the old card to the new card.","type":"boolean"},"mergeMode":{"defaultValue":"skip","description":"Merge mode used, indicates how the demographics and opt in data from the two transferred cards gets combined. Only read when action is set to IN. Defaults to \u0027skip\u0027, which does not use any of the demographics or opt in data (including events) from the source card. Alternatively \u0027combine\u0027 or \u0027overwrite\u0027 may be used. Combine only copies the opt in preferences or demographics if the data is not present on the target card; Overwrite copies all opt in preferences and demographics from the source card and overwrites overlapping data on the target card. Valid options are: overwrite, skip, combine.","type":"string","enum":["skip","overwrite","combine"]},"oldCardNumber":{"description":"Only required (or relevant) when the action is transfer in. This value indicates the card number of the card that was previously transferred out and now should have its history copied over to the card indicated by cardNumber.","type":"string"},"returnBalanceMutations":{"defaultValue":false,"description":"Return the list of balance mutations that get transferred, ONLY works on a transfer in request","type":"boolean"},"owningLocationType":{"defaultValue":"target","description":"Valid options: min, target, source. By default, the owning location of the target card will remain the same. If MIN is selected, the owning location of the card with the earliest signup date is used. If source is chosen the owning location from the source card is used.","type":"string","enum":["min","source","target"]},"pin":{"description":"Pin for the specified card, only used if pin validation is needed.","type":"string"},"copyCustomCardNumber":{"defaultValue":false,"description":"Whether the custom card number should be set on the target card (cardNumber) with the value coming from the card that is being transferred from (oldCardNumber).","type":"boolean"},"action":{"description":"The transfer action that this request should perform. Transfer out means the card indicated by cardNumber will be deactivated and prepared for transfer in to another card. Transfer in means that the card indicated by cardNumber receives all old balances and history from the previously transferred out card. If the action is set to in, oldCardNumber also needs to be specified.","type":"string","enum":["zero","in","out"]},"cardNumber":{"description":"The card number to transfer in or out. For transfer in requests, this should be the target card, to which the old balances are transferred.","type":"string"}}},"SimplifiedSkuObject":{"description":"Simplified representation of a SKU purchased in a transaction.","id":"SimplifiedSkuObject","required":["sku"],"properties":{"unitPrice":{"defaultValue":0.0,"format":"double","description":"Price per unit of this SKU. Product total is unitPrice * amountPurchased. Should be a positive number, larger than or equal to 0.","type":"number"},"amountPurchased":{"defaultValue":1.0,"format":"double","description":"Amount of this exact SKU that was purchased in the same transaction.","type":"number"},"sku":{"description":"SKU that identifies the product.","type":"string"}}},"AllocateResponse":{"description":"Response from Allocate requests.","id":"AllocateResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"pin":{"description":"The PIN number for the card that was issued / activated","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"cardNumber":{"description":"The card number that was issued / activated.","type":"string"}}},"ListEventTypesRequest":{"description":"Request to get all custom event types that have been set up for this brand","id":"ListEventTypesRequest","required":[],"properties":{"offset":{"defaultValue":0.0,"format":"int32","description":"Offset, start at this event. Events are always sorted oldest to newest. This fields defaults to 0. Value should not be smaller than 0. Value should not be larger than 100000. (requires JSON v2)","type":"integer"},"limit":{"defaultValue":1000.0,"format":"int32","description":"Return at most this many events started at the specified offset. Defaults to 1000, which is also the maximum allowed value. Value should not be smaller than 10. Value should not be larger than 1000. (requires JSON v2)","type":"integer"}}},"CardBalance":{"description":"Represents a balance of a certain balance type that is available on a Card object.","id":"CardBalance","required":["balanceType","amount"],"properties":{"doesBalanceExpire":{"description":"This field will only be returned if the searchRequest has balanceExpirations set to true in its return fields object. True indicates this object represents balance that expires, false indicates the represented balance does not expire. (requires JSON v2)","type":"boolean"},"amount":{"format":"double","description":"The numerical amount of this balance object.","type":"number"},"holdingTransactionId":{"description":"If isHold is true, this field will contain a reference to the transaction responsible for holding this chunk of balance","type":"string"},"balanceType":{"description":"Balance type of this balance. If this is set to Currency or Custom, balanceCode is also required.","type":"string","enum":["Points","Currency","Punches","Custom"]},"convertedAmount":{"format":"double","description":"If the searchRequest specifies a convertToCurrency, and this balance represents an amount in the card\u0027s native currency, this value will hold the current balance amount as it would be when converted to the specified target currency.","type":"number"},"balanceCode":{"description":"If the balance type is Currency or Custom, this field will contain the currency code or custom code assigned to this balance type","type":"string"},"scale":{"format":"int32","description":"The amount of decimals used for this value type. When updating the balance of this value type, only send in amounts that will not cause the balance to have more decimals than the maximum amount allowed amount. If scale is set to 2, updating balance with 0.1 or for instance 0.01 is allowed, but updating balance with 0.001 is not.","type":"integer"},"isHold":{"defaultValue":false,"description":"This flag is set to true if this balance represents a chunk of a balance that is reserved by a hold transaction","type":"boolean"},"balanceExpiration":{"format":"int64","description":"Expiration of this balance, the number of milliseconds since January 1, 1970, 00:00:00 GMT. This field is only included if doesBalanceExpire is specified and set to true. (requires JSON v2)","type":"integer"},"balanceBucket":{"description":"Optional, this will typically be null. If this is specified, the balance belongs to a specific \u0027bucket\u0027 on the card, e.g. it\u0027s balance that belongs to a certain coupon on the card.","$ref":"BalanceBucket"},"balanceActiveDate":{"format":"int64","description":"Active date of this balance, the number of milliseconds since January 1, 1970, 00:00:00 GMT. This field is only included if this balance object represents balance that is not yet available for redemption. These delayed balance objects will only be returned if delayedBalances is set to true in the request. (requires JSON v2)","type":"integer"}}},"CommunicationActivityResponse":{"description":"Response from CommunicationActivity requests.","id":"CommunicationActivityResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"communicationRows":{"description":"A list of all matching communication activity rows. At most 100 rows will be returned. (requires JSON v2)","type":"array","items":{"$ref":"CommunicationRow"}},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"rowCount":{"format":"int32","description":"Total amount of communication rows for the specified card. (requires JSON v2)","type":"integer"}}},"ListSubscriptionListsRequest":{"description":"Used to retrieve a brand\u0027s subscription lists by communication channel type.","id":"ListSubscriptionListsRequest","required":["communicationChannelType"],"properties":{"communicationChannelType":{"description":"The communication channel type. (Phone or email.)","type":"string","enum":["phone","email"]}}},"CustomEventProperty":{"description":"Custom property that can be logged on an event","id":"CustomEventProperty","required":["value","key"],"properties":{"value":{"description":"Custom property\u0027s value","type":"string"},"key":{"description":"Custom property key. This key will be unique within the event registration.","type":"string"}}},"CardHistoryRequest":{"description":"Used to place CardHistory requests, which can be used to get a list of historic transactions for a specific card / customer.","id":"CardHistoryRequest","required":["cardNumber"],"properties":{"offset":{"defaultValue":0.0,"format":"int32","description":"Optional, defaults to 0, the amount of matching transactions to skip before returning results. Value should not be smaller than 0. Value should not be larger than 1000. (requires JSON v2)","type":"integer"},"endDate":{"description":"Optional, the end date of the requested card history report. If specified, only activity at or before this moment will be returned. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00 (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"childCardNumber":{"description":"Optional, defaults to undefined. If defined, only requests from this specific child card number will be shown. The default behaviour is to show all requests, from both the main card and all attached child cards. NOTE: The allocation of a child card is a request on the main card and is not included in the card history for a specific child card number.","type":"string"},"splitHoldMutations":{"defaultValue":false,"description":"Optional, defaults to false. If true, the balance mutations of transactions are broken down into hold related mutations and regular mutations.","type":"boolean"},"restrictTransactionTypes":{"description":"Optional, defaults to undefined. If defined, only requests with these transaction types will be included in the results. (requires JSON v2)","type":"array","items":{"type":"string","enum":["UPDATE_BALANCE","VOID_CHECKOUT","SEARCH","CHECKOUT_SETUP","UPDATE_ACCOUNT","REPORTING","CHECKOUT_COMPLETE","CHECKOUT_CANCEL","ALLOCATE","TRANSFER","TRIGGER_ONLY","RETURN_MERCHANDISE","VOID","ACCOUNT_HISTORY"]}},"couponId":{"description":"Optional, defaults to undefined. If defined, only transactions with specific coupon balance mutations will be included. (requires JSON v2)","type":"string"},"includeMainBalanceUpdate":{"defaultValue":false,"description":"Optional, defaults to false. If true, the main balance update, the merchant name and checkout total after discounts for the transactions are included.","type":"boolean"},"beginDate":{"description":"Optional, the begin date of the requested card history report. If specified, only activity at or after this moment will be returned. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00 (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"sortMostRecentFirst":{"defaultValue":true,"description":"Optional, defaults to true. True means most recent results will be sent first. False means the oldest results will come first. (requires JSON v2)","type":"boolean"},"includeLifeCycleStatistics":{"defaultValue":false,"description":"Optional, defaults to false. If true, include stats must also be set to true. If defined, returns daysUntilAtRisk and daysUntilChurned. If a child card number was specified, these statistics will only apply to the selected child card. (requires JSON v2)","type":"boolean"},"maxResults":{"defaultValue":20.0,"format":"int32","description":"Optional, defaults to 20, maximum amount of results to obtain in one request. Value should not be smaller than 1. Value should not be larger than 100. (requires JSON v2)","type":"integer"},"includeStats":{"defaultValue":false,"description":"Optional, defaults to false. If true, various statistics from the customer will be included. If a child card number was specified, these statistics will only apply to the selected child card. (requires JSON v2)","type":"boolean"},"includeCampaignData":{"defaultValue":false,"description":"Optional, defaults to false, whether or not campaign data should be included in the mutation objects. If set to true, this will only work if maxResults is set to 20 or less. (requires JSON v2)","type":"boolean"},"includeLocationNames":{"defaultValue":false,"description":"Optional, defaults to false. If true, location names will be included for the returned transactions. (requires JSON v2)","type":"boolean"},"includeSuspicionScoreStatistics":{"defaultValue":false,"description":"Optional, defaults to false. If true, include stats must also be set to true. If defined, returns suspicion score. If a child card number was specified, these statistics will only apply to the selected child card. (requires JSON v2)","type":"boolean"},"includeTransactionDetails":{"defaultValue":false,"description":"Optional, defaults to false. If true, transaction data will include SKUs purchased. (requires JSON v2)","type":"boolean"},"includeExternalTransactionIds":{"defaultValue":false,"description":"Optional, defaults to false, whether or not external transaction IDs should be included in the response. If set to true, maxResults is not allowed to be more than 20. (requires JSON v2)","type":"boolean"},"cardNumber":{"description":"Card number to request the card activity history for. This field is required in all cases, also if a childCardNumber is specified.","type":"string"}}},"UpdateAccountResponse":{"description":"Response from UpdateAccount requests.","id":"UpdateAccountResponse","required":["requestRef","success"],"properties":{"balances":{"description":"Balance data for the cardNumber that was used after the updateAccount request is processed.","type":"array","items":{"$ref":"CardBalance"}},"balanceMutations":{"description":"A list of detailed balance mutation information for balance updates.","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"UpdateChannelSubscriptionResponse":{"description":"Response from UpdateChannelSubscription requests.","id":"UpdateChannelSubscriptionResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"PaymentAuthorizationMode":{"description":"Payment authorization mode, may be provided for receipt functionality.","id":"PaymentAuthorizationMode","required":[],"properties":{}},"LogPushEventResponse":{"description":"Response from logPushEvent.","id":"LogPushEventResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"BrandDemographicsProperties":{"description":"Represents a request to update the custom brand demographics for a card.","id":"BrandDemographicsProperties","required":["fieldName"],"properties":{"mode":{"defaultValue":"overwrite","description":"Optional, may be set to \u0027append\u0027 to append items to fields with multiple values or \u0027appendUnique\u0027 to only append items that do not already exist within field. Value is ignored for regular single value demographics. Defaults to \u0027overwrite\u0027. (requires JSON v2)","type":"string","enum":["appendUnique","overwrite","append"]},"fieldName":{"description":"Name of internal field name to set a value for.","type":"string"},"values":{"description":"Optional, may not be provided at the same time as \u0027value\u0027. List of values to set the field value to, when mode is set to \u0027overwrite\u0027, passing a null value will unset the property. Only compatible with fields that are of a list type. (requires JSON v2)","type":"array","items":{"$ref":"BrandDemographicsValue"}},"value":{"description":"Optional, may not be provided at the same time as \u0027values\u0027. Value to set the field value to, when mode is set to \u0027overwrite\u0027, passing a null value will unset the property. If field contains a date, the value must be in the yyyy-MM-dd format. Only compatible with fields that are not of a list type.","type":"string"}}},"SubscriptionDetailsResponse":{"description":"Response object for subscription details.","id":"SubscriptionDetailsResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"cardSubscriptions":{"description":"The list of subscriptions assigned to the card.","type":"array","items":{"$ref":"CardSubscription"}},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"ProgramEnrollment":{"description":"Program details that the card should be enrolled in.","id":"ProgramEnrollment","required":["program","enroll"],"properties":{"program":{"description":"The program name to enroll/un-enroll card in","type":"string"},"enroll":{"defaultValue":false,"description":"Flag to specify to enroll or un-enroll card in program","type":"boolean"}}},"RenderTemplateResponse":{"description":"Response from RenderTemplate requests.","id":"RenderTemplateResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"subject":{"description":"Rendered template subject (requires JSON v2)","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"body":{"description":"Rendered template body (requires JSON v2)","type":"string"}}},"PreDiscount":{"description":"Represents a discount that was issued outside of the Clutch campaign logic.","id":"PreDiscount","required":["amount"],"properties":{"externalPromotionId":{"description":"Optional - if specified, all mutations coming from this preDiscount will be linked with this external promotion ID. Compared to external campaigns, external promotions can be used in larger quantities: you can have many more external promotions. External promotions can only be tracked for reporting purposes and won\u0027t be visible in the API. (requires JSON v2)","type":"string"},"amount":{"format":"double","description":"Amount of this discount. Amount should be positive.","type":"number"},"product":{"description":"Optionally represents the product this discount applies to. Should be an exact match of a product object passed in the products array on checkout.","$ref":"DiscountProduct"},"externalCampaignRuleId":{"description":"Optional - if specified, all mutations coming from this preDiscount will be linked with this external campaign rule. (requires JSON v2)","type":"string"}}},"RenderTemplateRequest":{"description":"Request to obtain a rendered template for a user.","id":"RenderTemplateRequest","required":["templateId","cardNumber"],"properties":{"templateId":{"description":"The ID of the template to test out.","type":"string"},"cardNumber":{"description":"Card number to request the offer activity history for.","type":"string"}}},"CardCampaignCounter":{"description":"Representation of a campaign counter on a card that tracks campaign rule firing occurrences","id":"CardCampaignCounter","required":[],"properties":{"recentFirings":{"description":"List of most recent firing occurrences for campaign counter.","type":"array","items":{"type":"string"}},"lifetimeCount":{"format":"int32","description":"Total lifetime count for specific campaign rule firing.","type":"integer"},"campaignCounterId":{"description":"Campaign Counter ID that identifies the specific campaign rule.","type":"string"}}},"BrandDemographicsValue":{"description":"Represents a single value to add to a brand demographic property on a card. At least one of the fields must be set.","id":"BrandDemographicsValue","required":[],"properties":{"dateValue":{"description":"Optional, must be present if no other field is set. Date value to add to the list of values in yyyy-MM-dd format.","type":"string"},"stringValue":{"description":"Optional, must be present if no other field is set. String value to add to the list of values.","type":"string"},"decimalValue":{"format":"double","description":"Optional, must be present if no other field is set. Decimal value to add to the list of values.","type":"number"},"integerValue":{"format":"int32","description":"Optional, must be present if no other field is set. Integer value to add to the list of values.","type":"integer"}}},"SearchResponse":{"description":"Response from Search requests.","id":"SearchResponse","required":["requestRef","success"],"properties":{"usedCache":{"defaultValue":false,"description":"Whether a slightly delayed cache was used to perform this search. Balance information will never be cached, but all other data can be cached. Cached data is usually refreshed within a minute. If searching on just the card number or custom card number, the cache will never be used.","type":"boolean"},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"cards":{"description":"Results from the search: cards that matched the filters.","type":"array","items":{"$ref":"Card"}},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"ThirdPartyCardProperties":{"description":"ThirdParty communication and opt-in settings. This can be used to change the opt-in state per third-party for a certain card.","id":"ThirdPartyCardProperties","required":["thirdParty"],"properties":{"thirdParty":{"description":"The third party to which this update applies. The third party \u0027custom\u0027 is used as a catch for third party that that is custom to a brand.","type":"string","enum":["gcm","twitter","phone","custom","facebook","vinli","apns","pinterest","instagram","email"]},"optInConfirmed":{"description":"Indicates whether the customer has confirmed their subscription, for example by clicking a confirmation link in a welcome email.","type":"boolean"},"payload":{"description":"Optional. Additional custom data, such as a JSON-encoded string with additional custom data. Max length is 128kb. Value should not be longer than 131072 characters if it\u0027s specified.","type":"string"},"mobileOperatorId":{"description":"Mobile Operator ID of Consumer, otherwise known as the Network ID.  Open Market specific value identifying carrier","type":"string"},"optIn":{"description":"Whether or not the user wants to opt in for this third party channel as an outbound notification medium.","type":"boolean"},"cause":{"description":"Optional. Indicates the reason that led to the opt in or opt out from this third party. This will only be stored in the opt in or opt out event that may follow from this API call, which means passing this value is ignored unless there are opt in preference changes. Passing in a cause of \u0027userOptOut\u0027 will trigger an opt-out notification SMS if used in an opt-out request.","type":"string"},"customData":{"description":"Optional. Can contain any custom data, such as a JSON-encoded string with additional custom data. Max length is 128kb. Only available for custom type. Value should not be longer than 131072 characters if it\u0027s specified.","type":"string"},"categories":{"description":"List of categories this card will be (un)subscribed from, requires optIn to be set to true.","type":"array","items":{"$ref":"ThirdPartyCategory"}},"preventReOptIn":{"description":"Optional, indicates whether the subscription should be not be re-opted-in at the global level if currently opted out. Intended only to be used for batch import customer updates","type":"boolean"},"optInConfirmationRequired":{"description":"Indicate whether this subscription should be confirmed by the customer before it becomes active. Set this to true to comply with Canadian anti-spam laws.","type":"boolean"},"username":{"description":"Optional, currently only used for social media accounts. The username in the scope of the specified third party linked to the selected card number.","type":"string"}}},"SubscriptionListInfo":{"description":"Represents information regarding a brand subscription list.","id":"SubscriptionListInfo","required":["uuid","isPublic","name"],"properties":{"name":{"description":"Name of the list.","type":"string"},"isPublic":{"description":"Whether the list is public. If not public, the list is private.","type":"boolean"},"shortcode":{"description":"For mobile subscription lists that use shortcodes, this field will contain that shortcode.","type":"string"},"uuid":{"description":"UUID of the list.","type":"string"}}},"TransferResponse":{"description":"Used to transfer a card in or out.","id":"TransferResponse","required":["requestRef","success"],"properties":{"balanceMutations":{"description":"Return a list of balance mutations that were transferred, for transfer in requests only","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"TransferredCardLookupResponse":{"description":"Response object for TransferredCardLookup","id":"TransferredCardLookupResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"mostRecentCardNumber":{"description":"Either the most recent card number that the given card number was transferred to, or null if no card found.","type":"string"}}},"AdjustmentStatusDetails":{"description":"Use this object to specify what a card\u0027s status should be updated to.","id":"AdjustmentStatusDetails","required":["newStatus"],"properties":{"newStatus":{"description":"New status of the card. After setting the card to one of these states, adjustments can no longer change the state back to Activated through the API. NOTE: The \u0027Transfer\u0027 status can only be used on child cards! Child cards can only transition into \u0027Transfer\u0027 or \u0027Suspended\u0027.","type":"string","enum":["Lost","Closed","Transfer","Expired","Suspended","Stolen"]}}},"CouponDetailsResponse":{"description":"Response from a couponDetails request.","id":"CouponDetailsResponse","required":["requestRef","success"],"properties":{"couponValueType":{"description":"Optional, can contain the coupon value type.","type":"string"},"firstIssuanceAmount":{"format":"double","description":"Optional, if this is a coupon attached to a card and the card had any issuances for balance specifically for this coupon, this is the amount of balance that was issued during the first issuance to the coupon.","type":"number"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"description":{"description":"Optional, can contain the coupon description.","type":"string"},"isAllocated":{"defaultValue":false,"description":"Whether the coupon has been allocated already.","type":"boolean"},"isUsed":{"defaultValue":false,"description":"Whether this coupon has been used already.","type":"boolean"},"allowedWithCards":{"description":"Optional, can contain a list of card numbers that are allowed to use this coupon. This field is only specified if the coupon has card restrictions on it.","type":"array","items":{"type":"string"}},"couponValue":{"format":"double","description":"Optional, can contain the coupon value. Note - this is not the coupon balance!","type":"number"},"reservedUntil":{"description":"Optional, if the coupon\u0027s usage is currently reserved, this will contain the coupon reservation end date in the format yyyy-MM-dd HH:mm:ss (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"customTags":{"description":"Optional, can contain custom tags associated with the indicated coupon, if the coupon has custom tags associated with it.","type":"array","items":{"type":"string"}},"pin":{"description":"Optional, the coupon PIN","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"attributes":{"description":"Optional, attributes for this coupon. Will be null if there are no attributes stored on this coupon.","type":"array","items":{"$ref":"CouponAttribute"}},"isDisabled":{"defaultValue":false,"description":"Whether the coupon has been disabled. Coupons are only disabled if they have been allocated as part of a two-stage locking checkout, but not yet enabled as the checkout has not yet been completed.","type":"boolean"},"expirationDate":{"description":"Optional, if the coupon has an expiration date on it, this will contain the coupon expiration date in the format yyyy-MM-dd HH:mm:ss (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"PaymentMethod":{"description":"Represents a payment that was made as part of a checkout. Specify at least either the amount and paymentType yourself, an updateBalanceRequestRef or redeemBalance \u003d true.","id":"PaymentMethod","required":[],"properties":{"countAsDiscount":{"defaultValue":false,"description":"If specified and set to true, this payment method will be considered a discount for campaign processing and reporting purposes. Defaults to false. (requires JSON v2)","type":"boolean"},"amount":{"format":"double","description":"The amount that was paid using the specified payment type. Must be a positive amount unless it is used to indicate that the customer received a refund on the provided payment method. Negative amounts may not be used with the redeemBalance, updateBalanceRequestRef and countAsDiscount parameters.","type":"number"},"balanceType":{"description":"The type of balance that this amount represents. Only specify this if redeemBalance is true. (requires JSON v2)","type":"string","enum":["Points","Currency","Punches","Custom"]},"balanceCode":{"description":"If the specified balanceType is Currency or Custom, this field indicates the currency code or custom code of the balance. This field should not be specified, unless balanceType is Currency or Custom, in which case this field is required. (requires JSON v2)","type":"string"},"updateBalanceRequestRef":{"description":"If a previous updateBalance request should be considered a payment method for this checkout, you can reference it by its requestRef. If no paymentType is specified, it will be set to gift in case the updateBalance redeemed currency, and loyalty otherwise. If no amount is specified, it will be set to the amount of the updateBalance request. NOTE: If specified, this should always point to an updateBalance call from the same card that is specified in the checkout request. (requires JSON v2)","type":"string"},"checkoutPaymentAmount":{"format":"double","description":"If this payment method is in a different balance type (e.g. Points) than the checkout\u0027s balance type, this field can be used to specify how much this payment method pays of the checkout total. If not specified, will default to the value from the amount field. Example: 5 points are used to pay for $2 of the checkout, the amount field contains 5 and the checkoutPaymentAmount is 2.  (requires JSON v2)","type":"number"},"receiptInformation":{"description":"Optional - information specific for receipt printing or e-receipt generation that may be provided for payments using currency. When a two-stage checkout is used, this must be provided on the complete checkout call. (requires JSON v2)","$ref":"PaymentReceiptInformation"},"externalCampaignRuleId":{"description":"Optional - if specified, all mutations coming from this payment method will be linked with this external campaign rule. (requires JSON v2)","type":"string"},"paymentType":{"description":"The type of payment that was used, used for reporting purposes. If not specified and updateBalanceRequestRef is defined or redeemBalance is set to true, that will be used to choose between loyalty and gift.","type":"string","enum":["Giftcard","Loyaltycard","EBTVoucher","Bitcoin","Deferred","EBTCash","Check","Visa","DebitCard","Discover","Voyager","Cash","MasterCard","EWIC","WrightExpress","GuaranteedCheck","PHH","DinersClub","EBT","ElectronicCheck","AmericanExpress","Creditcard","BrandedCreditCard","Other"]},"redeemBalance":{"defaultValue":false,"description":"If specified as true, this payment method will actually perform a balance redemption from the card used in this request. If specified as true, balanceType and balanceCode indicate the type of balance to redeem and the amount field will specify how much to redeem. Do not set this field to true if you are also sending in updateBalanceRequestRef.  (requires JSON v2)","type":"boolean"}}},"AllocateCouponResponse":{"description":"Response from AllocateCoupon requests.","id":"AllocateCouponResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"customTags":{"description":"Optional, can contain custom tags associated with the allocated coupon, if the allocation was successful and the coupon had custom tags associated with it.","type":"array","items":{"type":"string"}},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"couponId":{"description":"Will be available if the allocation was successful. This field contains the coupon ID that was allocated.","type":"string"},"allowedWithCards":{"description":"Optional, can contain a list of card numbers that are allowed to use this coupon. This field is only specified if the allocation was successful and the coupon had card restrictions on it.","type":"array","items":{"type":"string"}}}},"ListSubscriptionListsResponse":{"description":"Response from BrandSubscriptionList requests.","id":"ListSubscriptionListsResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"subscriptionLists":{"description":"List of subscription lists and their info.","type":"array","items":{"$ref":"SubscriptionListInfo"}}}},"SearchRequest":{"description":"Used to place Search requests, when searching for cards / customers.","id":"SearchRequest","required":["filters"],"properties":{"forcePinValidation":{"defaultValue":false,"description":"If set to true, a valid pin is always required. This field will be ignored unless the card number has been specified in the filters section.","type":"boolean"},"convertToCurrency":{"description":"The target conversion to which the default currency on the resulting cards should be converted.","type":"string"},"includeInactive":{"defaultValue":false,"description":"Whether inactive cards or child cards should be returned as well. If not specified or set to false, only active cards will be returned. Setting this value to true is only allowed when searching with a cardNumber or customCardNumber and nothing else.","type":"boolean"},"pin":{"description":"Pin for the card, only used if pin validation is needed.","type":"string"},"offset":{"defaultValue":0.0,"format":"int32","description":"Indicate the offset of the returned rows. If set to 1, the first row will be skipped in the output. Value should not be smaller than 0. Value should not be larger than 1000.","type":"integer"},"filterLogicAnd":{"defaultValue":true,"description":"Whether the filters should be applied with boolean AND logic or not. If set to true, use AND logic, if set to false, use OR logic. (requires JSON v2)","type":"boolean"},"childFilters":{"description":"Use the childFilters to filter on specific properties of child cards. If child filters are used, it is usually recommended to specify childCards to be returned in the returnFields field. If specified, only parent cards that have a matching child card will match. Of those matching parent cards, all child cards will still be returned if requested - regardless of these filters.","$ref":"SearchFilters"},"limit":{"defaultValue":10.0,"format":"int32","description":"How many results to return. Value should not be smaller than 1. Value should not be larger than 25.","type":"integer"},"primaryDemographicCaseSensitive":{"defaultValue":false,"description":"Whether the filters for primary demographic fields should use case sensitive matching logic or not. Defaults to false. (requires JSON v2)","type":"boolean"},"filters":{"description":"Use the SearchFilters object to specify the filters you want to use to find a card. If you only use cardNumber or customCardNumber the results will be real-time, otherwise they could be cached.","$ref":"SearchFilters"},"returnFields":{"description":"If specified, this object can be used to indicate which additional information should be returned for matching cards.","$ref":"SearchReturnFields"},"customDemographicCaseSensitive":{"defaultValue":true,"description":"Whether the filters for custom demographic fields should use case sensitive matching logic or not. Defaults to true. (requires JSON v2)","type":"boolean"}}},"CardPersonalOffer":{"description":"Representation of an offer that is available to a card","id":"CardPersonalOffer","required":[],"properties":{"createdDate":{"description":"Date when this offer was added to the card. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"availableDate":{"description":"If set, this is the date when the offer becomes or became available. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"customId":{"format":"int32","description":"Custom ID, in case this personal offer was added through an API call that specified the custom ID.","type":"integer"},"expirationDate":{"description":"If set, this is the date when the offer expires. (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"EventRegistration":{"description":"Representation of a custom event/custom marker that should be added to a card.","id":"EventRegistration","required":["categoryId"],"properties":{"specificId":{"description":"Low level ID for this event\u0027s event type in combination with the categoryID.","type":"string"},"payload":{"description":"Optional, the variable-text payload attached to this event.","type":"string"},"categoryId":{"description":"High level ID for this event\u0027s event type. The associated event type will always be \u0027CUSTOM\u0027.","type":"string"},"eventDate":{"description":"Optional, specify a custom date and time for this new event. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00. If not specified, the current date / time will be used. (format: yyyy-MM-dd HH:mm:ss)","type":"string"}}},"SearchResultEvent":{"description":"Represents an event that is stored on a card.","id":"SearchResultEvent","required":["eventDate","categoryId","eventType"],"properties":{"mailingSpecificId":{"description":"In case the eventType is BOUNCED, this field can hold the specificId of the original mailing event.","type":"string"},"customProperties":{"description":"Optional list of custom properties that were logged on this event.","type":"array","items":{"$ref":"CustomEventProperty"}},"specificId":{"description":"Lower level ID for this event\u0027s event type.","type":"string"},"payload":{"description":"Optional, the variable-text payload attached to this event.","type":"string"},"eventType":{"description":"Event type. E.g. for custom events, this will be CUSTOM.","type":"string"},"mailingCategoryId":{"description":"In case the eventType is BOUNCED, this field can hold the categoryId of the original mailing event.","type":"string"},"categoryId":{"description":"High level ID for this event\u0027s event type.","type":"string"},"eventDate":{"format":"int64","description":"Date and time when this event was logged. The value is the number of milliseconds since January 1, 1970, 00:00:00 GMT.","type":"integer"}}},"ValueTypeResult":{"description":"Can be used to indicate a certain value type, being a balanceType and possibly also a balanceCode. Used in responses sent from the server.","id":"ValueTypeResult","required":["balanceType","scale"],"properties":{"showInTerminal":{"defaultValue":false,"description":" Indicates whether the value type should be displayed on the terminal, even if the balance may be zero.","type":"boolean"},"balanceType":{"description":"The type of balance that this amount represents. If this is Currency or Custom, the balanceCode is also a required field.","type":"string","enum":["Points","Currency","Punches","Custom"]},"balanceCode":{"description":"If the balance type is Currency or Custom, this field indicates the currency code or custom code of the balance. This field will not be included when the balanceType is Points or Punches.","type":"string"},"scale":{"format":"int32","description":"The amount of decimals used for this value type. When updating the balance of this value type, only send in amounts that will not cause the balance to have more decimals than the maximum amount allowed amount. If scale is set to 2, updating balance with 0.1 or for instance 0.01 is allowed, but updating balance with 0.001 is not. This value is typically in the range 0-2.","type":"integer"},"balanceCodeDisplay":{"description":"If the balance type is Custom, this field indicates the code display of the value type. This field will not be included when the balanceType is Currency, Points or Punches.","type":"string"}}},"CheckoutProduct":{"description":"Represents the purchase of a certain amount of a specific SKU in a checkout. The purchase of multiple SKUs with the same unit price within one checkout can be combined into one CheckoutProduct. Can be considered equivalent to a checkout \u0027line item\u0027.","id":"CheckoutProduct","required":["sku"],"properties":{"skuName":{"description":"SKU Name to describe the SKU. This field should never be specified in a request, but is only intended for CheckoutLookup responses that return this object.","type":"string"},"unitPrice":{"defaultValue":0.0,"format":"double","description":"Price per unit of this product that was paid. Product total is unitPrice * amountPurchased. Should be a positive number, larger than or equal to 0. If you discount unit prices outside of Clutch campaigns and do not send them in with preDiscounts, send in the price after your own discount. Do not include any Clutch-triggered discounts in this price though.","type":"number"},"note":{"description":"Optional, an extra note to add to this SKU. Max length is 32. This field can\u0027t be used in reporting or segmentation, but can contain custom information for future checkout lookups. Value should not be longer than 32 characters if it\u0027s specified.","type":"string"},"amountPurchased":{"defaultValue":1.0,"format":"double","description":"Product quantity that was purchased. Should be a positive number, larger than or equal to 0.","type":"number"},"orderMode":{"format":"int32","description":"Optional order mode flag on a line item level. This can be used to override an order mode that is specified on the checkout itself. (requires JSON v2)","type":"integer"},"parentSequenceId":{"format":"int32","description":"Optional sequence id of the parent of this checkout product. Required to be set, along with the parent\u0027s sequenceId property, for checkout products that have a nesting.","type":"integer"},"unitCost":{"format":"double","description":"Cost price per unit of this product for reporting purposes, will override unit cost that was specified in your catalog data. If specified, should be equal to or greater than 0 - it can be smaller than 0, but this is not recommended.","type":"number"},"sku":{"description":"SKU that identifies the product. Should be a non-empty value.","type":"string"},"sequenceId":{"defaultValue":0.0,"format":"int32","description":"Optional one based index that identifies the position of this product in the list of line items. When left blank it will be populated by the API based on the input order and may later be communicated back when a specific line item is discounted. It is recommended to use the same value for checkouts and returns of a specific product.","type":"integer"},"properties":{"description":"Optional, list of custom properties for this SKU. Only use this if your brand uses a custom SKU property model. (requires JSON v2)","type":"array","items":{"$ref":"CheckoutProductProperty"}}}},"ChannelKeyValuesType":{"description":"Represents custom key values for a subscription.","id":"ChannelKeyValuesType","required":["name","value"],"properties":{"name":{"description":"The attribute name of the key value.","type":"string"},"value":{"description":"The value.","type":"string"}}},"GeneratePassLinkResponse":{"description":"Response from GeneratePassLink requests.","id":"GeneratePassLinkResponse","required":["requestRef","success"],"properties":{"linkCode":{"description":"Link code (requires JSON v2)","type":"string"},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"expiration":{"defaultValue":0.0,"format":"int64","description":"Expiration date in epoch milliseconds (requires JSON v2)","type":"integer"}}},"AllocateChildCardRequest":{"description":"Request to allocate a child card, used to place allocateChildCard requests.","id":"AllocateChildCardRequest","required":["childCardNumber","cardNumber"],"properties":{"childCardNumber":{"description":"Child card number to allocate. The card number has to be unique within the root card, and it is recommended to also keep it unique across all root cards. Length should be between 3 and 36 characters (inclusive), and cannot contain commas. Value should not be shorter than 3 characters if it\u0027s specified. Value should not be longer than 36 characters if it\u0027s specified.","type":"string"},"cardNumber":{"description":"Root card number of the card that needs to get a new child card allocated under it.","type":"string"}}},"CheckoutResponse":{"description":"Response from Checkout requests.","id":"CheckoutResponse","required":["requestRef","success"],"properties":{"checkoutTotalBeforeDiscount":{"format":"double","description":"Checkout total before any discounts are applied, based on checkoutTotal in request, or sum of SKU prices.","type":"number"},"blockingCoupons":{"description":"If this checkout is returning with success set to false and errorCode 27 (invalid coupons), this field will contain a list of the coupons that were preventing the checkout from executing. Also, if removeBlockingCoupons was set to true, this will contain a list of coupons that were removed before processing to prevent an error from being returned.","type":"array","items":{"type":"string"}},"unlockedSetupTransactionId":{"description":"Optional, if the request specified ignoreLocks \u003d true, and a lock was found, this field will contain the transaction ID of the previous checkout setup that was unlocked.","type":"string"},"unusedOptions":{"description":"If one or more of the campaignChoices values that were provided in the request were unused, either due to an invalid quantity, invalid identifier or invalid combination being provided, then this list will contain the options that were not used. (requires JSON v2)","type":"array","items":{"$ref":"CampaignChoice"}},"childCardNumber":{"description":"Child card number of the loyalty card that was used in this request. Field will not be present for anonymous checkouts or checkouts that didn\u0027t specify a child card number. (requires JSON v2)","type":"string"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"totalEarnExcluded":{"format":"double","description":"Checkout total before discounts that was excluded from earning rewards, only returned when there were excluded products.","type":"number"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"totalBurnExcluded":{"format":"double","description":"Checkout total before discounts that was excluded from burning (spending) rewards, only returned when there were excluded products.","type":"number"},"issuedCouponIDs":{"description":"Optional, i.e. is not always included in the response, this can contain an array of issued coupon IDs if the checkout was a checkout complete call and the underlying campaigns issued any coupons.","type":"array","items":{"type":"string"}},"transactionId":{"description":"Use this for debug reference. The transaction ID will be unique for every API call.","type":"string"},"recommendedProducts":{"description":"Recommended products. (requires JSON v2)","type":"array","items":{"$ref":"RecommendedProduct"}},"availableOptions":{"description":"Available campaign options that the user could select. NOTE: This will only be returned for checkout setup calls. (requires JSON v2)","type":"array","items":{"$ref":"CampaignOption"}},"responseObjects":{"description":"Additional information relating to the responseMessages - only used if there are response messages present. Will only be returned if returnResponseObjects is set to true on the request. This can also contain message that are intended to be printed on the receipt - such messages will be excluded from the responseMessage property in the checkout response","type":"array","items":{"$ref":"ResponseObject"}},"balances":{"description":"All real balances for the specified loyalty card, at the end of this checkout. For checkout setup requests, this will not include any balance updates from campaigns. This will only be included in the response if returnBalances was set to true.","type":"array","items":{"$ref":"CardBalance"}},"balanceMutations":{"description":"All balance mutations that were caused by campaigns that were active during this checkout. Will contain hypothetical balance updates in case of a checkout setup request. This will only be included if returnBalanceMutations was set to true. Note: Will also contain balance mutations caused by payment methods.","type":"array","items":{"$ref":"CampaignBalanceMutation"}},"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"unusedCoupons":{"description":"If this checkout is returning with success set to false and errorCode 52 (coupons not used), this field will contain a list of the coupons that were not used by campaigns. This field is also included if success is true, but some coupons that were sent in and were usable were not used by campaigns.","type":"array","items":{"type":"string"}},"totalDiscount":{"format":"double","description":"Total discount given based on campaigns.","type":"number"},"barcode":{"description":"Barcode for the checkout. Will only be returned for anonymous checkouts where it was specified in the request","type":"string"},"cardNumber":{"description":"Card number of the loyalty card that was used in this request. Field will not be present for anonymous checkouts.","type":"string"},"responseMessages":{"description":"All messages that can be returned to the customer / end user - only used if campaigns trigger any of these.","type":"array","items":{"type":"string"}}}},"TriggerCampaignRuleRequest":{"description":"Request to place a triggerCampaignRule request.","id":"TriggerCampaignRuleRequest","required":["campaignRuleUUID","cardNumber","triggeringUUID","campaignUUID"],"properties":{"deviceType":{"description":"Optional, can be populated with a specific device type to be used for any communication events that could get created during this API call.","type":"string"},"campaignUUID":{"description":"Campaign UUID of the campaign to trigger.","type":"string"},"childCardNumber":{"description":"Child card number for which to trigger a campaign rule. This is optional - only specify this if a campaign rule is executing at a child card level.","type":"string"},"triggeringUUID":{"description":"UUID of this triggering.","type":"string"},"campaignRuleUUID":{"description":"Campaign rule UUID of the campaign rule to trigger.","type":"string"},"cardNumber":{"description":"Card number for which to trigger a campaign rule.","type":"string"}}},"ReactivateRequest":{"description":"Used to reactivate a suspended card.","id":"ReactivateRequest","required":["cardNumber"],"properties":{"forcePinValidation":{"defaultValue":false,"description":"If set to true, a valid pin is always required for the specified card. This pin always applies to the card specified by cardNumber. Pin validation is not used for the card indicated by oldCardNumber","type":"boolean"},"pin":{"description":"Pin for the specified card, only used if pin validation is needed.","type":"string"},"childCardNumber":{"description":"The child card to reactivate, if not null, will activate the child card instead of the parent card","type":"string"},"cardNumber":{"description":"The card number to reactivate.","type":"string"}}},"CouponAttribute":{"description":"Representation of a coupon attribute.","id":"CouponAttribute","required":["attributeName"],"properties":{"intValue":{"format":"int32","description":"Integer value of this attribute. Specified if and only if the data type of this attribute is an integer.","type":"integer"},"attributeName":{"description":"API name of this attribute.","type":"string"},"strValue":{"description":"String value of this attribute. Specified if and only if the data type of this attribute is a string.","type":"string"}}},"CreateEventTypeResponse":{"description":"Response object for createEventType requests.","id":"CreateEventTypeResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"SuspicionStats":{"description":"Life cycle statistics object for a single customer.","id":"SuspicionStats","required":[],"properties":{"distinctLocations":{"defaultValue":0.0,"format":"int64","description":"Number of locations shopped at in time interval.","type":"integer"},"totalSpend":{"format":"double","description":"Total spend (in dollars) on valid checkouts in time period.","type":"number"},"averageDaysBetweenPurchase":{"defaultValue":0.0,"format":"int64","description":"Average days between valid purchases in specified time interval.","type":"integer"},"suspicionScore":{"defaultValue":0.0,"format":"int64","description":"Measure of how suspicious is this card\u0027s recent activity, from 0 to 100. Score of 1 is least likely to be suspicious. 100 is most likely to be suspicious. Score of 0 or null means N/A because card has no purchases in time interval under consideration","type":"integer"},"frequency":{"defaultValue":0.0,"format":"int64","description":"Number of purchases in specified time interval.","type":"integer"}}},"ReactivateResponse":{"description":"Used to reactivate a suspended card.","id":"ReactivateResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"EnrolledProgram":{"description":"The details of the program that a card is enrolled to.","id":"EnrolledProgram","required":[],"properties":{"name":{"description":"The descriptive name of the program.","type":"string"},"enrollmentDate":{"description":"The date the card was enrolled to the program. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"programId":{"description":"Unique identifier to program type.","type":"string"}}},"ReturnResponse":{"description":"Response from returnMerchandise requests.","id":"ReturnResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"CampaignChoice":{"description":"Representation of a choice that a user made for execution of a certain campaign rule.","id":"CampaignChoice","required":["choiceGroupId","optionId"],"properties":{"choiceGroupId":{"description":"Choice group ID for this option.","type":"string"},"optionId":{"description":"Selected option. If a user wants to select multiple different options, this should be represented by multiple CampaignChoice objects with identical choiceGroupIds but different optionId values.","type":"string"}}},"SendEmailTemplateRequest":{"description":"Send an email template","id":"SendEmailTemplateRequest","required":["templateId","cardNumber","senderId","subscriptionListId"],"properties":{"senderId":{"description":"The sender ID used to retrieve sender email.","type":"string"},"subscriptionListId":{"description":"The subscription list ID.","type":"string"},"templateId":{"description":"The ID of the template to send out.","type":"string"},"cardNumber":{"description":"Card number of the recipient","type":"string"}}},"TransactionReceiptInformation":{"description":"Optional transaction specific receipt information.","id":"TransactionReceiptInformation","required":[],"properties":{"registerId":{"description":"Optional, store specific identifier for the register or lane processing the transaction. Value should not be longer than 9 characters if it\u0027s specified. (requires JSON v2)","type":"string"},"transactionId":{"description":"Optional, local or POS-specific transaction identifier that may differ from the global transaction id. Value should not be longer than 16 characters if it\u0027s specified. (requires JSON v2)","type":"string"}}},"ValueType":{"description":"Can be used to indicate a certain value type, being a balanceType and possibly also a balanceCode. Used in requests sent to the server.","id":"ValueType","required":["balanceType"],"properties":{"balanceType":{"description":"The type of balance that this amount represents. If this is Currency or Custom, the balanceCode is also a required field.","type":"string","enum":["Points","Currency","Punches","Custom"]},"balanceCode":{"description":"If the balance type is Currency or Custom, this field indicates the currency code or custom code of the balance. This field will not be included when the balanceType is Points or Punches.","type":"string"}}},"SurveyResponse":{"description":"Representation of a response to a single survey.","id":"SurveyResponse","required":["displayName","surveyId","instanceId"],"properties":{"date":{"defaultValue":0.0,"format":"int64","description":"Date in which survey response was submitted","type":"integer"},"surveyId":{"description":"Survey ID","type":"string"},"sentDate":{"description":"The date when the user first received a link to complete this survey. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"instanceId":{"description":"Survey registration instance ID","type":"string"},"fieldResponses":{"description":"Responses to all fields in the survey. If a field is not included in this list, it was not filled out in the response.","type":"array","items":{"$ref":"SurveyFieldResponse"}},"locationExternalId":{"description":"The external location ID","type":"string"},"displayName":{"description":"Display name for the survey","type":"string"},"responseChannel":{"description":"The response channel the user responded to when completing this survey.","type":"string","enum":["phone","direct","email","push"]}}},"ListRequestsResponse":{"description":"Response for listRequests call. Will also return successfully if no requests matched.","id":"ListRequestsResponse","required":["requestRefs","requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"requestRefs":{"description":"List of requestRefs that match the requested externalTransactionID.","type":"array","items":{"type":"string"}},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"}}},"LifeCycleStats":{"description":"Life cycle statistics object for a single customer.","id":"LifeCycleStats","required":[],"properties":{"daysUntilAtRisk":{"defaultValue":0.0,"format":"int64","description":"Days until a customer is estimated to be at risk.","type":"integer"},"daysSinceMostRecentPurchase":{"defaultValue":0.0,"format":"int64","description":"Days since customer last made a checkout. Does not include voids or returns.","type":"integer"},"daysUntilChurn":{"defaultValue":0.0,"format":"int64","description":"Days until a customer is estimated to have churned.","type":"integer"},"lifeCycleState":{"description":"Whether a customer is active, at risk of churning, or churned.","type":"string","enum":["ATRISK","ACTIVE","CHURNED","NONE"]}}},"CardHistoryResponse":{"description":"Response from CardHistory requests.","id":"CardHistoryResponse","required":["requestRef","success"],"properties":{"requestRef":{"description":"Unique request reference, can be used for debugging or tracking individual requests / responses.","type":"string"},"oldestTransaction":{"description":"Date and time of the overall oldest transaction for the specified card, in the format yyyy-MM-dd HH:mm:ss. If it is not being returned and you would like to access this field, please contact Clutch. (requires JSON v2) (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"stats":{"description":"Only included if includeStats \u003d true in the request. Will include statistical information about the customer. (requires JSON v2)","$ref":"CustomerStats"},"newestTransaction":{"description":"Date and time of the overall most recent transaction for the specified card, in the format yyyy-MM-dd HH:mm:ss. If it is not being returned and you would like to access this field, please contact Clutch. (requires JSON v2) (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"success":{"defaultValue":false,"description":"Success flag, true means the request was successfully processed.","type":"boolean"},"errorMessage":{"description":"Error message, can be included if success is false. This field can provide some human-readable insights into the request failure.","type":"string"},"errorCode":{"format":"int32","description":"Error code, will only be included if success is false. See the JSON API documentation for all possible error codes and their meanings.","type":"integer"},"matchCount":{"format":"int32","description":"Amount of transactions that match the conditions. (requires JSON v2)","type":"integer"},"transactionCount":{"format":"int32","description":"Total amount of transactions on the specified card, not restricted to only the matching transactions. If it is not being returned and you would like to access this field, please contact Clutch. (requires JSON v2)","type":"integer"},"transactions":{"description":"A list of all matching transactions. At most 100 transactions will be returned within the specified date range. Matching transactions will be shown in descending order of processed time.","type":"array","items":{"$ref":"HistoricTransaction"}},"lifeCycleStats":{"description":"Only included if includeLifeCycleStats \u003d true in the request. Will include information about the customer\u0027s life cycle status. (requires JSON v2)","$ref":"LifeCycleStats"},"suspicionScoreStats":{"description":"Only included if includeSuspicionScoreStatistics \u003d true in the request. Will include how suspicious purchase activity on this card is, from 1 to 100. (requires JSON v2)","$ref":"SuspicionStats"}}},"CardBalanceAmount":{"description":"This object represents an amount in a certain balance type that needs to be added to or removed from a card.","id":"CardBalanceAmount","required":["balanceType"],"properties":{"amount":{"format":"double","description":"Numerical balance amount. Should always be positive, unless this is a deliberate negative issuance/redemption inside an adjustment transaction.","type":"number"},"balanceType":{"description":"The type of balance that this amount represents.","type":"string","enum":["Points","Currency","Punches","Custom"]},"balanceCode":{"description":"If the balance type is Currency or Custom, this field indicates the currency code or custom code of the balance. This field should not be specified, unless balanceType is Currency or Custom, in which case this field is required.","type":"string"},"convertToMainCurrency":{"description":"In case of redemptions, this variable can optionally be set to true if the specified amount should be converted from the currency specified in the request and actually redeemed from the balance in the native currency on the card.","type":"boolean"}}},"TransferredCardLookupRequest":{"description":"Used to look up the most recent or active card in use for a transferred card number.","id":"TransferredCardLookupRequest","required":["cardNumber"],"properties":{"cardNumber":{"description":"The card number of the card that was transferred.","type":"string"}}},"CommunicationRow":{"description":"Represents a communication activity row for a card. This is typically an incoming or outgoing message","id":"CommunicationRow","required":["timestamp","flags"],"properties":{"experimentVariant":{"format":"int32","description":"If this communication resulted from a multi-variant experiment (A/B tests, etc), this will indicate the variant that was sent. Will be 0 for the first variant, 1 for the next, etc.","type":"integer"},"clickedNamedLinks":{"description":"Optional, named links that were clicked for this communication. This only applies to shortlinks.","type":"array","items":{"type":"string"}},"longcode":{"description":"Longcode associated with this communication, if this applies.","type":"string"},"flags":{"description":"List of flags that are associated with this communication activity row.","type":"array","items":{"type":"string","enum":["Opened","ClearFailure","Clicked","Delivered","FallbackSent","Failed","ExperimentIncluded","Received","MessageCapBlocked","AdditionalPart","Spam","Bounced","InvalidTime","ExperimentExcluded","Sent"]}},"name":{"description":"Optional, the name that goes with this communication row. Will be null in cases such as inbound communication activity.","type":"string"},"clickedNumberedLinks":{"description":"Optional, numbered links that were clicked for this communication. The first link in a communication starts at 0.","type":"array","items":{"format":"int32","type":"integer"}},"channelType":{"description":"Channel type, e.g. email, phone, direct (snailmail), etc.","type":"string","enum":["Email","Mail","PhoneSms","PhoneMms","Other"]},"communicationType":{"description":"Communication activity type, e.g. triggered by API traffic, blast (periodical campaign or other blast), a reply (either to an incoming message or an automated reply based on API activity, such as an SMS optin API request) or an inbound communication (from customer to Clutch)","type":"string","enum":["Response","Triggered","Blast","Inbound"]},"templateId":{"description":"Optional, templateId for outgoing messages","type":"string"},"inboundMessage":{"description":"In case of inbound messages, this will contain the inbound message contents. Will be abbreviated if this was an inbound mobile message exceeding 255 characters.","type":"string"},"experimentType":{"description":"Type of experiment, will only be specified if this communication activity is related to an experiment (A/B test, holdout test, etc).","type":"string","enum":["Holdout","Multivariant"]},"timestamp":{"format":"int64","description":"Date and time when this communication activity happened. The value is the number of milliseconds since January 1, 1970, 00:00:00 GMT.","type":"integer"}}},"DiscountProduct":{"description":"Represents the discount of a certain amount of a specific SKU in a checkout. If supplied the matching checkout product (sku and unitPrice) must be supplied in the products array on checkout","id":"DiscountProduct","required":["sku"],"properties":{"unitPrice":{"defaultValue":0.0,"format":"double","description":"Price per unit of this product that was paid.","type":"number"},"quantityDiscounted":{"defaultValue":1.0,"format":"double","description":"Product quantity that was discounted. Should be a positive number, larger than or equal to 0.","type":"number"},"sku":{"description":"SKU that identifies the product. Should be a non-empty value.","type":"string"},"sequenceId":{"format":"int32","description":"Sequence id of the SKU that identifies the specific product that the discount should apply to. May be left empty but it is recommended specifying the value.","type":"integer"}}},"ChannelCategoryType":{"description":"Represents a subscription category.","id":"ChannelCategoryType","required":["optIn","category"],"properties":{"optIn":{"defaultValue":false,"description":"Subscribed status for category.","type":"boolean"},"category":{"description":"The category of list for a channel.","type":"string"}}},"CustomerUpdates":{"description":"Represents an update request for one or more properties of a customer tied to a card. Any property that is specified is a field on the customer object that is requested to be updated, so do not specify values for fields that should not be updated.","id":"CustomerUpdates","required":[],"properties":{"birthday":{"description":"Birthday, in the format yyyy-MM-dd, e.g. 1900-01-01. Passing in 0000-00-00 erases a previously set birthday.","type":"string"},"lastName":{"description":"Last name, max length is 90 Value should not be longer than 90 characters if it\u0027s specified.","type":"string"},"country":{"description":"Country code, max length is 2 Value should not be longer than 2 characters if it\u0027s specified.","type":"string"},"gender":{"description":"Gender","type":"string","enum":["F","M"]},"address2":{"description":"Address line 2, max length is 100 Value should not be longer than 100 characters if it\u0027s specified.","type":"string"},"city":{"description":"City, max length is 75 Value should not be longer than 75 characters if it\u0027s specified.","type":"string"},"mobileOperatorId":{"description":"Mobile Operator Id, max length is 18. Open Market\u0027s Operator ID or an empty string Value should not be longer than 18 characters if it\u0027s specified.","type":"string"},"address1":{"description":"Address line 1, max length is 100 Value should not be longer than 100 characters if it\u0027s specified.","type":"string"},"latitude":{"format":"double","description":"Latitude in degrees, value from 90 to -90. Positive values are north of the equator, negative values are south of the equator. Precision is 6 decimals. Value should not be smaller than -90. Value should not be larger than 90.","type":"number"},"firstName":{"description":"First name, max length is 40 Value should not be longer than 40 characters if it\u0027s specified.","type":"string"},"mobilePhone":{"description":"Mobile phone number, max length is 18. Must be a valid phone number in E.164 format, or an empty string Value should not be longer than 18 characters if it\u0027s specified.","type":"string"},"sequenceNr":{"format":"int32","description":"Sequence Number.","type":"integer"},"profileType":{"description":"Vertical for this customer. Passing in an empty string will unset this property.","type":"string"},"phone":{"description":"Phone number, max length is 18. Must be a valid phone number in E.164 format, or an empty string Value should not be longer than 18 characters if it\u0027s specified.","type":"string"},"affiliatedLocations":{"description":"List of external location IDs customer is affiliated with.","$ref":"CustomerUpdatesStringList"},"middleName":{"description":"Middle name, max length is 40 Value should not be longer than 40 characters if it\u0027s specified.","type":"string"},"state":{"description":"State name, full name is allowed, max length is 75 Value should not be longer than 75 characters if it\u0027s specified.","type":"string"},"postal":{"description":"Postal code, max length is 10 Value should not be longer than 10 characters if it\u0027s specified.","type":"string"},"anniversary":{"description":"Anniversary, in the format yyyy-MM-dd, e.g. 2000-01-01.","type":"string"},"email":{"description":"Email address, max length is 320 Value should not be longer than 320 characters if it\u0027s specified.","type":"string"},"longitude":{"format":"double","description":"Longitude in degrees, value from 180 to -180. Positive values are east of the prime meridian, negative values are west of the prime meridian. Precision is 6 decimals. Value should not be smaller than -180. Value should not be larger than 180.","type":"number"}}},"CouponDetailsRequest":{"description":"Used to place a couponDetails request, which can give information about the status of an individual coupon or change its state","id":"CouponDetailsRequest","required":["couponId","action"],"properties":{"reserveUntil":{"description":"If the action is set to reserve, this field is required and indicates the point in time until which this coupon will be unusable except by releaseReservation or useReservation. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00. This field can be at most 10 years into the future and cannot be in the past. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"newAttributes":{"description":"Optional, new attributes to set on the coupon","type":"array","items":{"$ref":"CouponAttribute"}},"newCustomTags":{"description":"Optional, if this value is present in the request and is not null, the custom tags of the specified coupon will be set to this value. If this value is an empty array, the custom tags will be reset. This value can be used with any action.","type":"array","items":{"type":"string"}},"action":{"description":"Action to take with the specified coupon. Allocated coupons can be flagged as used (use) or not yet used (unuse). For reserved usage, coupons can be reserved (reserve), reservations can be used (useReservation) or released (releaseReservation).","type":"string","enum":["releaseReservation","use","reserve","details","unuse","useReservation","delete"]},"newAllowedCards":{"description":"Optional, if this value is present in the request and is not null, the allowedWithCards field of the specified coupon will be set to this value. If this value is an empty array, the allowedWithCards fields will be reset. This value can be used with any action. An empty array means any card can use the coupon, an array with one or more card number means usage in checkouts is restricted to the indicated card numbers.","type":"array","items":{"type":"string"}},"couponId":{"description":"Coupon ID of the coupon to get details for. Must be a coupon that has not yet expired.","type":"string"},"newExpirationDate":{"description":"Optional, if this value is present in the request and is not null, the expiration date on the coupon will be updated to this date. Can only update expiration dates on coupons that haven\u0027t expired yet. Format as: yyyy-MM-dd HH:mm:ss, e.g. 2000-01-01 00:00:00. Cannot be in the past. (format: yyyy-MM-dd HH:mm:ss)","type":"string"},"cardNumber":{"description":"Card number of loyalty card this coupon is allocated for. Optional field, only specify to update coupon expiration date or for when redeeming coupon.","type":"string"},"newPin":{"description":"Optional, new PIN to set on the coupon Value should not be longer than 20 characters if it\u0027s specified.","type":"string"}}}},"apiVersion":"1.0.26","swaggerVersion":"1.2","basePath":"https://api.clutch.com","apis":[{"path":"/merchant/cardHistory","operations":[{"summary":"Retrieve the activity history for a card","method":"POST","nickname":"cardHistory","type":"CardHistoryResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"CardHistoryRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Retrieve the activity history for a card"},{"path":"/merchant/returnMerchandise","operations":[{"summary":"API call to log merchandise returns.","method":"POST","nickname":"returnMerchandise","type":"ReturnResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"ReturnRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"API call to log merchandise returns."},{"path":"/merchant/listRequests","operations":[{"summary":"List all requests matching a given externalTransactionId header.","method":"POST","nickname":"listRequests","type":"ListRequestsResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"ListRequestsRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"List all requests matching a given externalTransactionId header."},{"path":"/merchant/checkout","operations":[{"summary":"Handle a checkout","method":"POST","nickname":"checkout","type":"CheckoutResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"CheckoutRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Handle a checkout"},{"path":"/merchant/allocateCoupon","operations":[{"summary":"Allocate a coupon","method":"POST","nickname":"allocateCoupon","type":"AllocateCouponResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"AllocateCouponRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Allocate a coupon"},{"path":"/merchant/listEventTypes","operations":[{"summary":"List all custom event types that have been set up.","method":"POST","nickname":"listEventTypes","type":"ListEventTypesResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"ListEventTypesRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"List all custom event types that have been set up."},{"path":"/merchant/reactivate","operations":[{"summary":"Reactivate a suspended card","method":"POST","nickname":"reactivate","type":"ReactivateResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"ReactivateRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Reactivate a suspended card"},{"path":"/merchant/addPersonalOffer","operations":[{"summary":"Add a Personal Offer to a Card","method":"POST","nickname":"addPersonalOffer","type":"AddPersonalOfferResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"AddPersonalOfferRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Add a Personal Offer to a Card"},{"path":"/merchant/allocate","operations":[{"summary":"Allocate a Card","method":"POST","nickname":"allocate","type":"AllocateResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"AllocateRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Allocate a Card"},{"path":"/merchant/triggerCustomCampaigns","operations":[{"summary":"Manually trigger all campaign rules with trigger \u0027custom\u0027.","method":"POST","nickname":"triggerCustomCampaigns","type":"TriggerCustomCampaignResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"TriggerCustomCampaignRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Manually trigger all campaign rules with trigger \u0027custom\u0027."},{"path":"/merchant/generatePassLink","operations":[{"summary":"Generate a link code for a Wallet Pass for a card","method":"POST","nickname":"generatePassLink","type":"GeneratePassLinkResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"GeneratePassLinkRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Generate a link code for a Wallet Pass for a card"},{"path":"/merchant/allocateChildCard","operations":[{"summary":"Allocate a child card","method":"POST","nickname":"allocateChildCard","type":"AllocateChildCardResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"AllocateChildCardRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Allocate a child card"},{"path":"/merchant/sendEmailTemplate","operations":[{"summary":"Send an email template.","method":"POST","nickname":"sendEmailTemplate","type":"SendEmailTemplateResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"SendEmailTemplateRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Send an email template."},{"path":"/merchant/search","operations":[{"summary":"Find a card or customer","method":"POST","nickname":"search","type":"SearchResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"SearchRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Find a card or customer"},{"path":"/merchant/updateBalance","operations":[{"summary":"Update balance of a card","method":"POST","nickname":"updateBalance","type":"UpdateBalanceResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"UpdateBalanceRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Update balance of a card"},{"path":"/merchant/listSubscriptionLists","operations":[{"summary":"Get a brand\u0027s subscription lists by type","method":"POST","nickname":"listSubscriptionLists","type":"ListSubscriptionListsResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"ListSubscriptionListsRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Get a brand\u0027s subscription lists by type"},{"path":"/merchant/voidTransaction","operations":[{"summary":"Void an old request / transaction.","method":"POST","nickname":"voidTransaction","type":"VoidResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"VoidRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Void an old request / transaction."},{"path":"/merchant/renderTemplate","operations":[{"summary":"Render a campaign template for a card","method":"POST","nickname":"renderTemplate","type":"RenderTemplateResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"RenderTemplateRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Render a campaign template for a card"},{"path":"/merchant/subscriptionDetails","operations":[{"summary":"Subscription details","method":"POST","nickname":"subscriptionDetails","type":"SubscriptionDetailsResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"SubscriptionDetailsRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Subscription details"},{"path":"/merchant/updateAccount","operations":[{"summary":"Update an Account","method":"POST","nickname":"updateAccount","type":"UpdateAccountResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"UpdateAccountRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Update an Account"},{"path":"/merchant/transfer","operations":[{"summary":"Transfer a card\u0027s balances and activity to another card. This call is used to first transfer out the old card and then transfer in to another card.","method":"POST","nickname":"transfer","type":"TransferResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"TransferRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Transfer a card\u0027s balances and activity to another card. This call is used to first transfer out the old card and then transfer in to another card."},{"path":"/merchant/offerActivity","operations":[{"summary":"Get offer activity for a card","method":"POST","nickname":"offerActivity","type":"OfferActivityResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"OfferActivityRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Get offer activity for a card"},{"path":"/merchant/listValueTypes","operations":[{"summary":"Find all available value types for a card or card set","method":"POST","nickname":"listValueTypes","type":"ListValueTypesResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"ListValueTypesRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Find all available value types for a card or card set"},{"path":"/merchant/logPushEvent","operations":[{"summary":"Log a push event to a card","method":"POST","nickname":"logPushEvent","type":"LogPushEventResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"LogPushEventRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Log a push event to a card"},{"path":"/merchant/createEventType","operations":[{"summary":"Create a new event type definition.","method":"POST","nickname":"createEventType","type":"CreateEventTypeResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"CreateEventTypeRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Create a new event type definition."},{"path":"/merchant/communicationActivity","operations":[{"summary":"Get communication activity for a card","method":"POST","nickname":"communicationActivity","type":"CommunicationActivityResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"CommunicationActivityRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Get communication activity for a card"},{"path":"/merchant/couponDetails","operations":[{"summary":"Coupon details","method":"POST","nickname":"couponDetails","type":"CouponDetailsResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"CouponDetailsRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Coupon details"},{"path":"/merchant/checkoutLookup","operations":[{"summary":"Get information about a previous checkout","method":"POST","nickname":"checkoutLookup","type":"CheckoutLookupResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"CheckoutLookupRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Get information about a previous checkout"},{"path":"/merchant/requestLookup","operations":[{"summary":"Get information about a previous request","method":"POST","nickname":"requestLookup","type":"RequestLookupResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"RequestLookupRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Get information about a previous request"},{"path":"/merchant/transferredCardLookup","operations":[{"summary":"Get the most recent card number of a transferred card","method":"POST","nickname":"transferredCardLookup","type":"TransferredCardLookupResponse","parameters":[{"paramType":"body","name":"body","description":"Request body","type":"TransferredCardLookupRequest","required":true},{"paramType":"header","name":"brand","type":"string","required":true},{"paramType":"header","name":"location","type":"string","required":true},{"paramType":"header","name":"terminal","type":"string","required":true},{"paramType":"header","name":"employee","type":"string","required":false},{"paramType":"header","name":"employeePassword","type":"string","required":false},{"paramType":"header","name":"customRequestId","type":"string","required":false},{"paramType":"header","name":"externalTransactionId","type":"string","required":false}],"responseMessages":[{"code":200,"message":"Valid request."},{"code":400,"message":"Invalid request body."},{"code":403,"message":"Invalid credentials."},{"code":500,"message":"Invalid request. See the error code in the response body if there is one for a more detailed explanation."}]}],"description":"Get the most recent card number of a transferred card"}],"resourcePath":"/merchant","produces":["application/json"],"consumes":["application/json"]}