{
  "openapi": "3.1.0",
  "info": {
    "title": "Boogi API",
    "description": "Boogi API documentation",
    "contact": {
      "name": "Boogi",
      "url": "https://boogi.io"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.boogi.io/public/rest/api",
      "description": "Generated server url"
    }
  ],
  "tags": [
    {
      "name": "Recommended offers for User",
      "description": "Endpoints to fetch recommended offers for a user powered by Cardlytics offers intelligence "
    },
    {
      "name": "Catalogue",
      "description": "Endpoints to browse retailer and offer catalogues"
    },
    {
      "name": "Advertising Events",
      "description": "Endpoints for tracking advertising events"
    },
    {
      "name": "Sync Transaction Enrichment",
      "description": "Endpoints for synchronous transaction enrichment"
    },
    {
      "name": "Cashback",
      "description": "Endpoints to manage cashback objects"
    },
    {
      "name": "Product",
      "description": "Endpoints to manage products"
    },
    {
      "name": "Program",
      "description": "Endpoints to manage program retailers and offers"
    },
    {
      "name": "Async Transaction Enrichment",
      "description": "Endpoints for asynchronous transaction enrichment"
    },
    {
      "name": "Support",
      "description": "Endpoints for transaction support tickets"
    },
    {
      "name": "End User",
      "description": "Endpoints to manage end users, tokens, offers, and products"
    },
    {
      "name": "Customer Tiers",
      "description": "Endpoints to manage customer tier levels"
    }
  ],
  "paths": {
    "/transaction-enrichment/sync": {
      "post": {
        "tags": [
          "Sync Transaction Enrichment"
        ],
        "summary": "Enrich a transaction synchronously",
        "operationId": "enrichTransactionSync",
        "parameters": [
          {
            "name": "historic",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "enrichment",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TransactionRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransactionDataAPIResponse"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/transaction-enrichment/async": {
      "get": {
        "tags": [
          "Async Transaction Enrichment"
        ],
        "summary": "List async enrichment requests",
        "operationId": "getListOfAsyncEnrichmentRequests",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageAsyncTransactionResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Async Transaction Enrichment"
        ],
        "summary": "Submit transactions for async enrichment",
        "operationId": "enrichTransactionAsync",
        "parameters": [
          {
            "name": "historic",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "enrichment",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TransactionRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/AsyncTransactionResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/support": {
      "post": {
        "tags": [
          "Support"
        ],
        "summary": "Create a support ticket",
        "operationId": "generateSupportTicket",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionSupportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/MissedTransactionQuery"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Create an end user",
        "operationId": "addEndUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AddEndUserRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EndUser"
                  },
                  "uniqueItems": true
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}": {
      "get": {
        "tags": [
          "End User"
        ],
        "summary": "Get an end user",
        "operationId": "getEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Update an end user",
        "operationId": "updateEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEndUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/unlock/product/{voucherId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Unlock voucher code",
        "description": "Unlocks voucher using credential returned from assignment.\n\nValidations:\n- Publisher ownership\n- User match\n- Still locked\n- Credential match\n",
        "operationId": "unlockVoucherCode",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Unlock credential payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnlockTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/VoucherCodeUnlockResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/assign/triggerBasedRule/{ruleEngineId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Assign trigger rule to user",
        "description": "Creates a TRIGGER assignment entry for future product assignment",
        "operationId": "assignTriggerBasedRuleToUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ruleEngineId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/assign/tier/{tierId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Assign a tier to an end user",
        "operationId": "assignTierToUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/assign/product/{productId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Assign product to user",
        "description": "Assigns product via selected path:\n\n- SEGMENT – based on user tiers\n- TRIGGER – from trigger rule\n- MANUAL – direct assignment\n\nReturns unlock credential required for voucher reveal.\n",
        "operationId": "assignProductToUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assignType",
            "in": "query",
            "description": "Assignment strategy",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "TRIGGER",
                "SEGMENT",
                "MANUAL"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductAssignResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/assign/offer/{offerId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Assign an offer to an end user",
        "operationId": "assignOfferToUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/account": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Add an account to an end user",
        "operationId": "addAccountToEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AccountDataRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/account/{accountId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Update an end user's account",
        "operationId": "updateAccountOfEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      },
      "delete": {
        "tags": [
          "End User"
        ],
        "summary": "Delete an end user's account",
        "operationId": "deleteAccountOfEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/account/{accountId}/card": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Add a card to an end user's account",
        "operationId": "addCardOfEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CardRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/account/{accountId}/card/{cardId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Update an end user's card",
        "operationId": "updateCardOfEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      },
      "delete": {
        "tags": [
          "End User"
        ],
        "summary": "Delete an end user's card",
        "operationId": "deleteCardOfEndUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/auth/token": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Generate a single sign-on token for an end user",
        "operationId": "generateSingleSignOnToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndUserAuthRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUserToken"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/activate/offer/{offerId}": {
      "post": {
        "tags": [
          "End User"
        ],
        "summary": "Activate an offer for an end user",
        "operationId": "activateOffer",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateOfferRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUserOfferActivation"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/cashback/{cashbackId}": {
      "get": {
        "tags": [
          "Cashback"
        ],
        "summary": "Get cashback object by ID",
        "description": "Retrieve a specific cashback object by its unique ID.",
        "operationId": "getCashbackObjectsById",
        "parameters": [
          {
            "name": "cashbackId",
            "in": "path",
            "description": "ID of the cashback object",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "cb_12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Cashback object retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CashbackAPIResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CashbackAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      },
      "post": {
        "tags": [
          "Cashback"
        ],
        "summary": "Update cashback object manually",
        "description": "Update a cashback object using manual input only avaliable for bring your own offers.",
        "operationId": "updateBYOO",
        "parameters": [
          {
            "name": "cashbackId",
            "in": "path",
            "description": "ID of the cashback object to update",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "cb_12345"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualCashbackUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Cashback object updated successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CashbackAPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Only cashback objects from your own offers can be updated programmatically",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CashbackAPIResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CashbackAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/advertising/event": {
      "post": {
        "tags": [
          "Advertising Events"
        ],
        "summary": "Record an advertising event",
        "description": "Registers a new advertising event for the current user/publisher.",
        "operationId": "advertisingEvent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdvertisingEventRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Event recorded successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/AdvertisingEventResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/AdvertisingEventResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/AdvertisingEventResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/advertising/event/batch": {
      "post": {
        "tags": [
          "Advertising Events"
        ],
        "summary": "Record an advertising event in batch",
        "description": "Registers a new advertising event for the current user/publisher. Maximum of 100 events",
        "operationId": "advertisingEvent_1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "Advertising event data",
                "items": {
                  "$ref": "#/components/schemas/AdvertisingEventRequest"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Event recorded successfully",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdvertisingEventResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdvertisingEventResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdvertisingEventResponse"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/transaction-enrichment/async/{asyncId}": {
      "get": {
        "tags": [
          "Async Transaction Enrichment"
        ],
        "summary": "Get an async enrichment request by ID",
        "operationId": "getAsyncEnrichmentById",
        "parameters": [
          {
            "name": "asyncId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/AsyncTransactionResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/recommended/served-offers/{endUserId}": {
      "get": {
        "tags": [
          "Recommended offers for User"
        ],
        "summary": "Get served offers for a user",
        "description": "Retrieves all served offers for the specified end user.",
        "operationId": "getServed",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "description": "End user ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user_123"
          }
        ],
        "responses": {
          "200": {
            "description": "Served offers retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/recommended/redeemed-offers/{endUserId}": {
      "get": {
        "tags": [
          "Recommended offers for User"
        ],
        "summary": "Get redeemed offers for a user",
        "description": "Retrieves all redeemed offers for the specified end user.",
        "operationId": "getRedeemed",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "description": "End user ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user_123"
          }
        ],
        "responses": {
          "200": {
            "description": "Redeemed offers retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/recommended/hero-offers/{endUserId}": {
      "get": {
        "tags": [
          "Recommended offers for User"
        ],
        "summary": "Get hero offers for a user",
        "description": "Retrieves hero offers available to the specified end user. Supports optional page size parameter.",
        "operationId": "getHeroOffers",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "description": "End user ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user_123"
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of offers to retrieve per page",
            "required": false,
            "schema": {
              "type": "string",
              "default": "2"
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "Hero offers retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/recommended/expired-offers/{endUserId}": {
      "get": {
        "tags": [
          "Recommended offers for User"
        ],
        "summary": "Get expired offers for a user",
        "description": "Retrieves all expired offers for the specified end user.",
        "operationId": "getExpired",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "description": "End user ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user_123"
          }
        ],
        "responses": {
          "200": {
            "description": "Expired offers retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/recommended/activated-offers/{endUserId}": {
      "get": {
        "tags": [
          "Recommended offers for User"
        ],
        "summary": "Get activated offers for a user",
        "description": "Retrieves all activated offers for the specified end user.",
        "operationId": "getActivated",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "description": "End user ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user_123"
          }
        ],
        "responses": {
          "200": {
            "description": "Activated offers retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalisedOffersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/program/retailer": {
      "get": {
        "tags": [
          "Program"
        ],
        "summary": "List program retailers",
        "operationId": "getRetailers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageProgramRetailerAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/program/retailer/{retailerId}": {
      "get": {
        "tags": [
          "Program"
        ],
        "summary": "Get a program retailer by ID",
        "operationId": "getRetailerById",
        "parameters": [
          {
            "name": "retailerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramRetailerAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/program/offer": {
      "get": {
        "tags": [
          "Program"
        ],
        "summary": "List activated program offers",
        "operationId": "getActivatedOffers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageProgramOfferAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/program/offer/{offerId}": {
      "get": {
        "tags": [
          "Program"
        ],
        "summary": "Get an activated program offer by ID",
        "operationId": "getActivatedOfferById",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramOfferAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/program/offer-list/{userId}": {
      "get": {
        "tags": [
          "Program"
        ],
        "summary": "List personalised offers for an end user",
        "operationId": "getPersonalisedOffersListForUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageProgramOfferAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/product/inventory": {
      "get": {
        "tags": [
          "Product"
        ],
        "summary": "Get product inventory",
        "description": "Retrieve a paginated list of product inventory.",
        "operationId": "getProduct",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "25"
            }
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Type of product",
                "enum": [
                  "VOUCHER",
                  "GIFTCARD"
                ]
              }
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product inventory retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageProductInventoryTableResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageProductInventoryTableResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/product/inventory/{productId}": {
      "get": {
        "tags": [
          "Product"
        ],
        "summary": "Get product by Id",
        "description": "Retrieve a product by id",
        "operationId": "getProductById",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCatalogueResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCatalogueResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCatalogueResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/view/products": {
      "get": {
        "tags": [
          "End User"
        ],
        "summary": "View assigned products",
        "description": "Returns products that are currently assigned, locked and not expired",
        "operationId": "viewAvailableProducts",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "used",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/view/availableTriggerBasedRules": {
      "get": {
        "tags": [
          "End User"
        ],
        "summary": "View trigger-based rules",
        "description": "Returns TRIGGER rules already assigned to user through trigger events",
        "operationId": "viewAvailableTriggerBasedRules",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "description": "External end user identifier",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "used",
            "in": "query",
            "description": "Return rules already consumed",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "example": false
          }
        ],
        "responses": {
          "200": {
            "description": "List of trigger based rules",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductRulesEngine"
                }
              }
            }
          },
          "400": {
            "description": "User not found",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRulesEngine"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/view/availableSegmentBasedRules": {
      "get": {
        "tags": [
          "End User"
        ],
        "summary": "View segment-based rules",
        "description": "Returns SEGMENT rules available based on:\n- User customer tiers\n- Period limits (DAILY/WEEKLY/MONTHLY/YEARLY)\n- Previous assignments in period\n",
        "operationId": "viewAvailableSegmentBasedRules",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "used",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRulesEngine"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/customer-tier": {
      "get": {
        "tags": [
          "Customer Tiers"
        ],
        "summary": "List customer tiers",
        "operationId": "getCustomerTiers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCustomerTier"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/customer-tier/{id}": {
      "get": {
        "tags": [
          "Customer Tiers"
        ],
        "summary": "Get a customer tier by ID",
        "operationId": "customerTierById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerTier"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/catalogue/retailer": {
      "get": {
        "tags": [
          "Catalogue"
        ],
        "summary": "List catalogue retailers",
        "operationId": "getRetailers_1",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageRetailerAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/catalogue/retailer/{retailerId}": {
      "get": {
        "tags": [
          "Catalogue"
        ],
        "summary": "Get a catalogue retailer by ID",
        "operationId": "getRetailerById_1",
        "parameters": [
          {
            "name": "retailerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/RetailerAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/catalogue/offer": {
      "get": {
        "tags": [
          "Catalogue"
        ],
        "summary": "List catalogue offers",
        "operationId": "getOffers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageOfferAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/catalogue/offer/{offerId}": {
      "get": {
        "tags": [
          "Catalogue"
        ],
        "summary": "Get a catalogue offer by ID",
        "operationId": "getOfferById",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/OfferAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/cashback": {
      "get": {
        "tags": [
          "Cashback"
        ],
        "summary": "Get cashback objects",
        "description": "Retrieve a paginated list of cashback objects. Optionally filter by start and end date.",
        "operationId": "getCashbackObjects",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            },
            "example": 50
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Start date for filtering (inclusive), format: yyyy-MM-dd",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2025-01-01"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "End date for filtering (inclusive), format: yyyy-MM-dd",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2025-01-31"
          }
        ],
        "responses": {
          "200": {
            "description": "Cashback objects retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCashbackAPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid date filter provided",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCashbackAPIResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCashbackAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/cashback/user/{userId}": {
      "get": {
        "tags": [
          "Cashback"
        ],
        "summary": "Get cashback objects for a specific user",
        "description": "Retrieve a paginated list of cashback objects for a specific user. Optionally filter by start and end date.",
        "operationId": "getCashbackObjectsByUserId",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "User ID to fetch cashback objects for",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user_123"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size",
            "required": false,
            "schema": {
              "type": "string",
              "default": "50"
            },
            "example": 50
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Start date for filtering (inclusive), format: yyyy-MM-dd",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2025-01-01"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "End date for filtering (inclusive), format: yyyy-MM-dd",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2025-01-31"
          }
        ],
        "responses": {
          "200": {
            "description": "Cashback objects retrieved successfully",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCashbackAPIResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid date filter provided",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCashbackAPIResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageCashbackAPIResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/remove/tier/{tierId}": {
      "delete": {
        "tags": [
          "End User"
        ],
        "summary": "Remove a tier from an end user",
        "operationId": "removeTierFromUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    },
    "/end-user/{endUserId}/remove/offer/{offerId}": {
      "delete": {
        "tags": [
          "End User"
        ],
        "summary": "Remove an offer from an end user",
        "operationId": "removeOfferFromUser",
        "parameters": [
          {
            "name": "endUserId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/EndUser"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer Authentication": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AdditionalCardData": {
        "type": "object",
        "properties": {
          "cardNetworkIdentifier": {
            "type": "string"
          },
          "merchantAddress": {
            "type": "string"
          },
          "mcc": {
            "type": "string"
          },
          "paymentMethodEntryType": {
            "type": "string"
          },
          "walletDescription": {
            "type": "string"
          },
          "maskedPan": {
            "type": "string"
          },
          "authCode": {
            "type": "string"
          },
          "mid": {
            "type": "string"
          },
          "arn": {
            "type": "string"
          },
          "transactionSequenceCode": {
            "type": "string"
          }
        },
        "required": [
          "cardNetworkIdentifier",
          "maskedPan",
          "mcc",
          "merchantAddress",
          "mid"
        ]
      },
      "AdditionalOpenbankingData": {
        "type": "object",
        "properties": {
          "iban": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "TransactionAmount": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "TransactionRequest": {
        "type": "object",
        "properties": {
          "endUserId": {
            "type": "string"
          },
          "transactionId": {
            "type": "string"
          },
          "transactionType": {
            "type": "string",
            "enum": [
              "AUTHORIZED",
              "CLEAR",
              "RETURN",
              "CHARGEBACK",
              "OPENBANKING"
            ]
          },
          "authTransactionId": {
            "type": "string"
          },
          "bookingDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "transactionAmount": {
            "$ref": "#/components/schemas/TransactionAmount"
          },
          "rawTransactionDescription": {
            "type": "string"
          },
          "proprietaryBankTransactionCode": {
            "type": "string"
          },
          "creditorName": {
            "type": "string"
          },
          "additionalOpenbankingData": {
            "$ref": "#/components/schemas/AdditionalOpenbankingData"
          },
          "additionalCardData": {
            "$ref": "#/components/schemas/AdditionalCardData"
          }
        },
        "required": [
          "bookingDateTime",
          "creditorName",
          "endUserId",
          "proprietaryBankTransactionCode",
          "rawTransactionDescription",
          "transactionAmount",
          "transactionId",
          "transactionType"
        ]
      },
      "CashbackRule": {
        "type": "object",
        "properties": {
          "customerType": {
            "type": "string"
          },
          "lapsedInDays": {
            "type": "integer",
            "format": "int32"
          },
          "newCustomerConsideredInMonths": {
            "type": "integer",
            "format": "int32"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Condition"
            }
          },
          "offerUsageType": {
            "type": "string",
            "enum": [
              "SINGLE_USE",
              "MULTI_USE",
              "LIMITED_USE"
            ]
          },
          "transactionLimit": {
            "type": "integer",
            "format": "int32"
          },
          "limitPeriodInMonths": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "Channel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "retailerId": {
            "type": "string"
          },
          "channelName": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "postcode": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "mids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "channelType": {
            "type": "string",
            "enum": [
              "ANY",
              "INSTORE",
              "ONLINE"
            ]
          },
          "ChannelType": {
            "type": "string",
            "enum": [
              "ANY",
              "INSTORE",
              "ONLINE"
            ]
          }
        }
      },
      "Condition": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN"
            ]
          },
          "lowerBound": {
            "type": "number",
            "format": "double"
          },
          "upperBound": {
            "type": "number",
            "format": "double"
          },
          "value": {
            "$ref": "#/components/schemas/Value"
          },
          "fixedDistributorCommission": {
            "type": "boolean"
          }
        }
      },
      "DisplayInformation": {
        "type": "object",
        "properties": {
          "retailerName": {
            "type": "string"
          },
          "logo": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "termsAndConditions": {
            "type": "string"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "HEALTH_BEAUTY",
                "ELECTRONICS",
                "FASHION",
                "HOME",
                "LUXURY",
                "SPORTS",
                "TRAVEL",
                "DIGITAL",
                "ACCESSORIES",
                "FOOD_DRINK",
                "SHOPPING",
                "WELLNESS",
                "ENTERTAINMENT",
                "ESSENTIALS"
              ]
            }
          },
          "banner": {
            "type": "string"
          },
          "link": {
            "type": "string"
          }
        }
      },
      "DisplayRule": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "highestCashbackPercentageAmount": {
            "type": "number",
            "format": "double"
          },
          "valueType": {
            "type": "string",
            "enum": [
              "FIXED",
              "PERCENTAGE",
              "PERCENTAGE_MAX"
            ]
          }
        }
      },
      "EnrichedCreditorData": {
        "type": "object",
        "properties": {
          "website": {
            "type": "string"
          },
          "merchant": {
            "type": "string"
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "logo": {
            "type": "string"
          },
          "intermediaries": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "locationStructured": {
            "type": "object",
            "additionalProperties": {}
          },
          "location": {
            "type": "string"
          }
        }
      },
      "ProgramOfferAPIResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "retailerId": {
            "type": "string"
          },
          "offerName": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "logo": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "currencyList": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "offerType": {
            "type": "string",
            "enum": [
              "PAYMENT",
              "GIFTCARD",
              "ONLINE",
              "CLICK_TO_ACTIVATE"
            ]
          },
          "activationLength": {
            "type": "integer",
            "format": "int32"
          },
          "channelList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Channel"
            }
          },
          "personalisationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "displayInformation": {
            "$ref": "#/components/schemas/DisplayInformation"
          },
          "displayRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisplayRule"
            }
          },
          "cashbackRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashbackRule"
            }
          },
          "active": {
            "type": "boolean"
          },
          "offerApproval": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "DECLINED",
              "NOT_APPLIED_FOR"
            ]
          },
          "customerTierType": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "TIERED",
              "SET"
            ]
          },
          "selectedCustomerTiers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "spendingCapped": {
            "type": "boolean"
          },
          "spendingCapAmount": {
            "type": "number",
            "format": "double"
          },
          "noticePeriodInDays": {
            "type": "integer",
            "format": "int32"
          },
          "inNoticePeriod": {
            "type": "boolean"
          },
          "endDateOfCampaign": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TransactionDataAPIResponse": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string"
          },
          "transactionAmount": {
            "$ref": "#/components/schemas/TransactionAmount"
          },
          "remittanceInformationUnstructured": {
            "type": "string"
          },
          "enrichedCreditorData": {
            "$ref": "#/components/schemas/EnrichedCreditorData"
          },
          "offersAvailable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgramOfferAPIResponse"
            }
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Value": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "FIXED",
              "PERCENTAGE",
              "PERCENTAGE_MAX"
            ]
          },
          "totalValue": {
            "type": "number",
            "format": "double"
          },
          "maxAvailableValue": {
            "type": "number",
            "format": "double"
          },
          "maximum": {
            "type": "number",
            "format": "double"
          },
          "endUserValue": {
            "type": "number",
            "format": "double"
          },
          "supplierValue": {
            "type": "number",
            "format": "double"
          },
          "boogiValue": {
            "type": "number",
            "format": "double"
          },
          "clientValue": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "AsyncTransactionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "IN_PROGRESS",
              "COMPLETED",
              "FAILED"
            ]
          },
          "transactionDataList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionDataAPIResponse"
            }
          }
        }
      },
      "TransactionSupportRequest": {
        "type": "object",
        "properties": {
          "endUserId": {
            "type": "string"
          },
          "transactionId": {
            "type": "string"
          },
          "programOfferId": {
            "type": "string"
          },
          "endUserMessage": {
            "type": "string"
          }
        }
      },
      "ActionData": {
        "type": "object",
        "properties": {
          "actions": {
            "type": "string",
            "enum": [
              "NO_ISSUE_IDENTIFIED",
              "IDENTIFIED_MISSING_OFFER_DATA",
              "IDENTIFIED_TECHNICAL_ISSUE",
              "RE_RUN_TRANSACTION",
              "GENERATE_CASHBACK",
              "RELEASE_CASHBACK",
              "RESOLVED_QUERY",
              "ESCALATED_TO_CASHBACK_TECHNOLOGY_PROVIDER",
              "ESCALATED_TO_OFFER_SUPPLIER"
            ]
          },
          "notes": {
            "type": "string"
          }
        }
      },
      "CashbackObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "endUserId": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "PAYMENT",
              "GIFTCARD",
              "ONLINE",
              "CLICK_TO_ACTIVATE"
            ]
          },
          "payoutData": {
            "$ref": "#/components/schemas/PayoutData"
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "REFUNDED",
              "BEING_VERIFIED",
              "VERIFIED",
              "RECEIVED",
              "PAID",
              "DECLINED",
              "DISQUALIFIED"
            ]
          },
          "isRefunded": {
            "type": "boolean"
          },
          "declinedReason": {
            "type": "string"
          },
          "transactionData": {
            "$ref": "#/components/schemas/TransactionData"
          },
          "transactionAmountOverwritten": {
            "type": "boolean"
          },
          "transactionAmountOverwrittenValue": {
            "type": "number",
            "format": "double"
          },
          "awinTransactionId": {
            "type": "string"
          },
          "cardlyticsId": {
            "type": "string"
          },
          "cardlyticsOfferId": {
            "type": "string"
          },
          "clickEventDate": {
            "type": "string",
            "format": "date-time"
          },
          "clickEventId": {
            "type": "string"
          },
          "programOffer": {
            "$ref": "#/components/schemas/ProgramOffer"
          },
          "cashbackRuleApplied": {
            "$ref": "#/components/schemas/CashbackRule"
          },
          "verifiedOn": {
            "type": "string",
            "format": "date-time"
          },
          "receivedOn": {
            "type": "string",
            "format": "date-time"
          },
          "paidOn": {
            "type": "string",
            "format": "date-time"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "MissedTransactionQuery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "endUserId": {
            "type": "string"
          },
          "transactionId": {
            "type": "string"
          },
          "endUserMessage": {
            "type": "string"
          },
          "programOfferRequested": {
            "$ref": "#/components/schemas/ProgramOffer"
          },
          "identifiedProgramOffer": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgramOffer"
            }
          },
          "cashbackObjectListGeneratedOrginally": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashbackObject"
            }
          },
          "cashbackObjectsGeneratedOnReGeneration": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashbackObject"
            }
          },
          "supportLevel": {
            "type": "string",
            "enum": [
              "CLIENT",
              "BOOGI",
              "SUPPLIER"
            ]
          },
          "actionLog": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ActionData"
            }
          },
          "resolved": {
            "type": "boolean"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          },
          "resolvedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PayoutData": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "merchant": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "contentSupplier": {
            "type": "string"
          },
          "endUserCashbackReceivable": {
            "type": "number",
            "format": "double"
          },
          "publisherCashbackReceivable": {
            "type": "number",
            "format": "double"
          },
          "maxCashbackReached": {
            "type": "boolean"
          },
          "endUserCashbackReceivableGBP": {
            "type": "number",
            "format": "double"
          },
          "publisherCashbackReceivableGBP": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ProgramOffer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "offer": {
            "$ref": "#/components/schemas/RetailerOffer"
          },
          "retailer": {
            "$ref": "#/components/schemas/Retailer"
          },
          "cashbackEarnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashbackRule"
            }
          },
          "allCommissionToEndUser": {
            "type": "boolean"
          },
          "displayRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisplayRule"
            }
          },
          "active": {
            "type": "boolean"
          },
          "offerApproval": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "DECLINED",
              "NOT_APPLIED_FOR"
            ]
          },
          "declinedReason": {
            "type": "string"
          },
          "customerTierType": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "TIERED",
              "SET"
            ]
          },
          "selectedCustomerTiers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Retailer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "personalisationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "logo": {
            "type": "string"
          },
          "openBankingPublisherCompatible": {
            "type": "boolean"
          },
          "monthlyWebVisits": {
            "type": "integer",
            "format": "int32"
          },
          "goodForBusiness": {
            "type": "boolean"
          },
          "luxury": {
            "type": "boolean"
          },
          "subscription": {
            "type": "boolean"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RetailerOffer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "offerName": {
            "type": "string"
          },
          "offerType": {
            "type": "string",
            "enum": [
              "PAYMENT",
              "GIFTCARD",
              "ONLINE",
              "CLICK_TO_ACTIVATE"
            ]
          },
          "activationLengthInDays": {
            "type": "integer",
            "format": "int32"
          },
          "supplier": {
            "type": "string"
          },
          "supplierOfferIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "supplierOffersId": {
            "type": "string"
          },
          "noticePeriodInDays": {
            "type": "integer",
            "format": "int32"
          },
          "inNoticePeriod": {
            "type": "boolean"
          },
          "endDateOfCampaign": {
            "type": "string",
            "format": "date-time"
          },
          "ownerId": {
            "type": "string"
          },
          "hidden": {
            "type": "boolean"
          },
          "requiresApproval": {
            "type": "boolean"
          },
          "obPublisherCompatible": {
            "type": "boolean"
          },
          "currencyList": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "retailer": {
            "$ref": "#/components/schemas/Retailer"
          },
          "validFor": {
            "type": "string",
            "enum": [
              "SPECIFIC_CHANNELS",
              "ALL_CHANNELS"
            ]
          },
          "superMatch": {
            "type": "boolean"
          },
          "unenrichedCreditorsStrings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "channels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Channel"
            }
          },
          "cashbackRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashbackRule"
            }
          },
          "spendingCapped": {
            "type": "boolean"
          },
          "spendingCapAmount": {
            "type": "number",
            "format": "double"
          },
          "displayInformation": {
            "$ref": "#/components/schemas/DisplayInformation"
          },
          "customReporting": {
            "type": "boolean"
          },
          "reportingPeriod": {
            "type": "string",
            "enum": [
              "DAILY",
              "WEEKLY",
              "BI_WEEKLY",
              "MONTHLY"
            ]
          },
          "lastReportGeneratedOn": {
            "type": "string",
            "format": "date-time"
          },
          "customRefundPeriod": {
            "type": "boolean"
          },
          "refundPeriodInDays": {
            "type": "integer",
            "format": "int32"
          },
          "lastRefundReportGeneratedOn": {
            "type": "string",
            "format": "date-time"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          },
          "spendingCappedRaw": {
            "type": "boolean"
          }
        }
      },
      "TransactionData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "transactionType": {
            "type": "string",
            "enum": [
              "AUTHORIZED",
              "CLEAR",
              "RETURN",
              "CHARGEBACK",
              "OPENBANKING"
            ]
          },
          "publisherId": {
            "type": "string"
          },
          "internalTransactionId": {
            "type": "string"
          },
          "authId": {
            "type": "string"
          },
          "endUserId": {
            "type": "string"
          },
          "bookingDate": {
            "type": "string"
          },
          "bookingDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "valueDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "transactionAmount": {
            "$ref": "#/components/schemas/TransactionAmount"
          },
          "standardisedGBPTransactionAmount": {
            "$ref": "#/components/schemas/TransactionAmount"
          },
          "remittanceInformationUnstructured": {
            "type": "string"
          },
          "unEnrichedCreditorName": {
            "type": "string"
          },
          "proprietaryBankTransactionCode": {
            "type": "string"
          },
          "enrichedCreditorData": {
            "$ref": "#/components/schemas/EnrichedCreditorData"
          },
          "additionalCardData": {
            "$ref": "#/components/schemas/AdditionalCardData"
          },
          "additionalOpenbankingData": {
            "$ref": "#/components/schemas/AdditionalOpenbankingData"
          },
          "offersAvailable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgramOffer"
            }
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "sourceType": {
            "type": "string",
            "enum": [
              "API",
              "FILE",
              "EXPERIMENT"
            ]
          },
          "sourceId": {
            "type": "string"
          },
          "processed": {
            "type": "boolean"
          },
          "processingStartedAt": {
            "type": "string",
            "format": "date-time"
          },
          "uploadedIntoCDLX": {
            "type": "boolean"
          },
          "cdlxUploadStatus": {
            "type": "string",
            "enum": [
              "UPLOADED",
              "FAILED",
              "PENDING"
            ]
          },
          "uploadedIntoCardlyticsDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AccountDataRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "CONSUMER_DEBIT",
              "CONSUMER_CREDIT",
              "BUSINESS_DEBIT",
              "BUSINESS_CREDIT",
              "OPENBANKING"
            ]
          },
          "accountStatus": {
            "type": "string",
            "enum": [
              "OPEN",
              "CLOSED",
              "RESTRICTED",
              "FRAUD"
            ]
          },
          "cards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardRequest"
            }
          },
          "openDate": {
            "type": "string",
            "format": "date-time"
          },
          "closeDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AddEndUserRequest": {
        "type": "object",
        "properties": {
          "endUserId": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "defaultOptIn": {
            "type": "boolean"
          },
          "accountData": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountDataRequest"
            }
          },
          "enrollmentStartDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "country",
          "endUserId",
          "enrollmentStartDate",
          "postalCode"
        ]
      },
      "CardRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "maskedPan": {
            "type": "string"
          },
          "iin": {
            "type": "string"
          },
          "networkIdentifier": {
            "type": "string"
          },
          "cardType": {
            "type": "string",
            "enum": [
              "DEBIT",
              "CREDIT",
              "PREPAID"
            ]
          },
          "cardStatus": {
            "type": "string",
            "enum": [
              "OPEN",
              "CLOSED",
              "RESTRICTED",
              "EXPIRED",
              "LOST_STOLEN"
            ]
          },
          "openDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "Card": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "maskedPan": {
            "type": "string"
          },
          "iin": {
            "type": "string"
          },
          "networkIdentifier": {
            "type": "string"
          },
          "cardType": {
            "type": "string",
            "enum": [
              "DEBIT",
              "CREDIT",
              "PREPAID"
            ]
          },
          "cardStatus": {
            "type": "string",
            "enum": [
              "OPEN",
              "CLOSED",
              "RESTRICTED",
              "EXPIRED",
              "LOST_STOLEN"
            ]
          },
          "openDate": {
            "type": "string",
            "format": "date-time"
          },
          "closeDate": {
            "type": "string",
            "format": "date-time"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "EndUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "endUserId": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "defaultOptIn": {
            "type": "boolean"
          },
          "customerTiers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "assignedProgramOffers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "accountData": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndUserAccountData"
            }
          },
          "enrollmentStartDate": {
            "type": "string",
            "format": "date-time"
          },
          "enrollmentEndDate": {
            "type": "string",
            "format": "date-time"
          },
          "enrolledIntoCardlytics": {
            "type": "boolean"
          },
          "cdlxUploadRunId": {
            "type": "string"
          },
          "cdlxUploadStatus": {
            "type": "string",
            "enum": [
              "UPLOADED",
              "FAILED",
              "PENDING"
            ]
          },
          "enrolledIntoCardlyticsDate": {
            "type": "string",
            "format": "date-time"
          },
          "lastSeen": {
            "type": "string",
            "format": "date-time"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "EndUserAccountData": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "uniqueCDLXAccountId": {
            "type": "string"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "CONSUMER_DEBIT",
              "CONSUMER_CREDIT",
              "BUSINESS_DEBIT",
              "BUSINESS_CREDIT",
              "OPENBANKING"
            ]
          },
          "accountStatus": {
            "type": "string",
            "enum": [
              "OPEN",
              "CLOSED",
              "RESTRICTED",
              "FRAUD"
            ]
          },
          "cards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Card"
            }
          },
          "openDate": {
            "type": "string",
            "format": "date-time"
          },
          "closeDate": {
            "type": "string",
            "format": "date-time"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "UpdateEndUserRequest": {
        "type": "object",
        "properties": {
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "defaultOptIn": {
            "type": "boolean"
          },
          "enrollmentEndDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "country",
          "postalCode"
        ]
      },
      "UnlockTokenRequest": {
        "type": "object",
        "description": "Credential required to unlock a voucher",
        "properties": {
          "secretToken": {
            "type": "string",
            "description": "One-time credential returned during product assignment",
            "example": "a8f7c6d2-9e1b-4c3a-bf12-5d6e7a8b9c10"
          }
        },
        "required": [
          "secretToken"
        ]
      },
      "VoucherCodeUnlockResponse": {
        "type": "object",
        "properties": {
          "voucherId": {
            "type": "string"
          },
          "plainTextCode": {
            "type": "string"
          }
        }
      },
      "ProductAssignResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "productResponse": {
            "$ref": "#/components/schemas/ProductResponse"
          }
        }
      },
      "ProductResponse": {
        "type": "object",
        "description": "Product assigned to end user",
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal product id",
            "example": "prod_123"
          },
          "endUserId": {
            "type": "string",
            "description": "External end user identifier",
            "example": "user_456"
          },
          "productType": {
            "type": "string",
            "description": "Type of product",
            "enum": [
              "VOUCHER",
              "GIFTCARD"
            ]
          },
          "displayType": {
            "type": "string",
            "description": "How product should be rendered in UI",
            "enum": [
              "LINK",
              "CODE"
            ]
          },
          "productName": {
            "type": "string",
            "example": "Amazon Gift Card $10"
          },
          "productLogo": {
            "type": "string",
            "description": "URL to product logo"
          },
          "retailerName": {
            "type": "string",
            "example": "Amazon"
          },
          "retailerLogo": {
            "type": "string",
            "description": "Retailer brand logo"
          },
          "retailerWebsite": {
            "type": "string",
            "example": "https://amazon.com"
          },
          "productDescription": {
            "type": "string",
            "description": "Marketing description"
          },
          "termsAndConditions": {
            "type": "string",
            "description": "Legal terms"
          },
          "category": {
            "type": "string",
            "example": "SHOPPING"
          },
          "voucherValue": {
            "type": "number",
            "format": "double",
            "example": 10
          },
          "assignedOn": {
            "type": "string",
            "format": "date-time",
            "description": "When product was assigned"
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time",
            "description": "Voucher expiry date"
          },
          "isLocked": {
            "type": "boolean",
            "description": "True = requires unlock flow"
          },
          "unlockedOn": {
            "type": "string",
            "format": "date-time",
            "description": "When voucher was unlocked"
          }
        }
      },
      "EndUserAuthRequest": {
        "type": "object",
        "properties": {
          "endUserId": {
            "type": "string"
          }
        }
      },
      "EndUserToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "token": {
            "type": "string"
          }
        }
      },
      "ActivateOfferRequest": {
        "type": "object",
        "properties": {
          "endUserId": {
            "type": "string"
          }
        }
      },
      "EndUserOfferActivation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "endUserId": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "programOfferId": {
            "type": "string"
          },
          "activationDate": {
            "type": "string",
            "format": "date-time"
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ManualCashbackUpdateRequest": {
        "type": "object",
        "description": "Manual update request payload",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "REFUNDED",
              "BEING_VERIFIED",
              "VERIFIED",
              "RECEIVED",
              "PAID",
              "DECLINED",
              "DISQUALIFIED"
            ]
          }
        }
      },
      "CashbackAPIResponse": {
        "type": "object",
        "properties": {
          "cashbackId": {
            "type": "string"
          },
          "endUserId": {
            "type": "string"
          },
          "transactionId": {
            "type": "string"
          },
          "offerId": {
            "type": "string"
          },
          "retailerId": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "logo": {
            "type": "string"
          },
          "cashbackRuleApplied": {
            "$ref": "#/components/schemas/CashbackRule"
          },
          "payoutData": {
            "$ref": "#/components/schemas/PayoutData"
          },
          "transactionAmount": {
            "$ref": "#/components/schemas/TransactionAmount"
          },
          "transactionAmountOverwritten": {
            "type": "boolean"
          },
          "transactionAmountOverwrittenValue": {
            "type": "number",
            "format": "double"
          },
          "cashbackStatus": {
            "type": "string",
            "enum": [
              "CREATED",
              "REFUNDED",
              "BEING_VERIFIED",
              "VERIFIED",
              "RECEIVED",
              "PAID",
              "DECLINED",
              "DISQUALIFIED"
            ]
          },
          "declinedReason": {
            "type": "string"
          },
          "verifiedOn": {
            "type": "string",
            "format": "date-time"
          },
          "receivedOn": {
            "type": "string",
            "format": "date-time"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AdvertisingEventRequest": {
        "type": "object",
        "description": "Advertising event data",
        "properties": {
          "endUserId": {
            "type": "string",
            "description": "Unique identifier of the end user",
            "example": "user_12345"
          },
          "eventMetaData": {
            "$ref": "#/components/schemas/EventData",
            "description": "Metadata associated with the event"
          },
          "isCardlyticsEvent": {
            "type": "boolean",
            "description": "Indicates if the event is required for Cardlytics",
            "example": true
          },
          "eventTimestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Optional event timestamp. If provided, overrides the createdOn time for the event. Must be a valid ISO-8601 date-time string.",
            "example": "2024-01-15T10:30:00Z"
          }
        },
        "required": [
          "endUserId",
          "eventMetaData",
          "isCardlyticsEvent"
        ]
      },
      "EventData": {
        "type": "object",
        "description": "Detailed metadata about the advertising event",
        "properties": {
          "eventType": {
            "type": "string",
            "description": "Type of the event",
            "enum": [
              "AD_IMPRESSION",
              "AD_INTERACTION",
              "CUSTOMER_PROFILE_ACTION",
              "SESSION_ACTION"
            ],
            "example": "AD_IMPRESSION"
          },
          "eventAction": {
            "type": "string",
            "description": "Action performed in the event",
            "enum": [
              "DISPLAY_ELEMENT_EXPANDED",
              "DISPLAY_ELEMENT_COLLAPSED",
              "URL_LINK_CLICKED",
              "URL_LINK_CONTINUE",
              "ACTIVATE_OFFER",
              "PARK_OFFER",
              "UNPARK_OFFER",
              "UNPARK_ALL_OFFERS",
              "AD_VIEWABLE_IMPRESSION",
              "LOG_ENROLLMENT",
              "REWARD_SUMMARY_LINK_CLICKED",
              "LEARN_MORE_LINK_CLICKED",
              "FAQ_LINK_CLICKED",
              "EXPIRED_OFFER_LINK_CLICK",
              "OFFER_EXPIRING_SOON",
              "OFFER_EXPIRED",
              "URL_LINK_CONNECTED"
            ],
            "example": "AD_VIEWABLE_IMPRESSION"
          },
          "eventOfferType": {
            "type": "string",
            "description": "Type of the offer associated with the event",
            "enum": [
              "CAMPAIGN",
              "PROGRAMOFFER",
              "CARDLYTICS"
            ],
            "example": "PROGRAMOFFER"
          },
          "offerIDCampaignIdServeTokenId": {
            "type": "string",
            "description": "Identifier linking offer, campaign, or token",
            "example": "offer123_campaign456_token789"
          },
          "displayChannel": {
            "type": "string",
            "description": "Display channel where the event occurred",
            "enum": [
              "Email",
              "SMS",
              "MMS",
              "OLB",
              "MobileWeb",
              "MobileApp",
              "MobileWallet",
              "MOBILE_APP",
              "WEB"
            ],
            "example": "MobileApp"
          },
          "section": {
            "type": "string",
            "description": "Section of the page or app where the event occurred",
            "enum": [
              "Email",
              "SMS",
              "MMS",
              "Transaction",
              "Summary",
              "Dashboard",
              "Landing",
              "OnboardingPage",
              "LatestOffers",
              "ExpiringSoon",
              "RewardSummaryListView",
              "FeaturedOffers",
              "Rewards",
              "WidgetAccountOverview",
              "WidgetDebit",
              "WidgetCredit",
              "WidgetBenefitsAndRewards",
              "Map",
              "RETAILER_LIST",
              "TAKEOVER",
              "FEATURE",
              "PROMOTED",
              "RETAILER_PAGE",
              "OFFER_PAGE"
            ],
            "example": "WidgetAccountOverview"
          },
          "categoryId": {
            "type": "string",
            "description": "Category identifier for the event",
            "example": "Food and Drink"
          },
          "imageSlots": {
            "type": "array",
            "description": "Image slots associated with the event",
            "example": [
              "logo",
              "smallRectangle",
              "largeRectangle"
            ],
            "items": {
              "type": "string"
            }
          },
          "curationId": {
            "type": "string",
            "description": "Curation identifier if applicable",
            "example": "offerList"
          },
          "displayPosition": {
            "type": "integer",
            "format": "int32",
            "description": "Position of the item on display",
            "example": 2
          }
        },
        "required": [
          "eventAction",
          "eventOfferType",
          "eventType",
          "offerIDCampaignIdServeTokenId"
        ]
      },
      "AdvertisingEventResponse": {
        "type": "object",
        "description": "Response returned after an advertising event is recorded",
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Unique identifier of the recorded event",
            "example": "evt_1234567890"
          }
        }
      },
      "PageAsyncTransactionResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AsyncTransactionResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "PageableObject": {
        "type": "object",
        "properties": {
          "paged": {
            "type": "boolean"
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int64"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "unpaged": {
            "type": "boolean"
          }
        }
      },
      "SortObject": {
        "type": "object",
        "properties": {
          "empty": {
            "type": "boolean"
          },
          "sorted": {
            "type": "boolean"
          },
          "unsorted": {
            "type": "boolean"
          }
        }
      },
      "AdAssetList": {
        "type": "object",
        "properties": {
          "logo": {
            "$ref": "#/components/schemas/Image"
          },
          "largeRectangle": {
            "$ref": "#/components/schemas/Image"
          },
          "smallRectangle": {
            "$ref": "#/components/schemas/Image"
          },
          "copy": {
            "$ref": "#/components/schemas/Text"
          },
          "callsToAction": {
            "$ref": "#/components/schemas/CallsToAction"
          }
        }
      },
      "AdImageValue": {
        "type": "object",
        "properties": {
          "large": {
            "$ref": "#/components/schemas/ImageData"
          },
          "small": {
            "$ref": "#/components/schemas/ImageData"
          }
        }
      },
      "AdReward": {
        "type": "object",
        "properties": {
          "purchaseRequirement": {
            "$ref": "#/components/schemas/PurchaseRequirement"
          },
          "rewardAmount": {
            "type": "number",
            "format": "float"
          },
          "maxRewardAmount": {
            "type": "number",
            "format": "float"
          },
          "rewardType": {
            "type": "string",
            "enum": [
              "PERCENT_AMOUNT_PURCHASE",
              "FIXED_AMOUNT_PURCHASE"
            ]
          },
          "isMultiRedemption": {
            "type": "boolean"
          },
          "activationModel": {
            "type": "string",
            "enum": [
              "ACTIVATABLE",
              "AUTO_ACTIVATED"
            ]
          }
        }
      },
      "CallsToAction": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "value": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          }
        }
      },
      "CardlyticsOfferResponse": {
        "type": "object",
        "description": "Detailed information about a Cardlytics offer",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID of the offer",
            "example": "offer_12345"
          },
          "eventActionsId": {
            "type": "string",
            "description": "Identifier for event actions associated with this offer",
            "example": "evt_67890"
          },
          "retailerName": {
            "type": "string",
            "description": "Name of the retailer offering this campaign",
            "example": "Tesco's"
          },
          "logo": {
            "type": "string",
            "description": "URL or reference to the retailer's logo",
            "example": "https://example.com/logo.png"
          },
          "campaignEndDate": {
            "type": "string",
            "description": "End date of the campaign in ISO format",
            "example": "2025-12-31"
          },
          "offerType": {
            "type": "string",
            "description": "Type of the offer",
            "enum": [
              "PAYMENT",
              "GIFTCARD",
              "ONLINE",
              "CLICK_TO_ACTIVATE"
            ],
            "example": "CLICK_TO_ACTIVATE"
          },
          "highestCashbackPercentageAmount": {
            "type": "number",
            "format": "double",
            "description": "Highest cashback percentage available",
            "example": 15
          },
          "adReward": {
            "$ref": "#/components/schemas/AdReward",
            "description": "Reward details associated with the offer"
          },
          "valueType": {
            "type": "string",
            "description": "Type of value for cashback or reward",
            "enum": [
              "FIXED",
              "PERCENTAGE",
              "PERCENTAGE_MAX"
            ],
            "example": "PERCENTAGE"
          },
          "displayAssets": {
            "$ref": "#/components/schemas/AdAssetList",
            "description": "List of display assets for the offer"
          },
          "activationState": {
            "type": "string",
            "description": "Activation state of the ad",
            "enum": [
              "NEW",
              "SERVED",
              "ACTIVATED"
            ],
            "example": "SERVED"
          },
          "activationDate": {
            "type": "string",
            "description": "Date when the ad was activated",
            "example": "2025-01-01T10:00:00Z"
          },
          "visibilityState": {
            "type": "string",
            "description": "Visibility state of the ad",
            "enum": [
              "VISIBLE",
              "PARKED"
            ],
            "example": "VISIBLE"
          },
          "redemptionState": {
            "type": "string",
            "description": "Redemption state of the ad",
            "enum": [
              "FULLY_REDEEMED"
            ],
            "example": "FULLY_REDEEMED"
          }
        }
      },
      "Image": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/AdImageValue"
          }
        }
      },
      "ImageData": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "width": {
            "type": "integer",
            "format": "int32"
          },
          "height": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PersonalisedOffersResponse": {
        "type": "object",
        "description": "Response containing a list of personalised offers and total count",
        "properties": {
          "offers": {
            "type": "array",
            "description": "List of offers returned",
            "items": {
              "$ref": "#/components/schemas/CardlyticsOfferResponse"
            }
          },
          "totalOffers": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of offers available",
            "example": 5
          }
        },
        "required": [
          "offers",
          "totalOffers"
        ]
      },
      "PurchaseRequirement": {
        "type": "object",
        "properties": {
          "minSpendAmount": {
            "type": "number",
            "format": "float"
          },
          "purchaseChannels": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "InStore",
                "Online",
                "PayAtPump",
                "App",
                "Convenience"
              ]
            }
          },
          "purchaseTypes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Subscription",
                "Membership",
                "Fuel"
              ]
            }
          },
          "merchantUrlLinkClickRequired": {
            "type": "boolean"
          }
        }
      },
      "Text": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "value": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "PageProgramRetailerAPIResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgramRetailerAPIResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "ProgramRetailerAPIResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "retailerLogo": {
            "type": "string"
          },
          "personalisationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "highestCashbackPercentageAmount": {
            "type": "number",
            "format": "double"
          },
          "programOfferIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "PageProgramOfferAPIResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgramOfferAPIResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "PageProductInventoryTableResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductInventoryTableResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "ProductInventoryTableResponse": {
        "type": "object",
        "description": "Inventory summary for a product",
        "properties": {
          "productId": {
            "type": "string",
            "description": "Unique identifier of the product",
            "example": "prod_12345"
          },
          "productName": {
            "type": "string",
            "description": "Display name of the product",
            "example": "£10 Amazon Gift Card"
          },
          "retailerName": {
            "type": "string",
            "description": "Name of the retailer providing the product",
            "example": "Amazon"
          },
          "type": {
            "type": "string",
            "description": "Type of product",
            "enum": [
              "VOUCHER",
              "GIFTCARD"
            ],
            "example": "VOUCHER"
          },
          "category": {
            "type": "string",
            "description": "Category associated with the product",
            "example": "Shopping"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-3 country code where the product is available",
            "example": "GBR"
          },
          "totalPurchased": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of product units purchased",
            "example": 1000
          },
          "remaining": {
            "type": "integer",
            "format": "int32",
            "description": "Number of product units currently remaining and available",
            "example": 650
          },
          "assigned": {
            "type": "integer",
            "format": "int32",
            "description": "Number of product units assigned to users but not yet used",
            "example": 250
          },
          "used": {
            "type": "integer",
            "format": "int32",
            "description": "Number of product units already used or redeemed",
            "example": 100
          }
        }
      },
      "ProductCatalogueResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "productName": {
            "type": "string"
          },
          "productLogo": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerLogo": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "productDescription": {
            "type": "string"
          },
          "termsAndConditions": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "Type of product",
            "enum": [
              "VOUCHER",
              "GIFTCARD"
            ]
          }
        }
      },
      "ProductRulesEngine": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "productIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "assignType": {
            "type": "string",
            "enum": [
              "TRIGGER",
              "SEGMENT",
              "MANUAL"
            ]
          },
          "assignedSegmentIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "periodType": {
            "type": "string",
            "enum": [
              "DAILY",
              "WEEKLY",
              "MONTHLY",
              "YEARLY",
              "ALL_TIME"
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CustomerTier": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "publisherId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "paidSubscription": {
            "type": "boolean"
          },
          "price": {
            "type": "number",
            "format": "double"
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedOn": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PageCustomerTier": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerTier"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "PageRetailerAPIResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RetailerAPIResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "RetailerAPIResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerLogo": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "personalisationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "offerIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "OfferAPIResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "retailerId": {
            "type": "string"
          },
          "retailerName": {
            "type": "string"
          },
          "retailerWebsite": {
            "type": "string"
          },
          "logo": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "currencyList": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "offerType": {
            "type": "string",
            "enum": [
              "PAYMENT",
              "GIFTCARD",
              "ONLINE",
              "CLICK_TO_ACTIVATE"
            ]
          },
          "personalisationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "displayInformation": {
            "$ref": "#/components/schemas/DisplayInformation"
          },
          "displayRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisplayRule"
            }
          },
          "programOffers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgramOfferApplication"
            }
          },
          "appliedFor": {
            "type": "boolean"
          }
        }
      },
      "PageOfferAPIResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferAPIResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      },
      "ProgramOfferApplication": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "offerApproval": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "DECLINED",
              "NOT_APPLIED_FOR"
            ]
          }
        }
      },
      "PageCashbackAPIResponse": {
        "type": "object",
        "properties": {
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "pageable": {
            "$ref": "#/components/schemas/PageableObject"
          },
          "first": {
            "type": "boolean"
          },
          "last": {
            "type": "boolean"
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashbackAPIResponse"
            }
          },
          "number": {
            "type": "integer",
            "format": "int32"
          },
          "sort": {
            "$ref": "#/components/schemas/SortObject"
          },
          "numberOfElements": {
            "type": "integer",
            "format": "int32"
          },
          "empty": {
            "type": "boolean"
          }
        }
      }
    },
    "securitySchemes": {
      "Bearer Authentication": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
