---
title: "Open"
method: POST
path: "/connect/wallet/open"
tags: ["Wallet"]
---

# Open

`POST /connect/wallet/open`

This API endpoint allows the calling application to open an AIR Wallet by providing an Identity Value (if no identity is passed then the end point can be configured to operate in unidentified customer mode). AIR will check if provided Identity Value is genuine, active and known to AIR; and if so - return details of Wallet(s) and details for presented Wallet Identity. Additionally the calling application could instruct AIR to return additional data related to returned default Entities, like `walletConsumer`, other `walletIdentities` from the same Wallet, list available `walletAccounts` from the same Wallet, etc. Additionally the calling application could instruct AIR to perform `Analyse Basket` and to return back a list of suggestions what are the applicable offers for that Consumer, based on configured in AIR rules and provided Consumer's Basket Content or even request a more sophisticated action like `Adjudicate Basket` where AIR would return adjudicated Basket Object with applied applicable promotions, offers, etc.

## Headers

- `Accept-Encoding` '''' | ''gzip'' | ''deflate'' | ''gzip,deflate'' | ''deflate,gzip'', string
- `Connection` 'keep-alive' | 'close', string
- `Content-Type` string, string
- `X-EES-AUTH-CLIENT-ID` string, string, required
- `X-EES-AUTH-HASH` string, string, required
- `X-EES-TRANSACTION-ID` string, string
- `X-CUSTOM-SUBSYSTEM-ID` string, string
- `X-CUSTOM-KEY` string, string
- `X-POSCONNECT-TRANSACTION-DATETIME` string, eesDateTime

## Request body

- object
  - `identity` object, nullable — Identifies a customer, whether scanned or typed. Optional for cases where a customer is unknown. Without an identity, objects such as wallet and identity will not be possible.
    - `identityValue` string, string — Identity Value
  - `reference` string, string — Merchant Reference (please note this reference has to be unique). In combination with `lock`, analysed accounts can be locked using this reference
  - `location` LocationEntity
    - `location` string, string — [Optional] Outlet incoming identifier where Transaction has happened
  - `basket` object
    - `type` 'STANDARD', required
    - `summary` StandardBasketSummaryEntity
      - `totalItems` integer, required — Basket Items count
      - `totalBasketValue` integer, required — Total Basket monetary Value after discounts, denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
      - `totalDiscountAmount` object
        - `promotions` integer, nullable — Promotions Discount Amount. If basket adjustment adds to discounts, this amount will be added to
        - `staff` integer, nullable — Staff Discount Amount
        - `general` integer, nullable — General Discount Amount
      - `totalQualifyingAmount` object, nullable
        - `points` integer — Basket Monetary Value for Loyalty Points calculations
        - `baseEarn` integer — Basket Monetary Value used for calculating base earn, overriding totalBasketValue. Adheres to basket discounts
        - `promotions` integer — Basket Monetary Value for Promotion Offer selections
        - `discount` integer — Basket Monetary Value for Discount calculations
        - `staff` integer — Basket Monetary Value for Staff Discount or Promotions
      - `totalTaxAmount` integer — Total Tax Amount denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
      - `adjustmentRules` AdjustmentRulesBasketEntity
        - `externalAdjustment` boolean — Whether a discount has already been applied to this basket by a POS before calling EE.<br> This is purely for information and no action is taken with the data.
        - `externalAdjustmentReason` string — An external reason why a discount has already been applied to this basket by a POS before calling EE.<br> This is purely for information and no action is taken with the data.
        - `ignore` boolean — If set to true the transaction is not eligible for any additional basket level discounts.
      - `adjustmentResults` object[]
        - `resourceType` 'CAMPAIGN' — EES Resource Type
        - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
        - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
        - `success` boolean, nullable
        - `type` 'redeem' | 'createRedeem' — Operation Type
        - `value` integer — Operation Amount
        - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
        - `relatedAccountIds` string[]
        - `targetedAccountId` string, string — EES AIR Account ID
        - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
        - `multiItem` string[]
        - `totalDiscountAmount` integer — The monetary effect of the discount in the lowest unit of currency
        - `totalMatchingUnits` integer — The number of products the adjustment was applied to
        - `instanceId` string, string — A mechanism to distinguish each individual reward that has been given for any account
      - `redemptionChannel` string, string — The redemption channel used for this request
    - `contents` OpenBasketContentsCollectionEntity — unresolved $ref
    - `payment` object[], nullable
      - `tenderType` string, string, required — Tender type - predefined by Eagle Eye
      - `amount` integer, required — Monetary amount of payment in lowest unit of currency
      - `bin` string, string — The bin for the tender
      - `identifier` string, string — An identifying value of what was scanned, could be a token, barcode, gift-card
  - `includeAdditionalEntities` object — This optional attribute allows to instruct AIR to include additional and related entities.
    - `consumer` object
    - `identities` object
  - `lock` boolean — Optional boolean flag, allowing the calling application to instruct AIR to lock the accounts in the transaction. A `reference` must be passed which will be used to lock the transactions
  - `examine` object[] — List the tokens to be used with the basket (optional)
    - `value` string, string, required — Unique identifier to analyse
    - `type` 'TOKEN', required — Denotes the type of the unique identifier
  - `excludedAccounts` object[], nullable — List the accounts to exclude from analysis (optional)
    - `value` string, string, required — Unique identifier to exclude from analysis - Either the campaign/scheme tag or accountId
    - `type` 'ACCOUNT' | 'TAG', string, required — Denotes the type of the unique identifier
  - `includedAccounts` object[], nullable — List the accounts to include in the analysis - all other accounts excluded (optional)
    - `value` string, string, required — Unique identifier to include in the analysis - Either the campaign/scheme tag or accountId
    - `type` 'ACCOUNT' | 'TAG', string, required — Denotes the type of the unique identifier
  - `options` OpenOptionsEntity
    - `adjudicatePointsSpend` OpenAdjudicatePointsSpendEntity
      - `enabled` boolean, required — Determine if points spend adjudication should be completed in the open call
      - `includeOpenOffers` boolean — Determine if open Spend Rate Modifier coupons should be included in the analysis
      - `overrideTransactionCapabilities` boolean — If set to true, the spend adjudication will be completed regardless of the output from the transactionCapabilities analysis. If set to false, analysis will only be performed if transactionCapabilities.loyalty.spend is true.
      - `overrideTransactionCapabilitiesDisallowSpend` boolean — If set to true, the spend adjudication will be disabled regardless of any other settings. Can not be true if overrideTransactionCapabilities is true.
      - `hideSpendRateModifierAccounts` boolean — If set to true, it will hide the accounts that are spend rate modifiers in the response.
    - `adjustBasket` OpenAdjustBasketEntity — This option instructs AIR to perform Basket Adjustment.
      - `enabled` boolean, required — Whether to carry out basket adjust.
      - `includeOpenOffers` boolean — Whether to include open offers.
      - `hideAccounts` boolean — If set to true, it will hide the accounts that are discount offer type in the response.
    - `analyseBasket` OpenAnalyseBasketEntity — This option instructs AIR to perform Basket Analyse.
      - `enabled` boolean, required — Whether to carry out basket analysis. Replaces "perform"
      - `perform` boolean
      - `includeOpenOffers` boolean
      - `rateName` string — The rate used for calculating base earn if you want to override the default
      - `hideAccounts` boolean — If set to true, it will hide the accounts that are not discount offer, nor spend rate modifier, nor loyalty points type in the response.
      - `hidePointsAccounts` boolean — If set to true, it will hide the accounts that are loyalty points type in the response.
    - `thirdPartyAdjudication` ThirdPartyAdjudicationEntity — If this optional request attribute is available and `enabled` is set to true, and a valid `mode` is provided then third party adjudication will be performed. This option cannot be enabled while `adjustBasket` and/or `analyseBasket` are set to true. If this happens an error will be returned.
      - `enabled` boolean, required — If set to `true`, third party adjudication will be performed.
      - `mode` 'AVAILABLE' | 'ELIGIBLE', required — Determines the third party adjudication mode to be performed. This option is required when `enabled` is set to `true` otherwise an error is returned.
      - `includeOpenOffers` boolean — When `true` includes open offers in the third party adjudication processing. This option cannot be enabled for the `AVAILABLE` mode otherwise an error is returned.
    - `storeBasket` StoreBasketEntity — If this optional request attribute is available and enabled is set to true, and if unique `reference` is provided then analysed basket contents will be stored in wallet transaction
      - `enabled` boolean, required — When true stores basket in wallet transaction
    - `lockTimeOverride` LockTimeOverrideEntity, nullable — If this optional attribute is set and lock is true, will override the unit's default lock time with the number of seconds in the request
      - `CAMPAIGN` integer — The number of seconds that coupons should be locked for, minimum 1 second.
      - `SCHEME` integer — The number of seconds that points should be locked for, minimum 1 second.
  - `walletTransactionOverride` WalletTransactionOverrideEntity — Contains key-value pairs that are used to override some default transaction values. If the value or the key is not configured for the unit or invalid then it will fallback to the default.
    - `type` string, string — Wallet transaction type

## Response `200`

EES AIR has successfully processed a Request

- OpenWalletResponse
  - `wallet` WalletEntity, required
    - `walletId` string, required — Wallet ID
    - `friendlyName` string, required — Friendly Name of the Wallet
    - `status` 'ACTIVE' | 'SUSPENDED' | 'INACTIVE', required — Status of the Wallet.
    - `type` string, required — `TYPE` of that particular wallet. Could be defined per AIR Tenant as part of the Client Onboarding process and then used, if this list is not defined only NULL values are available.
    - `state` string, required — `STATE` of that particular wallet. Could be defined per AIR Tenant as part of the Client Onboarding process and then used, if this list is not defined only NULL values are available.
    - `relationships` WalletRelationshipsEntity, required
      - `parent` string[] — an Array of Wallet IDs that current Wallet should be / is parent
      - `child` string[] — an Array of Wallet IDs that current Wallet should be / is child
      - `associate` string[] — an Array of existing Wallet IDs that current Wallet should be / is associated to
      - `donor` string[] — an Array of existing Wallet IDs that current Wallet is donating into
    - `meta` MetaEntity, required
      - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
      - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
    - `dateCreated` string, date-time, required — Wallet creation date time
    - `lastUpdated` string, date-time, required — Wallet last updated date time
  - `identity` WalletIdentityEntity, required
    - `identityId` string, required — EES AIR Wallet Identity ID
    - `walletId` string, required — EES AIR Wallet ID
    - `type` string, required — Type of the Identity, list of possible enum values could be defined per Client as part of the Onboarding process.
    - `friendlyName` string, required — Wallet Identity friendly name
    - `value` string, required — Wallet Identity value
    - `safeValue` string, required — Identity Safe Value (e.g. "original value salted and hashed") - safeValue could be than used in external systems like analytics, referencing original identity, provide uniqueness within a retailer, but without exposing sensitive information like card number.
    - `secret` string, required — Wallet Identity secret
    - `dates` DatesEntity, required
      - `start` string, date-time
      - `end` string, date-time
    - `meta` MetaEntity, required
      - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
      - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
    - `state` string, required — Wallet Identity state, list of possible values could be defined and set-up per Client during Onboarding process.
    - `status` 'ACTIVE' | 'DELETED' | 'SUSPENDED' | 'LOST' | 'STOLEN' | 'INACTIVE', required — Identity status
    - `dateCreated` string, date-time, required — Date this identity was created
    - `lastUpdated` string, date-time, required — Date this identity was last updated
    - `mobileWallet` string, required — A url that can be used to add this identity to a mobile wallet (like Apple Wallet and Google Pay)
  - `accounts` object[], required
    - `accountId` string, string, nullable, required — EES AIR Account ID. (Please note for open offers this field will be null)
    - `walletId` string, string, nullable, required — EES AIR Wallet ID. (Please note for non-wallet Clients this value will be empty)
    - `campaignId` string, required — The Campaign ID (Scheme ID, Programme ID or Plan ID) this Account belongs to.
    - `campaign` object, required — The campaign payload. See campaign documentation for details.
      - `campaignId` string — The Campaign ID (Scheme ID, Programme ID or Plan ID) this Account belongs to.
      - `campaignTypeId` string — The Campaign type ID of this campaign.
      - `campaignMode` 'OPEN' | 'RESTRICTED' — Determines if the campaign operates in open or restricted mode.
      - `campaignName` string — The name of the campaign.
      - `accountTypeId` integer — Account Type ID (EES Internal Type Reference).
      - `startDate` string, ees-date-time — Start date of the campaign.
      - `endDate` string, ees-date-time, nullable — End date of the campaign.
      - `status` 'ACTIVE' | 'INACTIVE' | 'EXPIRED' | 'DELETED' | 'PENDING' | 'DRAFT' | 'REJECTED' | 'READY' | 'STOPPED' | 'SUSPENDED' — The status of the Campaign.
      - `sequenceKey` string, nullable — The value of the barcode.
      - `reference` string, string, nullable — A reference string that is unique to this campaign.
      - `dateCreated` string, ees-date-time — Date that this campaign was created on.
      - `lastUpdated` string, ees-date-time — Date that this campaign was last updated.
      - `relationships` object, nullable
        - `OBJECTIVE_OF` object, nullable
          - `CAMPAIGN` object[]
            - `campaignId` string — The ID of the campaign that this campaign is an objective of.
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `OBJECTIVE` object, nullable
          - `CAMPAIGN` object[]
            - `campaignId` string — The campaign ID of the objective campaign
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `ENTITLEMENT` object, nullable
          - `CAMPAIGN` object[]
            - `accountId` string — The campaignId that the entitlement accounts will be created from.
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `ENTITLEMENT_OF` object, nullable
          - `PLAN` object[]
            - `campaignId` string — The campaignId of the plan that uses this campaign to create entitlement accounts.
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `AGGREGATE_CHILD` object, nullable
          - `SCHEME` object[]
            - `campaignId` string — The campaignId of the scheme that is a child of this scheme.
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `AGGREGATE_CHILD_OF` object, nullable
          - `SCHEME` object[]
            - `campaignId` string — The campaignId of the scheme that this is the child of.
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `PROMOTION` object, nullable
          - `CAMPAIGN` object[]
            - `campaignId` string — The campaignId of promotions a customer maybe eligible for..
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
        - `PROMOTION_OF` object, nullable
          - `CAMPAIGN` object[]
            - `campaignId` string — The campaignId of the multi-discount coupon that triggers rewards from this campaign.
            - `dateCreated` string, ees-date-time — The date that this relationship was created on.
    - `type` 'ECOUPON' | 'VOUCHER' | 'STAMP_CARD' | 'PAPER' | 'DEBIT' | 'PLASTIC' | 'POINTS' | 'BASIC_SUBSCRIPTION' | 'CONTINUITY', required — EES AIR Wallet Account Type.
    - `clientType` string, string, nullable, required — Account Client's type, managed per EES AIR tenant, list of possible enum values could be set-up as part of the Onboarding process. (Please note&#58; for non-wallet Clients this value will be empty)
    - `status` 'ACTIVE' | 'BLOCKED' | 'CANCELLED' | 'DELETED' | 'EXPIRED' | 'INACTIVE' | 'INVALIDATED' | 'LOCKED' | 'STOLEN' | 'USED', required — Account Status
    - `state` string, string, nullable, required — Account State, managed per EES AIR tenant, list of possible enum values could be set-up as part of the Onboarding process. (Please note&#58; for non-wallet Clients this value will be empty)
    - `dates` DatesEntity, required
      - `start` string, date-time
      - `end` string, date-time
    - `accountMeta` MetaEntity, required
      - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
      - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
    - `balances` AccountBalancesEntity, required — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
      - `available` integer — The available balance. This is applicable for all account types, except POINTS and CONTINUITY, which uses its own balance keys. For ECOUPON account type this property will be returned and will be equal to zero.
      - `refundable` integer — The refundable balance. This is applicable for all account types except POINTS and CONTINUITY, but is not used during account creation. For an Account Entity, the amount displayed here is the total refundable balance available. Please note for ECOUPON account type this property will be returned and equal to zero.
      - `totalSpend` integer — The total spend balance. Applicable only to CONTINUITY type Accounts. If totalSpend is not provided on creation, this will be set to 0.
      - `transactionCount` integer — The transaction counter. Applicable only to CONTINUITY type Accounts. If transactionCount is not provided on creation, this will be set to 0.
      - `current` integer — The current balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
      - `usable` integer — The usable balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
      - `locked` integer — The locked balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
      - `lifetime` integer — The lifetime balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
    - `overrides` union, required
      - CouponAccountOverridesEntity, nullable
        - `offer` object, required — Account's Offer Override (applicable for `COUPON` Account type)
          - `reward` object, nullable, required — Account's Offer Reward Override
            - `discountValue` number, float, nullable — EES AIR Account Override&#58; Discount Value
            - `discountPercentage` number, float, nullable — EES AIR Account Override&#58; Discount Percentage
            - `creditAmount` number, float, nullable — EES AIR Account Override&#58; Credit Amount
            - `finalAmount` number, float, nullable — EES AIR Account Override&#58; Final Amount
            - `percentageAmount` number, float, nullable — EES AIR Account Override&#58; Percentage Amount
          - `qualification` object, required — Account's Offer Qualification Override (Structure TBC)
        - `campaign` object, nullable, required — Campaign Rules Override (applicable for `COUPON` Account type )
          - `rules` object
            - `couponLimit` integer, nullable — Limit of Maximum number of times a Coupon Account can be redeemed
      - ContinuityAccountOverridesEntity, nullable — Account Override for Continuity Type Account.
        - `continuityQualification` object, nullable — Overrides for continuity qualification.
          - `totalTransactionCount` integer, nullable — Account override for totalTransactionCount - Only valid if campaign uses totalTransactionCount.
          - `totalTransactionSpend` integer, nullable — Account override for totalTransactionSpend - Only valid if campaign uses totalTransactionSpend.
          - `totalTransactionUnits` integer, nullable — Account override for totalTransactionUnits - Only valid if campaign uses totalTransactionUnits.
        - `reward` object, nullable — Overrides for continuity rewards
          - `creditAmount` integer — Account override for the amount of points to be awarded.
    - `dateCreated` string, ees-date-time, required — Account Creation Date-Time (Atom format)
    - `lastUpdated` string, ees-date-time, required — Account Last Update Date-Time (Atom format)
    - `enriched` union, required
      - CampaignAccountEnrichment
        - `enrichmentType` 'COUPON', required
        - `campaignName` string, string, required — Campaign Name
        - `campaignReference` string, string, required — Campaign Reference
        - `qualifier` object[], nullable, required
        - `token` string, string, nullable — Token
        - `reward` object, nullable, required
          - `offerId` string, string, nullable, required — Offer ID
          - `offerName` string, string, nullable, required — Offer Name
          - `posReference` string, string, nullable, required — Offer reference (Promo Id)
        - `custom` object, nullable — Configured custom form fields in key-value pair format, grouped by form
        - `restrictions` object
          - `limits` object
            - `period` object[]
              - …
            - `creditsPerPeriod` object[]
              - …
            - `rewardsPerPeriod` object[]
              - …
        - `redemptionWindows` object
          - `rolling` WindowEntity[], nullable
            - `startDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required — Window definition Start Day (Weekday name)
            - `startTime` string, time, required — Window definition Start Time (in 24h format)
            - `endDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required — Window definition End Day (Weekday name)
            - `endTime` string, time, required — Window definition End Time (in 24h format)
          - `exclusions` ExclusionWindowEntity[], nullable
            - `start` string, ees-date-time, required — Exclusion Window Start (ATOM format)
            - `end` string, string, required — Exclusion Window End (ATOM format)
      - ProgrammeAccountEnrichment
        - `enrichmentType` 'PROGRAMME', required
        - `programmeName` string, string, required — Programme Name
        - `programmeReference` string, string, required — Programme Reference
        - `token` string, string, nullable — Token
      - PointsAccountEnrichment
        - `enrichmentType` 'POINTS', required
        - `schemeName` string, string, required — Scheme Name
        - `schemeReference` string, string, required — Scheme Reference
        - `properties` object
          - `redemptionRates` object, nullable — Scheme Redemption Rates
          - `goodwill` object, nullable — Scheme Goodwill
          - `credit` object, nullable — Scheme Redemption Rates
          - `debit` object, nullable — Scheme Debit
          - `details` object, nullable — Scheme Details
          - `earnRates` object, nullable — Scheme Earn Rates
          - `baseEarn` object, nullable — Scheme Base Earn
          - `pointsExpiry` object, nullable
            - `validTo` string, date-time — Time at which the points expire.
            - `points` integer — Number of points.
      - StampAccountEnrichment
        - `enrichmentType` 'STAMP', required
        - `schemeName` string, string, required — Scheme Name
        - `schemeReference` string, string, required — Scheme Reference
        - `properties` object
      - ContinuityAccountEnrichment
        - `token` string, nullable — The account's token
        - `qualifier` object — The campaign's qualifications
          - `continuity` object
            - `totalTransactionCount` integer, nullable — The number of transactions required to qualify for this coupon.
            - `totalTransactionSpend` integer, nullable — The total spend amount required to qualify for this coupon.
            - `totalTransactionUnits` integer, nullable — Account override for totalTransactionUnits - Only valid if campaign uses totalTransactionUnits.
        - `reward` object, nullable
          - `offerId` string, string, nullable, required — Offer ID
          - `offerName` string, string, nullable, required — Offer Name
          - `posReference` string, string, nullable, required — Offer reference (Promo Id)
        - `custom` object, nullable — Configured custom form fields in key-value pair format, grouped by form
        - `restrictions` object
          - `limits` object
            - `period` object[]
              - …
        - `redemptionWindows` object
          - `rolling` WindowEntity[], nullable
            - `startDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required — Window definition Start Day (Weekday name)
            - `startTime` string, time, required — Window definition Start Time (in 24h format)
            - `endDay` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required — Window definition End Day (Weekday name)
            - `endTime` string, time, required — Window definition End Time (in 24h format)
          - `exclusions` ExclusionWindowEntity[], nullable
            - `start` string, ees-date-time, required — Exclusion Window Start (ATOM format)
            - `end` string, string, required — Exclusion Window End (ATOM format)
        - `enrichmentType` 'CONTINUITY', required
        - `campaignName` string, string, required — Campaign Name.
        - `campaignReference` string, string, required — Campaign Reference.
  - `additionalEntities` object, required
    - `consumer` object, nullable
      - `consumerId` string, required — EES AIR Wallet Consumer ID
      - `walletId` string, required — EES AIR Wallet ID
      - `friendlyName` string, required — Wallet Consumer Friendly Name
      - `type` string, required — Wallet Consumer type. Types are managed per retailer base and could be set-up as part of the Onboarding process.
      - `status` 'ACTIVE' | 'DELETED', required — Wallet Consumer status.
      - `state` string, required — Wallet Consumer State. States are managed per retailer base and could be set-up as part of the Onboarding process.
      - `data` union, required — Additional Wallet Consumer Data. Please note Wallet Consumer Data structure could be defined within AIR per Client. If this structure is defined, AIR can provide validation of content using regular expressions.
        - object — Older key/value pair consumer data.
          - `key` object[]
            - `key1` unknown
            - `key2` unknown
        - object — Structured data for a consumer.
          - `key` object[]
            - `name` string
            - `segments` object[]
              - …
      - `meta` MetaEntity, required
        - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
        - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
      - `dateCreated` string, date-time, required — Date this Wallet Consumer was created
      - `lastUpdated` string, date-time, required — Date this Wallet Consumer was last updated
    - `identities` WalletIdentityEntity[]
      - `identityId` string, required — EES AIR Wallet Identity ID
      - `walletId` string, required — EES AIR Wallet ID
      - `type` string, required — Type of the Identity, list of possible enum values could be defined per Client as part of the Onboarding process.
      - `friendlyName` string, required — Wallet Identity friendly name
      - `value` string, required — Wallet Identity value
      - `safeValue` string, required — Identity Safe Value (e.g. "original value salted and hashed") - safeValue could be than used in external systems like analytics, referencing original identity, provide uniqueness within a retailer, but without exposing sensitive information like card number.
      - `secret` string, required — Wallet Identity secret
      - `dates` DatesEntity, required
        - `start` string, date-time
        - `end` string, date-time
      - `meta` MetaEntity, required
        - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
        - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
      - `state` string, required — Wallet Identity state, list of possible values could be defined and set-up per Client during Onboarding process.
      - `status` 'ACTIVE' | 'DELETED' | 'SUSPENDED' | 'LOST' | 'STOLEN' | 'INACTIVE', required — Identity status
      - `dateCreated` string, date-time, required — Date this identity was created
      - `lastUpdated` string, date-time, required — Date this identity was last updated
      - `mobileWallet` string, required — A url that can be used to add this identity to a mobile wallet (like Apple Wallet and Google Pay)
  - `transactionCapabilities` object, nullable — Outlines the capabilities that a customer is allowed to complete in a transaction. This is an instruction to the POS, for example, to display the spend points options back to the customer.
    - `loyalty` object — Outlines the allowed capabilities of the customer for loyalty based operations.
      - `earn` boolean — States if the customer is in a state of being able to earn points in a transaction.
      - `spend` boolean — States if the customer is in a state of being able to spend points in the transaction.
  - `spendAdjudicationResults` object, nullable, required
    - `pointsValue` integer — The total number of points available to spend aggregated from ALL available points accounts.
    - `pointsRemainder` integer — Any points that are not able to be spent due to spend rules configured against the scheme.
    - `monetaryValue` integer — The calculated financial value of the points. This will be calculated from the rules configured against the relevant points schemes for each points account.
    - `operations` object[]
      - `resourceType` 'SCHEME' | 'CAMPAIGN', required
      - `resourceId` string, string, required — The ID of the campaign or scheme related to this operation.
      - `accountId` string, string, required — The account ID to apply the operation against.
      - `walletId` string, string, required — The wallet id in which the target account is housed.
      - `operationType` 'spend' | 'credit' | 'redeem' | 'createRedeem', required
      - `value` integer, required — The value for which the intended operation should be completed.
      - `details` object, nullable — Key-value pairs to apply to the account transaction.
      - `balances` object, nullable — Required if a operation type is spend or credit.
        - `current` integer — The value to credit or spend in the intended operation. This value is the number of points to be spent.
        - `lifetime_spend` integer — The value to add to the lifetime spend balance of the points account. Required if the operationType is "spend". This value is the number of points to be spent.
        - `lifetime_spend_value` integer — The value to add to the lifetime spend value balance field of the points account. Required if the operationType is "spend". This value is the monetary value of the points to be spent.
      - `appliedTier` SpendTierEntity
        - `floor` integer — Spend Tier lower limit
        - `ceiling` integer — Spend Tier upper limit
        - `step` integer, nullable — Spend Tier increments that points can be spent in (e.g. if points can be exchanged at 5,000, 10,000, 15,000 and so on, the `step` should be equal 5,000)
        - `rate` number, float, nullable — Spend Tier Exchange Rate (for example if `rate=0.1` would indicate each point is worth 1/10 of smallest currency denomination, i.e. 1/10 of a penny or a cent)
        - `bonus` integer — Spend Tier bonus to be added to the exchange value if this Tier definition is used.
        - `pointsBack` integer, nullable — Spend Tier number of points to be credited back to the points account following a points spend transaction if this Tier definition is used.
    - `excludedProducts` object — A list of all Scheme Ids which exclude products with their corresponding product identifiers.
  - `analyseBasketResults` object, nullable, required
    - `basket` EnrichedBasketEntity
      - `type` 'ENRICHED', required
      - `summary` object, required
        - `totalItems` integer, required — Basket Items count
        - `totalBasketValue` integer, required — Total Basket monetary Value after discounts, denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
        - `totalQualifyingAmount` object, nullable
          - `points` integer, nullable — Basket Monetary Value for Loyalty Points calculations
          - `baseEarn` integer — Basket Monetary Value used for calculating base earn, overriding totalBasketValue. Adheres to basket discounts
          - `promotions` integer, nullable — Basket Monetary Value for Promotion Offer selections
          - `discount` integer, nullable — Basket Monetary Value for Discount calculations
          - `staff` integer, nullable — Basket Monetary Value for Staff Discount or Promotions
        - `totalTaxAmount` integer, nullable — Total Tax Amount denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
        - `totalDiscountAmount` object
          - `promotions` integer, nullable — Promotions Discount Amount. If basket adjustment adds to discounts, this amount will be added to
          - `staff` integer, nullable — Staff Discount Amount
          - `general` integer, nullable — General Discount Amount
        - `fulfilledBaseEarn` object[] — Records the base earn points rewarded to customer during mid fulfil requests.
          - `targetedAccountId` string, string — EES AIR Account ID.
          - `points` integer — Total value of base earn points rewarded.
        - `adjustmentRules` AdjustmentRulesEntity
          - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
          - `externalAdjustmentReason` string — The reason for externalAdjustment
          - `ignore` boolean — Ignore object as if not sent
        - `tenderResults` object[]
          - `resourceType` 'CAMPAIGN' — EES Resource Type
          - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem' | 'createRedeem' — Operation Type
          - `value` integer — Operation Amount
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccountIds` string[]
          - `targetedAccountId` string, string — EES AIR Account ID
          - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
          - `multiItem` string[]
          - `totalTenderAmount` integer — The amount of tender value in the lowest unit of currency
        - `adjustmentResults` object[]
          - `resourceType` 'CAMPAIGN' — EES Resource Type
          - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem' | 'createRedeem' — Operation Type
          - `value` integer — Operation Amount
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccountIds` string[]
          - `targetedAccountId` string, string — EES AIR Account ID
          - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
          - `multiItem` string[]
          - `totalDiscountAmount` integer — The monetary effect of the discount in the lowest unit of currency
          - `totalMatchingUnits` integer — The number of products the adjustment was applied to
          - `instanceId` string, string — A mechanism to distinguish each individual reward that has been given for any account
        - `bounceBackResults` object[]
          - `resourceType` 'CAMPAIGN' — EES Resource Type
          - `resourceId` string, string — EES AIR Campaign Id
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem'
          - `value` integer — Value of transaction
          - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
            - `available` integer — The available balance. This is applicable for all account types, except POINTS and CONTINUITY, which uses its own balance keys. For ECOUPON account type this property will be returned and will be equal to zero.
            - `refundable` integer — The refundable balance. This is applicable for all account types except POINTS and CONTINUITY, but is not used during account creation. For an Account Entity, the amount displayed here is the total refundable balance available. Please note for ECOUPON account type this property will be returned and equal to zero.
            - `totalSpend` integer — The total spend balance. Applicable only to CONTINUITY type Accounts. If totalSpend is not provided on creation, this will be set to 0.
            - `transactionCount` integer — The transaction counter. Applicable only to CONTINUITY type Accounts. If transactionCount is not provided on creation, this will be set to 0.
            - `current` integer — The current balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
            - `usable` integer — The usable balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `locked` integer — The locked balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `lifetime` integer — The lifetime balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
          - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccounts` string[]
          - `targetAccountId` string, string — EES AIR Account ID
        - `qualifiesResults` object[] — If an offer was buy a pizza and get a free garlic bread, the pizza would have this entity against it
          - `totalMatchingUnits` integer — The number of products forming part of the offer's qualification
          - `totalMatchingSpend` integer — The monetary value this product contributes towards the offer's qualification
          - `instanceId` string, string — The reference back to the offer reward which these qualifiers relate
        - `adjudicationResults` object[]
          - `resourceType` 'CAMPAIGN' | 'PROGRAMME' | 'SCHEME' — EES Resource Type
          - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem' | 'credit' | 'debit' | 'earn' | 'spend' — Operation Type
          - `value` integer — Operation Amount (please note&#58; value and balances attributes are mutually exclusive)
          - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
            - `available` integer — The available balance. This is applicable for all account types, except POINTS and CONTINUITY, which uses its own balance keys. For ECOUPON account type this property will be returned and will be equal to zero.
            - `refundable` integer — The refundable balance. This is applicable for all account types except POINTS and CONTINUITY, but is not used during account creation. For an Account Entity, the amount displayed here is the total refundable balance available. Please note for ECOUPON account type this property will be returned and equal to zero.
            - `totalSpend` integer — The total spend balance. Applicable only to CONTINUITY type Accounts. If totalSpend is not provided on creation, this will be set to 0.
            - `transactionCount` integer — The transaction counter. Applicable only to CONTINUITY type Accounts. If transactionCount is not provided on creation, this will be set to 0.
            - `current` integer — The current balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
            - `usable` integer — The usable balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `locked` integer — The locked balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `lifetime` integer — The lifetime balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
          - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccounts` string[]
          - `targetedAccountId` string, string — EES AIR Account ID
          - `totalMatchingUnits` integer, nullable — The minimum number of products required to trigger offer
        - `results` EnrichedBasketSummaryResultsEntity
          - `points` object
            - `spend` integer — Total value of points spent during transaction
            - `debit` integer — Total value of points debited during transaction
            - `refund` integer — Total value of points clawed-back during refund transaction
            - `totalPointsTaken` integer — Sum of all negative balance actions (spend + debit + refund)
            - `earn` integer — Total value of points earned during transaction
            - `credit` integer — Total value of points credited during transaction
            - `totalPointsGiven` integer — Sum of all positive balance actions (earn + credit)
            - `totalMonetaryValue` integer — Monetary value of points using Scheme rules
            - `redemptionChannel` string, string — The redemption channel used for this request
        - `redemptionChannel` string, string — The redemption channel used for this request
      - `contents` object[], nullable
        - `sku` string, string — Item SKU
        - `upc` string, string — Item SKU
        - `salesKey` 'SALE' | 'REFUND' | 'FULFIL' — `SALE`/`REFUND`/`FULFIL` Flag
        - `description` string, string — Product Name
        - `itemUnitCost` integer — Item Price per unit, denominated to a smaller currency unit
        - `itemUnitMetric` 'LITRES' | 'GRAMS' | 'MILLILITERS' | 'KILOGRAMS' | 'POUNDS' | 'OUNCES' | 'PIECE' | 'EACH' — The metric in which the item is measure (nullable)
        - `itemUnitCount` number — Item Quantity
        - `itemFulfilmentCount` number, nullable — Number Of Items Fulfilled
        - `itemUnitDiscount` integer — Discount per Item
        - `totalUnitCost` integer — Total cost for this item
        - `totalUnitCostAfterDiscount` integer — Total cost for this item after discount (please note this does not take into account whole basket discounts)
        - `taxRate` number, float — The rate of tax being applied to this item (percentage)
        - `taxAmount` integer — Tax Amount for that item, denominated to a smallest currency unit
        - `qualifies` object, nullable
          - `discount` boolean, required — Determines if the item is eligible for discounting
          - `points` boolean, required — Determines if the item is eligible for points
        - `meta` MetaEntity
          - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
          - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
        - `adjustmentRules` AdjustmentRulesEntity
          - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
          - `externalAdjustmentReason` string — The reason for externalAdjustment
          - `ignore` boolean — Ignore object as if not sent
        - `adjustmentResults` object[]
          - `resourceType` 'CAMPAIGN' — EES Resource Type
          - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem' | 'createRedeem' — Operation Type
          - `value` integer — Operation Amount
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccountIds` string[]
          - `targetedAccountId` string, string — EES AIR Account ID
          - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
          - `multiItem` string[]
          - `totalDiscountAmount` integer — The monetary effect of the discount in the lowest unit of currency
          - `totalMatchingUnits` integer — The number of products the adjustment was applied to
          - `instanceId` string, string — A mechanism to distinguish each individual reward that has been given for any account
        - `tenderResults` object[]
          - `resourceType` 'CAMPAIGN' — EES Resource Type
          - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem' | 'createRedeem' — Operation Type
          - `value` integer — Operation Amount
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccountIds` string[]
          - `targetedAccountId` string, string — EES AIR Account ID
          - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
          - `multiItem` string[]
          - `totalTenderAmount` integer — The amount of tender value in the lowest unit of currency
        - `bounceBackResults` object[]
          - `resourceType` 'CAMPAIGN' — EES Resource Type
          - `resourceId` string, string — EES AIR Campaign Id
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem'
          - `value` integer — Value of transaction
          - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
            - `available` integer — The available balance. This is applicable for all account types, except POINTS and CONTINUITY, which uses its own balance keys. For ECOUPON account type this property will be returned and will be equal to zero.
            - `refundable` integer — The refundable balance. This is applicable for all account types except POINTS and CONTINUITY, but is not used during account creation. For an Account Entity, the amount displayed here is the total refundable balance available. Please note for ECOUPON account type this property will be returned and equal to zero.
            - `totalSpend` integer — The total spend balance. Applicable only to CONTINUITY type Accounts. If totalSpend is not provided on creation, this will be set to 0.
            - `transactionCount` integer — The transaction counter. Applicable only to CONTINUITY type Accounts. If transactionCount is not provided on creation, this will be set to 0.
            - `current` integer — The current balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
            - `usable` integer — The usable balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `locked` integer — The locked balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `lifetime` integer — The lifetime balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
          - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccounts` string[]
          - `targetAccountId` string, string — EES AIR Account ID
        - `qualifiesResults` object[] — If an offer was buy a pizza and get a free garlic bread, the pizza would have this entity against it
          - `totalMatchingUnits` integer — The number of products forming part of the offer's qualification
          - `totalMatchingSpend` integer — The monetary value this product contributes towards the offer's qualification
          - `instanceId` string, string — The reference back to the offer reward which these qualifiers relate
        - `contributionResults` object[], nullable — If an offer was spend £30 get £5 off, this entity would be against each of the products contributing to the £5 off, with their combined `value`s adding up to the £5.
          - `value` integer — The proportional contribution to the discount/points given
          - `instanceId` string, string — The reference back to the offer which these items contributed
        - `adjudicationResults` object[]
          - `resourceType` 'CAMPAIGN' | 'PROGRAMME' | 'SCHEME' — EES Resource Type
          - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
          - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
          - `success` boolean, nullable
          - `type` 'redeem' | 'credit' | 'debit' | 'earn' | 'spend' — Operation Type
          - `value` integer — Operation Amount (please note&#58; value and balances attributes are mutually exclusive)
          - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
            - `available` integer — The available balance. This is applicable for all account types, except POINTS and CONTINUITY, which uses its own balance keys. For ECOUPON account type this property will be returned and will be equal to zero.
            - `refundable` integer — The refundable balance. This is applicable for all account types except POINTS and CONTINUITY, but is not used during account creation. For an Account Entity, the amount displayed here is the total refundable balance available. Please note for ECOUPON account type this property will be returned and equal to zero.
            - `totalSpend` integer — The total spend balance. Applicable only to CONTINUITY type Accounts. If totalSpend is not provided on creation, this will be set to 0.
            - `transactionCount` integer — The transaction counter. Applicable only to CONTINUITY type Accounts. If transactionCount is not provided on creation, this will be set to 0.
            - `current` integer — The current balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
            - `usable` integer — The usable balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `locked` integer — The locked balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0.
            - `lifetime` integer — The lifetime balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0.
          - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
          - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
          - `relatedAccounts` string[]
          - `targetAccountId` string, string — EES AIR Account ID
          - `totalMatchingUnits` integer, nullable — The minimum number of products required to trigger offer
        - `relatedContents` object[] — Recursive list of contents related to the parent item with the same schema as this object.
          - `sku` string, string — Item SKU
          - `upc` string, string — Item SKU
          - `salesKey` 'SALE' | 'REFUND' | 'FULFIL' — `SALE`/`REFUND`/`FULFIL` Flag
          - `description` string, string — Product Name
          - `itemUnitCost` integer — Item Price per unit, denominated to a smaller currency unit
          - `itemUnitMetric` 'LITRES' | 'GRAMS' | 'MILLILITERS' | 'KILOGRAMS' | 'POUNDS' | 'OUNCES' | 'PIECE' — The metric in which the item is measure (nullable)
          - `itemUnitCount` number — Item Quantity
          - `itemFulfilmentCount` number, nullable — Number Of Items Fulfilled
          - `itemUnitDiscount` integer — Discount per Item
          - `totalUnitCost` integer — Total cost for this item
          - `totalUnitCostAfterDiscount` integer — Total cost for this item after discount (please note this does not take into account whole basket discounts)
          - `taxRate` number, float — The rate of tax being applied to this item (percentage)
          - `taxAmount` integer — Tax Amount for that item, denominated to a smallest currency unit
          - `qualifies` object, nullable
            - `discount` boolean, required — Determines if the item is eligible for discounting
            - `points` boolean, required — Determines if the item is eligible for points
          - `meta` MetaEntity
            - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
            - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
          - `adjustmentRules` AdjustmentRulesEntity
            - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
            - `externalAdjustmentReason` string — The reason for externalAdjustment
            - `ignore` boolean — Ignore object as if not sent
          - `adjustmentResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'createRedeem' — Operation Type
            - `value` integer — Operation Amount
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccountIds` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
            - `multiItem` string[]
            - `totalDiscountAmount` integer — The monetary effect of the discount in the lowest unit of currency
            - `totalMatchingUnits` integer — The number of products the adjustment was applied to
            - `instanceId` string, string — A mechanism to distinguish each individual reward that has been given for any account
          - `tenderResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'createRedeem' — Operation Type
            - `value` integer — Operation Amount
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccountIds` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
            - `multiItem` string[]
            - `totalTenderAmount` integer — The amount of tender value in the lowest unit of currency
          - `bounceBackResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Campaign Id
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem'
            - `value` integer — Value of transaction
            - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
              - …
            - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccounts` string[]
            - `targetAccountId` string, string — EES AIR Account ID
          - `qualifiesResults` object[] — If an offer was buy a pizza and get a free garlic bread, the pizza would have this entity against it
            - `totalMatchingUnits` integer — The number of products forming part of the offer's qualification
            - `totalMatchingSpend` integer — The monetary value this product contributes towards the offer's qualification
            - `instanceId` string, string — The reference back to the offer reward which these qualifiers relate
          - `adjudicationResults` object[]
            - `resourceType` 'CAMPAIGN' | 'PROGRAMME' | 'SCHEME' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'credit' | 'debit' | 'earn' | 'spend' — Operation Type
            - `value` integer — Operation Amount (please note&#58; value and balances attributes are mutually exclusive)
            - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
              - …
            - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccounts` string[]
            - `targetAccountId` string, string — EES AIR Account ID
            - `totalMatchingUnits` integer, nullable — The minimum number of products required to trigger offer
          - `relatedContents` unknown
      - `payment` object[], nullable — Similar to standardPaymentEntity, except that any _tender_ offers used during adjustment, have an entry injected here, stipulating the tender amount to take off basket
        - `tenderType` string, string, required — Tender type - predefined by Eagle Eye, including a further type of _tenderCoupon_
        - `amount` integer, required — Monetary amount of payment/tender in lowest unit of currency
        - `bin` string, string — The bin for the tender
        - `identifier` string, string — An identifying value of what was scanned, could be a token, barcode, gift-card
        - `accountId` string, string — The EE AIR Account ID (only populated when tender is owned by EE)
      - `analysedDateTime` string, ees-date-time — Basket Analysis Date-Time in ATOM format
    - `points` object[] — Supplementary information about accounts that may or may not be valid for this transaction.
      - `resourceType` 'SCHEME' | 'CAMPAIGN' — EES Resource Type
      - `resourceId` string, string — EES AIR Scheme ID
      - `operationType` 'credit' | 'debit' | 'earn' — Operation Type
      - `value` integer — Amount of points
      - `accountId` string, string — EES AIR Account ID
      - `relatedSchemeId` string, string — EES AIR Scheme ID
      - `details` object, nullable
        - `appliedAnalyseBasketType` 'FIXED_POINTS' | 'FIXED_POINTS_BASKET' | 'FIXED_POINTS_PRODUCTS' | 'VARIABLE_POINTS_BASKET' | 'VARIABLE_POINTS_PRODUCTS' — The offer type (list is examples more may be added)
      - `totalMatchingUnits` integer, nullable — The total number of products that matched the qualification.
    - `bounceBack` object[] — Supplementary information about accounts that may or may not be valid for this transaction.
      - `accountId` string, string — EES AIR Account ID
      - `walletId` string, string — EES AIR Wallet ID
      - `type` 'ECOUPON'
      - `clientType` string, string, nullable — Client defined account type
      - `campaignId` string, string — EES AIR Campaign ID
      - `campaignName` string, string — Campaign Name
      - `offerId` string, string, nullable — Offer Id
      - `offerName` string, string, nullable — Offer Name
      - `reward` object, nullable — The reward is always null for bounceBacks.
      - `bounceBacks` object[]
        - `resourceType` 'CAMPAIGN' — EES Resource Type
        - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
    - `discount` object[], nullable — Supplementary information about accounts that may or may not be valid for this transaction.
      - `accountId` string, string — EES AIR Account Id
      - `walletId` string, string — EES AIR Wallet Id
      - `type` 'ECOUPON' | 'VOUCHER' | 'STAMP_CARD' | 'PAPER' | 'DEBIT' | 'PLASTIC' | 'POINTS' | 'STANDARD_SUBSCRIPTION' — EES AIR Account Type
      - `clientType` string, string, nullable — Client defined account type
      - `campaignId` string, string — EES AIR Campaign / Programme / Scheme ID
      - `campaignName` string, string — Campaign Name
      - `offerId` string, string, nullable — Offer Id
      - `offerName` string, string, nullable — Offer Name
      - `reward` object
        - `product` ProductsCollectionEntity, nullable — The products that this reward applies to.
          - `unitSafeName` object, nullable — The Unit Safe Name is a dynamic string made up of user's name eg EagleEye.
            - `logicalOperator` 'AND' | 'OR' | 'ANYOF', nullable — Defines how each of the collections interact with each other.
            - `collections` object[] — The list of products that can be rewarded.
              - …
        - `promoId` string, string, nullable
        - `basket` object, nullable
          - `points` object
            - `interval` IntervalEntity, nullable
              - …
            - `tier` object, nullable
              - …
        - `pointSpendRates` object[], nullable — Reward that overrides the normal points spend rate for a scheme.
          - `bonus` integer — Bonus monetary value to be applied per step.
          - `ceiling` integer — The maximum threshold of the value used for the decider.
          - `floor` integer — The minimum threshold of the value used for the decider.
          - `rate` integer — Rate at which points should be spent at.
          - `step` integer — Number of points required to be spent above the floor to get an additional bonus reward - repeatable.
          - `pointsBack` integer — Number of points to be awarded.
        - `standard` object
          - `discountAmount` integer, nullable — Discount Amount
          - `percentageAmount` number, float, nullable — Percentage Amount
          - `points` object, nullable
            - `creditAmount` integer — Number of points to be awarded.
            - `multiplierValue` integer, nullable — Multiplier of base-earn points to award.
            - `schemeId` string — The ID of the base-earn scheme to multiply.
          - `tax` object — object that contains the tax saver reward
            - `taxSaver` boolean, nullable
          - `value` object, nullable — Contains the type of deduction.
            - `discountAmount` integer, nullable — The discount amount to apply.
            - `percentageAmount` number, float, nullable — The percentage amount to apply.
        - `treatAs` object, nullable — Sets if this coupon should be treated as tender.
          - `type` 'DISCOUNT' | 'TENDER' — The method that will be used to specify how a Coupon should be treated at point of sale. Default value of DISCOUNT if this is not defined (empty string): * DISCOUNT – Treated as money off a basket or products. * TENDER – Treated as part payment against a basket or products.
    - `tender` object[], nullable — Supplementary information about accounts that may or may not be valid for this transaction.
      - `accountId` string, string — EES AIR Account Id
      - `walletId` string, string — EES AIR Wallet Id
      - `type` 'ECOUPON' | 'VOUCHER' | 'STAMP_CARD' | 'PAPER' | 'DEBIT' | 'PLASTIC' | 'POINTS' | 'STANDARD_SUBSCRIPTION' — EES AIR Account Type
      - `clientType` string, string, nullable — Client defined account type
      - `campaignId` string, string — EES AIR Campaign / Programme / Scheme ID
      - `campaignName` string, string — Campaign Name
      - `offerId` string, string, nullable — Offer Id
      - `offerName` string, string, nullable — Offer Name
      - `reward` object
        - `product` ProductsCollectionEntity, nullable — The products that this reward applies to.
          - `unitSafeName` object, nullable — The Unit Safe Name is a dynamic string made up of user's name eg EagleEye.
            - `logicalOperator` 'AND' | 'OR' | 'ANYOF', nullable — Defines how each of the collections interact with each other.
            - `collections` object[] — The list of products that can be rewarded.
              - …
        - `promoId` string, string, nullable
        - `basket` object, nullable
          - `points` object
            - `interval` IntervalEntity, nullable
              - …
            - `tier` object, nullable
              - …
        - `pointSpendRates` object[], nullable — Reward that overrides the normal points spend rate for a scheme.
          - `bonus` integer — Bonus monetary value to be applied per step.
          - `ceiling` integer — The maximum threshold of the value used for the decider.
          - `floor` integer — The minimum threshold of the value used for the decider.
          - `rate` integer — Rate at which points should be spent at.
          - `step` integer — Number of points required to be spent above the floor to get an additional bonus reward - repeatable.
          - `pointsBack` integer — Number of points to be awarded.
        - `standard` object
          - `discountAmount` integer, nullable — Discount Amount
          - `percentageAmount` number, float, nullable — Percentage Amount
          - `points` object, nullable
            - `creditAmount` integer — Number of points to be awarded.
            - `multiplierValue` integer, nullable — Multiplier of base-earn points to award.
            - `schemeId` string — The ID of the base-earn scheme to multiply.
          - `tax` object — object that contains the tax saver reward
            - `taxSaver` boolean, nullable
          - `value` object, nullable — Contains the type of deduction.
            - `discountAmount` integer, nullable — The discount amount to apply.
            - `percentageAmount` number, float, nullable — The percentage amount to apply.
        - `treatAs` object, nullable — Sets if this coupon should be treated as tender.
          - `type` 'DISCOUNT' | 'TENDER' — The method that will be used to specify how a Coupon should be treated at point of sale. Default value of DISCOUNT if this is not defined (empty string): * DISCOUNT – Treated as money off a basket or products. * TENDER – Treated as part payment against a basket or products.
  - `basketAdjudicationResult` object, nullable, required — details TBC
  - `walletTransactions` WalletTransactionEntity[], nullable, required
    - `walletTransactionId` string, required — Wallet Transaction ID
    - `parentWalletTransactionId` string, nullable, required — Parent Wallet Transaction ID
    - `walletId` string, nullable, required — Wallet ID
    - `reference` string, nullable, required — Calling party's reference to this transaction
    - `identityId` string, nullable, required — The Identity ID responsible for this transaction.
    - `identity` WalletIdentityEntity
      - `identityId` string, required — EES AIR Wallet Identity ID
      - `walletId` string, required — EES AIR Wallet ID
      - `type` string, required — Type of the Identity, list of possible enum values could be defined per Client as part of the Onboarding process.
      - `friendlyName` string, required — Wallet Identity friendly name
      - `value` string, required — Wallet Identity value
      - `safeValue` string, required — Identity Safe Value (e.g. "original value salted and hashed") - safeValue could be than used in external systems like analytics, referencing original identity, provide uniqueness within a retailer, but without exposing sensitive information like card number.
      - `secret` string, required — Wallet Identity secret
      - `dates` DatesEntity, required
        - `start` string, date-time
        - `end` string, date-time
      - `meta` MetaEntity, required
        - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
        - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
      - `state` string, required — Wallet Identity state, list of possible values could be defined and set-up per Client during Onboarding process.
      - `status` 'ACTIVE' | 'DELETED' | 'SUSPENDED' | 'LOST' | 'STOLEN' | 'INACTIVE', required — Identity status
      - `dateCreated` string, date-time, required — Date this identity was created
      - `lastUpdated` string, date-time, required — Date this identity was last updated
      - `mobileWallet` string, required — A url that can be used to add this identity to a mobile wallet (like Apple Wallet and Google Pay)
    - `type` string, nullable, required — Transaction Type, defined per retailer
    - `status` 'ACTIVE' | 'SETTLED' | 'EXPIRED' | 'CANCELLED' | 'DELETED' | 'PURGED' | 'FULFILLING' | 'FULFILLED', required — Transaction status
    - `meta` MetaEntity, required
      - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
      - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
    - `state` string, nullable, required — Transaction state
    - `transactionDateTime` string, date-time, required — Transaction date-time in ATOM format.
    - `transactionDateTimeOffset` string, string — The offset of the date-time from UTC in format "+00:00".
    - `expiryDate` string, date-time, nullable, required — Transaction Expiry Timestamp (date-time in ATOM format), when transaction should expiry and automatically be settled.
    - `accounts` object[], required
      - `accountId` string, required — Account ID
      - `accountTransactionId` string, required — Account Transaction ID
    - `basket` union, required
      - StandardBasketEntity
        - `type` 'STANDARD', required
        - `summary` object
          - `totalItems` integer, required — Basket Items count
          - `totalBasketValue` integer, required — Total Basket monetary Value after discounts, denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
          - `totalDiscountAmount` object
            - `promotions` integer, nullable — Promotions Discount Amount. If basket adjustment adds to discounts, this amount will be added to
            - `staff` integer, nullable — Staff Discount Amount
            - `general` integer, nullable — General Discount Amount
          - `totalQualifyingAmount` object, nullable
            - `points` integer — Basket Monetary Value for Loyalty Points calculations
            - `baseEarn` integer — Basket Monetary Value used for calculating base earn, overriding totalBasketValue. Adheres to basket discounts
            - `promotions` integer — Basket Monetary Value for Promotion Offer selections
            - `discount` integer — Basket Monetary Value for Discount calculations
            - `staff` integer — Basket Monetary Value for Staff Discount or Promotions
          - `totalTaxAmount` integer — Total Tax Amount denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
          - `adjustmentRules` AdjustmentRulesEntity
            - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
            - `externalAdjustmentReason` string — The reason for externalAdjustment
            - `ignore` boolean — Ignore object as if not sent
          - `redemptionChannel` string, string — The redemption channel used for this request
        - `contents` object[], nullable
          - `sku` string, string — Item SKU
          - `upc` string, string — Item SKU
          - `salesKey` 'SALE' | 'REFUND' | 'FULFIL' — `SALE`/`REFUND`/`FULFIL` Flag
          - `description` string, string — Product Name
          - `itemUnitCost` integer — Item Price per unit, denominated to a smaller currency unit
          - `itemUnitMetric` 'LITRES' | 'GRAMS' | 'MILLILITERS' | 'KILOGRAMS' | 'POUNDS' | 'OUNCES' | 'PIECE' | 'EACH' — The metric in which the item is measure (nullable)
          - `itemUnitCount` number — Item Quantity
          - `itemUnitDiscount` integer — Discount per Item
          - `totalUnitCost` integer — Total cost for this item
          - `totalUnitCostAfterDiscount` integer — Total cost for this item after discount (please note this does not take into account whole basket discounts)
          - `taxRate` number, float — Tax Rate (Percentage)
          - `taxAmount` integer — Tax Amount for that item, denominated to a smallest currency unit
          - `qualifies` object, nullable
            - `discount` boolean, required — Determines if the item is eligible for basket level discounting. If false this item will not qualify for basket level discounts but still qualify for product level discounts. However this is possible to override based on the ‘ignorePreviousExcludes’ key on a campaign.
            - `points` boolean, required — Determines if the item is eligible for Base Earn points. If false this item will not qualify for Base Earn points but still qualify for basket and product level discounts.
          - `meta` MetaEntity
            - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
            - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
          - `adjustmentRules` AdjustmentRulesEntity
            - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
            - `externalAdjustmentReason` string — The reason for externalAdjustment
            - `ignore` boolean — Ignore object as if not sent
          - `relatedContents` object[] — Recursive list of contents related to the parent item with the same schema as this object.
            - `sku` string, string — Item SKU
            - `upc` string, string — Item SKU
            - `salesKey` 'SALE' | 'REFUND' | 'FULFIL' — `SALE`/`REFUND`/`FULFIL` Flag
            - `description` string, string — Product Name
            - `itemUnitCost` integer — Item Price per unit, denominated to a smaller currency unit
            - `itemUnitMetric` 'LITRES' | 'GRAMS' | 'MILLILITERS' | 'KILOGRAMS' | 'POUNDS' | 'OUNCES' | 'PIECE' — The metric in which the item is measure (nullable)
            - `itemUnitCount` number — Item Quantity
            - `itemUnitDiscount` integer — Discount per Item
            - `totalUnitCost` integer — Total cost for this item
            - `totalUnitCostAfterDiscount` integer — Total cost for this item after discount (please note this does not take into account whole basket discounts)
            - `taxRate` number, float — Tax Rate (Percentage)
            - `taxAmount` integer — Tax Amount for that item, denominated to a smallest currency unit
            - `qualifies` object, nullable
              - …
            - `meta` MetaEntity
              - …
            - `adjustmentRules` AdjustmentRulesEntity
              - …
            - `relatedContents` unknown
        - `payment` object[], nullable
          - `tenderType` string, string, required — Tender type - predefined by Eagle Eye
          - `amount` integer, required — Monetary amount of payment in lowest unit of currency
          - `bin` string, string — The bin for the tender
          - `identifier` string, string — An identifying value of what was scanned, could be a token, barcode, gift-card
      - EnrichedBasketEntity
        - `type` 'ENRICHED', required
        - `summary` object, required
          - `totalItems` integer, required — Basket Items count
          - `totalBasketValue` integer, required — Total Basket monetary Value after discounts, denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
          - `totalQualifyingAmount` object, nullable
            - `points` integer, nullable — Basket Monetary Value for Loyalty Points calculations
            - `baseEarn` integer — Basket Monetary Value used for calculating base earn, overriding totalBasketValue. Adheres to basket discounts
            - `promotions` integer, nullable — Basket Monetary Value for Promotion Offer selections
            - `discount` integer, nullable — Basket Monetary Value for Discount calculations
            - `staff` integer, nullable — Basket Monetary Value for Staff Discount or Promotions
          - `totalTaxAmount` integer, nullable — Total Tax Amount denominated to a smallest currency unit (e.g. for `USD` this value should be provided in `cents`)
          - `totalDiscountAmount` object
            - `promotions` integer, nullable — Promotions Discount Amount. If basket adjustment adds to discounts, this amount will be added to
            - `staff` integer, nullable — Staff Discount Amount
            - `general` integer, nullable — General Discount Amount
          - `fulfilledBaseEarn` object[] — Records the base earn points rewarded to customer during mid fulfil requests.
            - `targetedAccountId` string, string — EES AIR Account ID.
            - `points` integer — Total value of base earn points rewarded.
          - `adjustmentRules` AdjustmentRulesEntity
            - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
            - `externalAdjustmentReason` string — The reason for externalAdjustment
            - `ignore` boolean — Ignore object as if not sent
          - `tenderResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'createRedeem' — Operation Type
            - `value` integer — Operation Amount
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccountIds` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
            - `multiItem` string[]
            - `totalTenderAmount` integer — The amount of tender value in the lowest unit of currency
          - `adjustmentResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'createRedeem' — Operation Type
            - `value` integer — Operation Amount
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccountIds` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
            - `multiItem` string[]
            - `totalDiscountAmount` integer — The monetary effect of the discount in the lowest unit of currency
            - `totalMatchingUnits` integer — The number of products the adjustment was applied to
            - `instanceId` string, string — A mechanism to distinguish each individual reward that has been given for any account
          - `bounceBackResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Campaign Id
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem'
            - `value` integer — Value of transaction
            - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
              - …
            - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccounts` string[]
            - `targetAccountId` string, string — EES AIR Account ID
          - `qualifiesResults` object[] — If an offer was buy a pizza and get a free garlic bread, the pizza would have this entity against it
            - `totalMatchingUnits` integer — The number of products forming part of the offer's qualification
            - `totalMatchingSpend` integer — The monetary value this product contributes towards the offer's qualification
            - `instanceId` string, string — The reference back to the offer reward which these qualifiers relate
          - `adjudicationResults` object[]
            - `resourceType` 'CAMPAIGN' | 'PROGRAMME' | 'SCHEME' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'credit' | 'debit' | 'earn' | 'spend' — Operation Type
            - `value` integer — Operation Amount (please note&#58; value and balances attributes are mutually exclusive)
            - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
              - …
            - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccounts` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `totalMatchingUnits` integer, nullable — The minimum number of products required to trigger offer
          - `results` EnrichedBasketSummaryResultsEntity
            - `points` object
              - …
          - `redemptionChannel` string, string — The redemption channel used for this request
        - `contents` object[], nullable
          - `sku` string, string — Item SKU
          - `upc` string, string — Item SKU
          - `salesKey` 'SALE' | 'REFUND' | 'FULFIL' — `SALE`/`REFUND`/`FULFIL` Flag
          - `description` string, string — Product Name
          - `itemUnitCost` integer — Item Price per unit, denominated to a smaller currency unit
          - `itemUnitMetric` 'LITRES' | 'GRAMS' | 'MILLILITERS' | 'KILOGRAMS' | 'POUNDS' | 'OUNCES' | 'PIECE' | 'EACH' — The metric in which the item is measure (nullable)
          - `itemUnitCount` number — Item Quantity
          - `itemFulfilmentCount` number, nullable — Number Of Items Fulfilled
          - `itemUnitDiscount` integer — Discount per Item
          - `totalUnitCost` integer — Total cost for this item
          - `totalUnitCostAfterDiscount` integer — Total cost for this item after discount (please note this does not take into account whole basket discounts)
          - `taxRate` number, float — The rate of tax being applied to this item (percentage)
          - `taxAmount` integer — Tax Amount for that item, denominated to a smallest currency unit
          - `qualifies` object, nullable
            - `discount` boolean, required — Determines if the item is eligible for discounting
            - `points` boolean, required — Determines if the item is eligible for points
          - `meta` MetaEntity
            - `key1` string — Meta 1 property, up to 250 characters; up to 750 characters for Key 1 Value
            - `key2` string — Meta 2 property, up to 250 characters; up to 750 characters for Key 2 Value
          - `adjustmentRules` AdjustmentRulesEntity
            - `externalAdjustment` boolean — If the object (summary/basket item) has been modified by the POS at all with information we don't know about
            - `externalAdjustmentReason` string — The reason for externalAdjustment
            - `ignore` boolean — Ignore object as if not sent
          - `adjustmentResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'createRedeem' — Operation Type
            - `value` integer — Operation Amount
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccountIds` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
            - `multiItem` string[]
            - `totalDiscountAmount` integer — The monetary effect of the discount in the lowest unit of currency
            - `totalMatchingUnits` integer — The number of products the adjustment was applied to
            - `instanceId` string, string — A mechanism to distinguish each individual reward that has been given for any account
          - `tenderResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'createRedeem' — Operation Type
            - `value` integer — Operation Amount
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccountIds` string[]
            - `targetedAccountId` string, string — EES AIR Account ID
            - `targetedWalletId` string, string, nullable — EES AIR Wallet ID. Nullable
            - `multiItem` string[]
            - `totalTenderAmount` integer — The amount of tender value in the lowest unit of currency
          - `bounceBackResults` object[]
            - `resourceType` 'CAMPAIGN' — EES Resource Type
            - `resourceId` string, string — EES AIR Campaign Id
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem'
            - `value` integer — Value of transaction
            - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
              - …
            - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccounts` string[]
            - `targetAccountId` string, string — EES AIR Account ID
          - `qualifiesResults` object[] — If an offer was buy a pizza and get a free garlic bread, the pizza would have this entity against it
            - `totalMatchingUnits` integer — The number of products forming part of the offer's qualification
            - `totalMatchingSpend` integer — The monetary value this product contributes towards the offer's qualification
            - `instanceId` string, string — The reference back to the offer reward which these qualifiers relate
          - `contributionResults` object[], nullable — If an offer was spend £30 get £5 off, this entity would be against each of the products contributing to the £5 off, with their combined `value`s adding up to the £5.
            - `value` integer — The proportional contribution to the discount/points given
            - `instanceId` string, string — The reference back to the offer which these items contributed
          - `adjudicationResults` object[]
            - `resourceType` 'CAMPAIGN' | 'PROGRAMME' | 'SCHEME' — EES Resource Type
            - `resourceId` string, string — EES AIR Resource ID (Campaign ID, Programme ID, Scheme ID)
            - `playOrderPosition` integer, nullable — The exact position the offer was triggered during analysis
            - `success` boolean, nullable
            - `type` 'redeem' | 'credit' | 'debit' | 'earn' | 'spend' — Operation Type
            - `value` integer — Operation Amount (please note&#58; value and balances attributes are mutually exclusive)
            - `balances` AccountBalancesEntity — The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.
              - …
            - `isRefundable` boolean — Boolean Flag indicating if this offer should be refundable
            - `isUnredeemable` boolean — Boolean Flag indicating if this offer should be Unredeemable
            - `relatedAccounts` string[]
            - `targetAccountId` string, string — EES AIR Account ID
            - `totalMatchingUnits` integer, nullable — The minimum number of products required to trigger offer
          - `relatedContents` object[] — Recursive list of contents related to the parent item with the same schema as this object.
            - `sku` string, string — Item SKU
            - `upc` string, string — Item SKU
            - `salesKey` 'SALE' | 'REFUND' | 'FULFIL' — `SALE`/`REFUND`/`FULFIL` Flag
            - `description` string, string — Product Name
            - `itemUnitCost` integer — Item Price per unit, denominated to a smaller currency unit
            - `itemUnitMetric` 'LITRES' | 'GRAMS' | 'MILLILITERS' | 'KILOGRAMS' | 'POUNDS' | 'OUNCES' | 'PIECE' — The metric in which the item is measure (nullable)
            - `itemUnitCount` number — Item Quantity
            - `itemFulfilmentCount` number, nullable — Number Of Items Fulfilled
            - `itemUnitDiscount` integer — Discount per Item
            - `totalUnitCost` integer — Total cost for this item
            - `totalUnitCostAfterDiscount` integer — Total cost for this item after discount (please note this does not take into account whole basket discounts)
            - `taxRate` number, float — The rate of tax being applied to this item (percentage)
            - `taxAmount` integer — Tax Amount for that item, denominated to a smallest currency unit
            - `qualifies` object, nullable
              - …
            - `meta` MetaEntity
              - …
            - `adjustmentRules` AdjustmentRulesEntity
              - …
            - `adjustmentResults` object[]
              - …
            - `tenderResults` object[]
              - …
            - `bounceBackResults` object[]
              - …
            - `qualifiesResults` object[] — If an offer was buy a pizza and get a free garlic bread, the pizza would have this entity against it
              - …
            - `adjudicationResults` object[]
              - …
            - `relatedContents` unknown
        - `payment` object[], nullable — Similar to standardPaymentEntity, except that any _tender_ offers used during adjustment, have an entry injected here, stipulating the tender amount to take off basket
          - `tenderType` string, string, required — Tender type - predefined by Eagle Eye, including a further type of _tenderCoupon_
          - `amount` integer, required — Monetary amount of payment/tender in lowest unit of currency
          - `bin` string, string — The bin for the tender
          - `identifier` string, string — An identifying value of what was scanned, could be a token, barcode, gift-card
          - `accountId` string, string — The EE AIR Account ID (only populated when tender is owned by EE)
        - `analysedDateTime` string, ees-date-time — Basket Analysis Date-Time in ATOM format
    - `channel` string, required — Channel used for Transaction creation or update
    - `location` LocationResponseEntity, required
      - `storeId` string, string — The Incoming Identifier of the Outlet.
      - `storeParentId` string, string — The Incoming Identifier of the Outlet's Parent Unit.
    - `dateCreated` string, date-time, required — Date this Wallet Transaction was created
    - `lastUpdated` string, date-time, required — Date this Wallet Transaction was last updated
  - `accountTransactions` AccountTransactionEntity[], nullable, required
    - `accountTransactionId` string, required — The account transaction ID.
    - `accountId` string, required — The account id related to this transaction.
    - `parentAccountTransactionId` string, nullable, required — The parent account transaction.
    - `event` 'CREATE' | 'REDEEM' | 'LOCK' | 'UNLOCK' | 'UNREDEEM' | 'VERIFY' | 'ACTIVATE' | 'INACTIVATE' | 'REACTIVATE' | 'LOAD' | 'CREDIT' | 'DEBIT' | 'BALANCE' | 'INVALIDATE' | 'BLOCK' | 'UNBLOCK' | 'RESEND' | 'STOLEN' | 'CANCEL' | 'VOID' | 'REISSUE' | 'REFUND' | 'TRANSFER' | 'TRANSFER_IN' | 'TOPUP' | 'AUTOTOPUP' | 'STAMP' | 'SPEND', required — The type of transaction.
    - `value` integer, required — The value related to this Account Transaction. Typically, if an account transaction like credit was executed with a value, then this value will be stored here. For Continuity, however, this value should always be 0, and the same for Coupon (since there is no value for a coupon).
    - `source` string, required — The source of this transaction e.g. from a client (1), or triggered automatically (2) from within EES AIR (e.g. auto-top-up or the incrementation of Quest balances).
    - `transactionDetails` object, nullable, required — An simple object of key value pairs representing the transaction details.
    - `balancesBefore` AccountTransactionBalancesHistoryEntity, required — The object of balances to show for either before or after the account transaction. Some balances only apply to certain types of accounts. See notes below on balances.
      - `available` integer — The available balance. This is applicable for all account types, except STAMP, POINTS and CONTINUITY, which uses its own balance keys, and ECOUPON, which has no concept of a balance.
      - `refundable` integer — The refundable balance. This is applicable for all account types, except STAMP, ECOUPON, POINTS and CONTINUITY.
      - `current` integer — The current balance. Applicable only to accounts of type Points and Stamp.
      - `lifetime` integer — The lifetime balance. Applicable only to accounts of type Points and Stamp.
      - `totalSpend` integer — The total spend balance. Applicable only to accounts of type Continuity.
      - `transactionCount` integer — The transaction counter. Applicable only to accounts of type Continuity.
    - `balancesAfter` AccountTransactionBalancesHistoryEntity, required — The object of balances to show for either before or after the account transaction. Some balances only apply to certain types of accounts. See notes below on balances.
      - `available` integer — The available balance. This is applicable for all account types, except STAMP, POINTS and CONTINUITY, which uses its own balance keys, and ECOUPON, which has no concept of a balance.
      - `refundable` integer — The refundable balance. This is applicable for all account types, except STAMP, ECOUPON, POINTS and CONTINUITY.
      - `current` integer — The current balance. Applicable only to accounts of type Points and Stamp.
      - `lifetime` integer — The lifetime balance. Applicable only to accounts of type Points and Stamp.
      - `totalSpend` integer — The total spend balance. Applicable only to accounts of type Continuity.
      - `transactionCount` integer — The transaction counter. Applicable only to accounts of type Continuity.
    - `properties` object, nullable, required — Properties related to the account transaction.
    - `dateCreated` string, date-time, required — Date-time (ATOM format) this account transaction was created
    - `lastUpdated` string, date-time, required — Date-time (ATOM format) this account transaction was last updated
  - `examine` EnrichedExamineEntity[], nullable
    - `value` string, required — Unique identifier analysed
    - `resourceType` 'ACCOUNT' | 'CAMPAIGN', nullable, required — The type of internal resource the value is associated to
    - `resourceId` string, nullable, required — The id associated with the resourceType.
    - `errorCode` 'PCEXNF' | 'PCEXO' | 'PCEXNV', nullable, required — If there is an error, this field will be populated.
    - `errorMessage` string, nullable, required — A human friendly error message explaining why the examined object threw an error.

## Other responses

- `207` — EES AIR has processed a partially successful Request
- `400` — EES AIR refuse to process that particular Request as there is something wrong with the Request (e.g. Request Payload is unprocessable, Mandatory Request Parameter value is not provided, etc.)
- `401` — EES AIR refuse to process that particular Request due to Authentication error(s). This could be caused by missing one or more of mandatory AUTH headers, invalid Hash calculation, invalid or inactive API Key used, etc.
- `403` — EES AIR refuse to process that particular Request due to Authorisation error(s). Please note nothing is wrong with Authentication nor hash Calculation, it is simply due to lack of permission to perform that particular action (e.g. Issuance Partner attempts to Redeem a Token or Redemption Partner attempts to Issue a Token, etc.)
- `404` — EES AIR refuse to process that particular Request as requested Resource could not be found or referenced Resource is not active.
- `409` — EES AIR understands this request, but refuse to process it, due to present Conflict with the current state of the target resource or because performing this operation would lead to a Conflict within AIR.
- `415` — EES AIR refuse to process that particular Request as requested `Mime-Type` is not supported (Currently only `application/json` is supported
- `429` — EES AIR refuses to process that particular Request as Client's API Requests Limit was exceeded.
- `500` — EES AIR is not able to process that particular Request due to Unexpected Server Error.
- `503` — EES AIR refuses to process that particular Request due to Service(s) being Unavailable (i.e. Scheduled Maintenance)
- `504` — EES AIR refuses to process that particular Request due to Networking Issues

---

[API](https://skmtc.dev/eagleeye/apis/wallet-api.md) · [All operations](https://skmtc.dev/eagleeye/apis/wallet-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/eagleeye/wallet-api/revisions/90a122bb14cc/schema)
