{
  "openapi": "3.1.0",
  "info": {
    "title": "LoyaltyDog Public API",
    "description": "Merchant-product REST API. Authenticate with Authorization: Bearer. This is the frozen public schema (not the full dashboard/admin OpenAPI).",
    "termsOfService": "https://loyalty.dog/loyalty-program-terms-service",
    "contact": {
      "name": "LoyaltyDog Support",
      "url": "https://loyalty.dog/contact-us",
      "email": "support@loyalty.dog"
    },
    "version": "1.0.1"
  },
  "servers": [
    {
      "url": "https://api.loyalty.dog",
      "description": "Production"
    }
  ],
  "paths": {
    "/v2/token": {
      "get": {
        "tags": [
          "Token"
        ],
        "summary": "Get Token Info",
        "description": "Retrieve user information associated with the current access token.\n\n### Parameters:\n- `current_user` (User): The user instance obtained from the current access token.\n\n### Returns:\n- `UserRead`: The serialized user data.",
        "operationId": "get_token_info_v2_token_get",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRead"
                }
              }
            }
          },
          "401": {
            "description": "Missing token or inactive user."
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Programs",
        "description": "### List Loyalty Programs\n\nRetrieve a list of all loyalty programs associated with the current user.\n\n- **Returns**: A list of loyalty programs in a simplified format.",
        "operationId": "get_loyalty_programs_v2_loyalty_programs_get",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BasicProgramRead"
                  },
                  "title": "Response Get Loyalty Programs V2 Loyalty Programs Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Details",
        "description": "### Get Loyalty Program Details\n\nFetch detailed information about a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: Detailed information of the specified loyalty program.",
        "operationId": "get_loyalty_program_details_v2_loyalty_programs__programId__get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Details",
        "description": "### Update Program\n\nUpdate the details of a specific loyalty program based on provided data.\n\n- **programId**: The unique identifier of the loyalty program.\n- **data**: A dictionary containing the fields to update.\n- **Returns**: The updated program details.",
        "operationId": "update_loyalty_program_details_v2_loyalty_programs__programId__put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProgramPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customFields": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Custom Fields",
        "description": "### Get Loyalty Program Custom Fields\n\nRetrieve custom fields defined for a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: A list of custom fields associated with the program.",
        "operationId": "get_loyalty_program_custom_fields_v2_loyalty_programs__programId__customFields_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Custom Fields",
        "description": "### Update Loyalty Program Custom Fields\n\nModify or replace the custom fields for a specific loyalty program.\n\n- **customFields**: A list of new custom fields to be applied.\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: A list of updated custom fields.",
        "operationId": "update_loyalty_program_custom_fields_v2_loyalty_programs__programId__customFields_put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TemplatePlaceholder"
                },
                "title": "Customfields"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/icon": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Icon",
        "description": "### Get Loyalty Program Icon\n\nRetrieve the icon image associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: The icon image data.",
        "operationId": "get_loyalty_program_icon_v2_loyalty_programs__programId__icon_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Icon",
        "description": "### Update Icon\n\nUpdate the icon image for a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **user**: The current active user making the request.\n- **image**: The new image file to be uploaded.\n- **crop**: Optional cropping instructions.\n- **Returns**: The updated icon image data.",
        "operationId": "update_loyalty_program_icon_v2_loyalty_programs__programId__icon_put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_loyalty_program_icon_v2_loyalty_programs__programId__icon_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/passtype": {
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Change Loyalty Program Pass Type",
        "description": "### Change Pass Type\n\nUpdate the pass type associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **passType**: The new pass type to be applied.\n- **Returns**: A response indicating the success of the operation.",
        "operationId": "change_loyalty_program_pass_type_v2_loyalty_programs__programId__passtype_put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_change_loyalty_program_pass_type_v2_loyalty_programs__programId__passtype_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/card": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Card",
        "description": "### Get Loyalty Program Card\n\nRetrieve the card details associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: The card details as a dictionary.",
        "operationId": "get_loyalty_program_card_v2_loyalty_programs__programId__card_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Card",
        "description": "### Update Card\n\nModify the card details for a specific loyalty program based on provided data.\n\n- **programId**: The unique identifier of the loyalty program.\n- **data**: The new card details to be applied.\n- **Returns**: The updated card details.",
        "operationId": "update_loyalty_program_card_v2_loyalty_programs__programId__card_put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplatePass"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/card/images": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Card Images",
        "description": "### Get Loyalty Program Card Images\n\nRetrieve all card images associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: A list of card images as dictionaries.",
        "operationId": "get_loyalty_program_card_images_v2_loyalty_programs__programId__card_images_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/card/images/{type}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Card Image",
        "description": "### Get Loyalty Program Card Image\n\nFetch a specific type of card image for a loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **type**: The specific type of card image to retrieve.\n- **Returns**: The requested card image as a dictionary.",
        "operationId": "get_loyalty_program_card_image_v2_loyalty_programs__programId__card_images__type__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Card Image",
        "description": "### Update Card Image\n\nCreate or update a specific type of card image for a loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **type**: The type of card image to update.\n- **image**: The new image file to be uploaded.\n- **Returns**: The updated card image data.",
        "operationId": "update_loyalty_program_card_image_v2_loyalty_programs__programId__card_images__type__post",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_loyalty_program_card_image_v2_loyalty_programs__programId__card_images__type__post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Delete Loyalty Program Card Image",
        "description": "### Delete Card Image\n\nRemove a specific type of card image from a loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **type**: The type of card image to delete.\n- **Returns**: A response indicating the success of the operation.",
        "operationId": "delete_loyalty_program_card_image_v2_loyalty_programs__programId__card_images__type__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Offers",
        "description": "### Get Loyalty Program Offers\n\nRetrieve a list of offers associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: A list of offers in a simplified format.",
        "operationId": "get_loyalty_program_offers_v2_loyalty_programs__programId__offers_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Create Loyalty Program Offer",
        "description": "### Create Offer\n\nCreate a new offer within a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **data**: The data for the new offer.\n- **user**: The current active user making the request.\n- **Returns**: The details of the newly created offer.",
        "operationId": "create_loyalty_program_offer_v2_loyalty_programs__programId__offers_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOfferPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Offer",
        "description": "### Get Loyalty Program Offer\n\nRetrieves the details of a specific offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Returns**:\n    - Offer details as a JSON object.",
        "operationId": "get_loyalty_program_offer_v2_loyalty_programs__programId__offers__offerId__get",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Offer",
        "description": "### Update Offer\n\nUpdates an existing offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Request Body**:\n    - `data`: JSON object containing offer data to be updated.\n\n- **Returns**:\n    - Updated offer details as a JSON object.",
        "operationId": "update_loyalty_program_offer_v2_loyalty_programs__programId__offers__offerId__put",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOfferPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Delete Loyalty Program Offer",
        "description": "### Delete Offer\n\nDeletes an offer from a loyalty program. Only offers in 'DRAFT' status can be deleted.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Returns**:\n    - HTTP 200 OK if successful, or an error message if conditions are not met.",
        "operationId": "delete_loyalty_program_offer_v2_loyalty_programs__programId__offers__offerId__delete",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}/publish": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Publish Loyalty Program Offer",
        "description": "### Publish Offer\n\nChanges the status of an offer to 'LIVE' or 'SCHEDULED' based on the start date.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Returns**:\n    - Offer details as a JSON object after status update.",
        "operationId": "publish_loyalty_program_offer_v2_loyalty_programs__programId__offers__offerId__publish_post",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}/cancel": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Cancel Loyalty Program Offer",
        "description": "### Cancel Offer\n\nCancels an offer within a loyalty program. Only offers in 'DRAFT' or 'LIVE' status can be canceled.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Returns**:\n    - Offer details as a JSON object after status update.",
        "operationId": "cancel_loyalty_program_offer_v2_loyalty_programs__programId__offers__offerId__cancel_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}/duplicate": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Duplicate Loyalty Program Offer",
        "description": "### Duplicate Offer\n\nCreates a duplicate of an existing offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n\n- **Request Body**:\n    - `data`: JSON object containing the new offer data.\n\n- **Returns**:\n    - Details of the duplicated offer as a JSON object.",
        "operationId": "duplicate_loyalty_program_offer_v2_loyalty_programs__programId__offers__offerId__duplicate_post",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOfferPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}/card": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Offer Card",
        "description": "### Get Loyalty Program Offer Card\n\nRetrieves the card details associated with a specific offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Returns**:\n    - Card details as a JSON object.",
        "operationId": "get_loyalty_program_offer_card_v2_loyalty_programs__programId__offers__offerId__card_get",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Offer Card",
        "description": "### Update Offer Card\n\nUpdates the card details of a specific offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Request Body**:\n    - `data`: JSON object containing the new card data.\n\n- **Returns**:\n    - Updated card details as a JSON object.",
        "operationId": "update_loyalty_program_offer_card_v2_loyalty_programs__programId__offers__offerId__card_put",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplatePass"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}/card/images": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Offer Images",
        "description": "### Get Loyalty Program Offer Images\n\nRetrieves all card images associated with a specific offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n\n- **Returns**:\n    - List of card images as JSON objects.",
        "operationId": "get_loyalty_program_offer_images_v2_loyalty_programs__programId__offers__offerId__card_images_get",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/offers/{offerId}/card/images/{type}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Offer Card Image",
        "description": "### Get Loyalty Program Offer Card Image\n\nRetrieves a specific type of card image associated with an offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n    - `type`: Type of the card image (e.g., 'thumbnail', 'banner')\n\n- **Returns**:\n    - Card image details as a JSON object, or an error message if not found.",
        "operationId": "get_loyalty_program_offer_card_image_v2_loyalty_programs__programId__offers__offerId__card_images__type__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Create Or Update Loyalty Program Offer Card Image",
        "description": "### Create or Update Card Offer Image\n\nUpdates or creates a new card image for a specific offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n    - `type`: Type of the card image (e.g., 'thumbnail', 'banner')\n\n- **Request Body**:\n    - `image`: Image file to be uploaded.\n\n- **Returns**:\n    - Updated or new card image details as a JSON object, or an error message if the image is invalid.",
        "operationId": "create_or_update_loyalty_program_offer_card_image_v2_loyalty_programs__programId__offers__offerId__card_images__type__post",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_or_update_loyalty_program_offer_card_image_v2_loyalty_programs__programId__offers__offerId__card_images__type__post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Delete Loyalty Program Offer Card Image",
        "description": "### Delete Card Offer Image\n\nDeletes a specific type of card image associated with an offer within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `offerId`: UUID of the offer\n    - `type`: Type of the card image to be deleted (e.g., 'thumbnail', 'banner')\n\n- **Returns**:\n    - HTTP 200 OK on successful deletion.",
        "operationId": "delete_loyalty_program_offer_card_image_v2_loyalty_programs__programId__offers__offerId__card_images__type__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Customers",
        "description": "### List Loyalty Program Customers\n\nRetrieves a list of customers associated with a specific loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n\n**Query Parameters**:\n- `phone`: Filter by customer's phone number (optional)\n- `email`: Filter by customer's email (optional)\n- `pid`: Filter by personal identifier (optional)\n- `pidNumber`: Filter by personal identifier number (optional)\n- `includeTotal`: Include total member count in response (default: false)\n\n**Returns**:\n- By default: A list of customer details as JSON objects.\n- If includeTotal=true: An object with `customers` array and `total` count.",
        "operationId": "get_loyalty_program_customers_v2_loyalty_programs__programId__customers_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "phone",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Phone"
            }
          },
          {
            "name": "email",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Email"
            }
          },
          {
            "name": "pid",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pid"
            }
          },
          {
            "name": "pidNumber",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pidnumber"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Orderby"
            }
          },
          {
            "name": "byName",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Byname"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Create Loyalty Program Customer",
        "description": "### Create Loyalty Program Customer\n\nCreates a new customer within a loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n\n**Request Body**:\n- `data`: Customer data to be added\n\n**Returns**:\n- Customer details as a JSON object on successful creation.\n- HTTP 404 Not Found if the program template is not found.",
        "operationId": "create_loyalty_program_customer_v2_loyalty_programs__programId__customers_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Customer",
        "description": "### Get Loyalty Program Customer\n\nRetrieves details of a specific customer within a loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Returns**:\n- Customer details as a JSON object.",
        "operationId": "get_loyalty_program_customer_v2_loyalty_programs__programId__customers__customerId__get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Customer",
        "description": "### Update Loyalty Program Customer\n\nUpdates details of a specific customer within a loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Request Body**:\n- `data`: Updated customer data\n\n**Returns**:\n- Updated customer details as a JSON object.",
        "operationId": "update_loyalty_program_customer_v2_loyalty_programs__programId__customers__customerId__put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Delete Loyalty Program Customer",
        "description": "### Delete Loyalty Program Customer\n\nSoft-deletes a customer from a loyalty program. The customer document is retained\nfor the GDPR retention period (30 days) before being hard-deleted by the background\nprocessor (SWE-376). Related operational data (pass, events) is cleaned up immediately.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Returns**:\n- HTTP 202 Accepted with a deletion timeline (`softDeletedAt`, `hardDeleteAfter`, `status`).",
        "operationId": "delete_loyalty_program_customer_v2_loyalty_programs__programId__customers__customerId__delete",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/points/reserved": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Customer Reserved Points",
        "description": "### Get Loyalty Program Customer Reserved and Available Points\nRetrieves the total reserved and available points for a specific customer within a loyalty program.\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n**Returns**:\n- A JSON object containing reservedPoints and availablePoints.",
        "operationId": "get_loyalty_program_customer_reserved_points_v2_loyalty_programs__programId__customers__customerId__points_reserved_get",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/push": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Post Loyalty Program Customer Push",
        "description": "### Send Push Notification to a Customer\n\nSends a push notification to a specific customer's installed pass.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Request Body**:\n- `message`: The message content to send (optional)\n\n**Note**:\n- Excessive usage of push notifications can lead to rate limiting or blocking of your cards.\n\n**Returns**:\n- HTTP 200 OK on successful delivery.",
        "operationId": "post_loyalty_program_customer_push_v2_loyalty_programs__programId__customers__customerId__push_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_post_loyalty_program_customer_push_v2_loyalty_programs__programId__customers__customerId__push_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/points/add": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Customer Points",
        "description": "### Add Reward Points to Customer Account\n\nAdds a specified number of reward points to a customer's account within a loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Request Body**:\n- `points`: Number of points to add\n\n**Returns**:\n- Updated customer details with new points total as a JSON object.",
        "operationId": "update_loyalty_program_customer_points_v2_loyalty_programs__programId__customers__customerId__points_add_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_loyalty_program_customer_points_v2_loyalty_programs__programId__customers__customerId__points_add_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/offers": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Customer Offers",
        "description": "### List Available Offers for Customer\n\nLists all available offers for a specific customer within a loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Returns**:\n- A list of available offers as JSON objects.",
        "operationId": "get_loyalty_program_customer_offers_v2_loyalty_programs__programId__customers__customerId__offers_get",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/offers/{offerId}/claim": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Claim Loyalty Program Customer Offer",
        "description": "### Claim an Offer for Customer\n\nAllows a customer to claim an offer if they meet the necessary conditions.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n- `offerId`: UUID of the offer\n\n**Returns**:\n- HTTP 200 OK on successful claim.\n- HTTP 422 Unprocessable Entity if conditions are not met.",
        "operationId": "claim_loyalty_program_customer_offer_v2_loyalty_programs__programId__customers__customerId__offers__offerId__claim_post",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Offerid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/offers/current/redeem": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Redeem Loyalty Program Customer Offer",
        "description": "### Redeem Current Offer for Customer\n\nRedeems the current offer for a customer within a loyalty program.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program\n- `customerId`: UUID of the customer\n\n**Returns**:\n- HTTP 200 OK on successful redemption.",
        "operationId": "redeem_loyalty_program_customer_offer_v2_loyalty_programs__programId__customers__customerId__offers_current_redeem_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/activities": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Customer Activities",
        "description": "### Get Loyalty Program Activities of Customer\n\nRetrieve a list of activities associated with a specific loyalty customer.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: A list of activities in a simplified format.",
        "operationId": "get_loyalty_program_customer_activities_v2_loyalty_programs__programId__customers__customerId__activities_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/transactions": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Customer Transactions",
        "description": "### Get Loyalty Program Transactions of Customer\n\nRetrieve a list of transactions associated with a specific loyalty customer.\n\n- **programId**: The unique identifier of the loyalty program.\n- **customerId**: The unique identifier of the loyalty customer.\n- **raw**: Include raw provider-specific data (default: false)\n- **enriched**: Include human-readable customer and product details (default: false)\n- **Returns**: A list of transactions in a simplified format.",
        "operationId": "get_loyalty_program_customer_transactions_v2_loyalty_programs__programId__customers__customerId__transactions_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "raw",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Raw"
            }
          },
          {
            "name": "enriched",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Enriched"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/export": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Export Loyalty Program Customer Data",
        "description": "### Export Customer Data (DSAR \u2014 SWE-362)\n\nReturns all personal data held for a specific customer: identity, loyalty state,\nconsent records, and activity history. Use to fulfill GDPR Data Subject Access Requests.\n\nSupports `format=json` (default) and `format=csv`.",
        "operationId": "export_loyalty_program_customer_data_v2_loyalty_programs__programId__customers__customerId__export_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "json",
                "csv"
              ],
              "type": "string",
              "default": "json",
              "title": "Format"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/activities": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Activities",
        "description": "### Get Loyalty Program Activities\n\nRetrieve a list of activities associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **Returns**: A list of activities in a simplified format.",
        "operationId": "get_loyalty_program_activities_v2_loyalty_programs__programId__activities_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/transactions": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Transactions",
        "description": "### Get Loyalty Program Transactions\n\nRetrieve a list of transactions associated with a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **raw**: Include raw provider-specific data (default: false)\n- **enriched**: Include human-readable customer and product details (default: false)\n- **Returns**: A list of transactions in a simplified format.",
        "operationId": "get_loyalty_program_transactions_v2_loyalty_programs__programId__transactions_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "raw",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Raw"
            }
          },
          {
            "name": "enriched",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Enriched"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Create Loyalty Program Voucher",
        "description": "### Create Voucher\n\nCreate a new voucher within a specific loyalty program.\n\n- **programId**: The unique identifier of the loyalty program.\n- **data**: The data for the new voucher.\n- **user**: The current active user making the request.\n- **Returns**: The details of the newly created voucher.",
        "operationId": "create_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVoucherPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Voucher",
        "description": "### Get Loyalty Program Voucher\n\nRetrieves the details of a specific voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Returns**:\n    - Voucher details as a JSON object.",
        "operationId": "get_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__get",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Voucher",
        "description": "### Update Voucher\n\nUpdates an existing voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Request Body**:\n    - `data`: JSON object containing voucher data to be updated.\n\n- **Returns**:\n    - Updated voucher details as a JSON object.",
        "operationId": "update_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__put",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVoucherPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Delete Loyalty Program Voucher",
        "description": "### Delete Voucher\n\nDeletes an voucher from a loyalty program. Only vouchers in 'DRAFT' status can be deleted.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Returns**:\n    - HTTP 200 OK if successful, or an error message if conditions are not met.",
        "operationId": "delete_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__delete",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}/publish": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Publish Loyalty Program Voucher",
        "description": "### Publish Voucher\n\nChanges the status of an voucher to 'LIVE' or 'SCHEDULED' based on the start date.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Returns**:\n    - Voucher details as a JSON object after status update.",
        "operationId": "publish_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__publish_post",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}/cancel": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Cancel Loyalty Program Voucher",
        "description": "### Cancel Voucher\n\nCancels an voucher within a loyalty program. Only vouchers in 'DRAFT' or 'LIVE' status can be canceled.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Returns**:\n    - Voucher details as a JSON object after status update.",
        "operationId": "cancel_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__cancel_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}/issue": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Publish Loyalty Program Voucher",
        "operationId": "publish_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__issue_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_publish_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__issue_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}/card": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Voucher Card",
        "description": "### Get Loyalty Program Voucher Card\n\nRetrieves the card details associated with a specific voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Returns**:\n    - Card details as a JSON object.",
        "operationId": "get_loyalty_program_voucher_card_v2_loyalty_programs__programId__vouchers__voucherId__card_get",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Update Loyalty Program Voucher Card",
        "description": "### Update Voucher Card\n\nUpdates the card details of a specific voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Request Body**:\n    - `data`: JSON object containing the new card data.\n\n- **Returns**:\n    - Updated card details as a JSON object.",
        "operationId": "update_loyalty_program_voucher_card_v2_loyalty_programs__programId__vouchers__voucherId__card_put",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplatePass"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}/card/images": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Voucher Images",
        "description": "### Get Loyalty Program Voucher Images\n\nRetrieves all card images associated with a specific voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n\n- **Returns**:\n    - List of card images as JSON objects.",
        "operationId": "get_loyalty_program_voucher_images_v2_loyalty_programs__programId__vouchers__voucherId__card_images_get",
        "parameters": [
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/vouchers/{voucherId}/card/images/{type}": {
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Loyalty Program Voucher Card Image",
        "description": "### Get Loyalty Program Voucher Card Image\n\nRetrieves a specific type of card image associated with an voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n    - `type`: Type of the card image (e.g., 'thumbnail', 'banner')\n\n- **Returns**:\n    - Card image details as a JSON object, or an error message if not found.",
        "operationId": "get_loyalty_program_voucher_card_image_v2_loyalty_programs__programId__vouchers__voucherId__card_images__type__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Create Or Update Loyalty Program Voucher Card Image",
        "description": "### Create or Update Card Voucher Image\n\nUpdates or creates a new card image for a specific voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n    - `type`: Type of the card image (e.g., 'thumbnail', 'banner')\n\n- **Request Body**:\n    - `image`: Image file to be uploaded.\n\n- **Returns**:\n    - Updated or new card image details as a JSON object, or an error message if the image is invalid.",
        "operationId": "create_or_update_loyalty_program_voucher_card_image_v2_loyalty_programs__programId__vouchers__voucherId__card_images__type__post",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_or_update_loyalty_program_voucher_card_image_v2_loyalty_programs__programId__vouchers__voucherId__card_images__type__post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Delete Loyalty Program Voucher Card Image",
        "description": "### Delete Card Voucher Image\n\nDeletes a specific type of card image associated with an voucher within a loyalty program.\n\n- **Path Parameters**:\n    - `programId`: UUID of the loyalty program\n    - `voucherId`: UUID of the voucher\n    - `type`: Type of the card image to be deleted (e.g., 'thumbnail', 'banner')\n\n- **Returns**:\n    - HTTP 200 OK on successful deletion.",
        "operationId": "delete_loyalty_program_voucher_card_image_v2_loyalty_programs__programId__vouchers__voucherId__card_images__type__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "voucherId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Voucherid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/loyalty/programs/{programId}/customers/{customerId}/consents": {
      "post": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Record Customer Consents",
        "description": "### Record Customer Consents\n\nCreates an immutable consent record for each consent decision in the request.\nCaptures IP address and user-agent at the time of recording for evidentiary purposes.\n\nConsent records are append-only \u2014 each call adds new records; existing records\nare never modified. Use GET to retrieve the current state per consent type.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program (merchant)\n- `customerId`: UUID of the customer\n\n**Request Body**:\n- `consents`: List of consent decisions (`consentType`, `granted`, `method`)\n- `policyVersion`: Version of the policy document accepted\n\n**Returns**:\n- 201 Created with the list of newly created consent records.",
        "operationId": "record_customer_consents_v2_loyalty_programs__programId__customers__customerId__consents_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordConsentsPayload"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Loyalty"
        ],
        "summary": "Get Customer Consents",
        "description": "### Get Current Customer Consent State\n\nReturns the most recent consent record for each consent type recorded for\nthis customer under this merchant. Types with no records are omitted.\n\n**Path Parameters**:\n- `programId`: UUID of the loyalty program (merchant)\n- `customerId`: UUID of the customer\n\n**Returns**:\n- List of the latest consent record per type, ordered by most recently recorded.",
        "operationId": "get_customer_consents_v2_loyalty_programs__programId__customers__customerId__consents_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/health": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Giftcardhealthcheck",
        "description": "### Gift Card Service Health Check\n\nCheck the health status of the gift card service.\n\n**Returns**:\n- Health status information",
        "operationId": "giftCardHealthCheck_v2_giftcards_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/passes/{passSid}": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcardbypasssid",
        "description": "### Get Gift Card Info by Pass SID\n\nReturns lightweight gift card information for the pass linked to the given `passSid`.\nThis endpoint is used by the public pass page to determine if a pass is linked to a\ngift card and what state the card is in, so the appropriate UI screen can be shown.\n\n**No customer session is required** \u2014 only HMAC authentication from the ambassador.\n\n**Path Parameters**:\n- `passSid`: The SID of the wallet pass\n\n**Returns**:\n- `id`: Gift card MongoDB ObjectId\n- `programId`: The gift card program ID (required to call activate endpoint)\n- `status`: Current card status (pending / active / expired / etc.)\n- `lastFourDigits`: Last 4 digits of the card number\n- `initialValue`: Face value of the card\n- `balance`: Current balance\n- `expiresAt`: Card expiry datetime\n- `merchantName`: Name of the issuing merchant\n\n**Status Codes**:\n- 200: Gift card found\n- 404: No gift card linked to this pass SID",
        "operationId": "getGiftCardByPassSid_v2_giftcards_passes__passSid__get",
        "parameters": [
          {
            "name": "passSid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Passsid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcards",
        "operationId": "getGiftCards_v2_giftcards_programs__programId__cards_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "merchant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Merchant Id"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/GiftCardStatus"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "positive_balance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Positive Balance"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Creategiftcard",
        "description": "Create a new gift card in pending status with a generated card number and security code.\n\nValidates and sets the expiration (defaults to 1 year, must not exceed 5 years), sanitizes the provided custom message to prevent XSS, generates a unique 16-digit card number and a 6-digit security code, persists the card with a zero balance and the requested initialValue, and returns the persisted card representation.\n\nParameters:\n    data (CreateGiftCardRequest): Request payload containing initialValue, merchantId, optional customer fields, expiration, isPhysical, designTemplate, and customMessage.\n\nReturns:\n    GiftCardResponse: The newly created gift card data (status will be \"pending\"); the security code is stored but not returned.",
        "operationId": "createGiftCard_v2_giftcards_programs__programId__cards_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/cards": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcards",
        "operationId": "getGiftCards_v2_giftcards_programs_cards_get",
        "parameters": [
          {
            "name": "merchant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Merchant Id"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/GiftCardStatus"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "positive_balance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Positive Balance"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/search": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Searchgiftcards",
        "description": "### Search Gift Cards\n\nSearch for gift cards by card number, last four digits, customer name, or customer email.",
        "operationId": "searchGiftCards_v2_giftcards_programs__programId__search_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "merchant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Merchant Id"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/search": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Searchgiftcards",
        "description": "### Search Gift Cards\n\nSearch for gift cards by card number, last four digits, customer name, or customer email.",
        "operationId": "searchGiftCards_v2_giftcards_programs_search_get",
        "parameters": [
          {
            "name": "merchant_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Merchant Id"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcarddetails",
        "description": "### Get Gift Card Details\n\nRetrieves comprehensive details for a specific gift card including current balance,\nstatus, and optionally the complete transaction history.\n\n**Card Information**:\n- Current balance and initial value\n- Card status (pending, active, expired, voided, depleted)\n- Card number (16 digits) and last four digits\n- Customer information (email, name, ID)\n- Merchant identifier\n- Expiration and activation dates\n- Physical/digital card indicator\n- Design template and custom message\n\n**Business Rules**:\n- Card number is returned in full (security code is never exposed)\n- Status reflects current card state\n- Timestamps in UTC\n- Optional transaction history sorted newest first\n\n**Path Parameters**:\n- `programId`: MongoDB ObjectId of the loyalty program\n- `cardId`: MongoDB ObjectId of the gift card\n\n**Query Parameters**:\n- `include_transactions`: Include full transaction history (default: false)\n  - Use `?include_transactions=true` to include all transactions\n  - Transactions sorted by createdAt descending (newest first)\n\n**Returns**:\n- Gift card details object\n- Optional: transactions array if include_transactions=true\n\n**Response Example (without transactions)**:\n```json\n{\n    \"id\": \"507f191e810c19729de860ea\",\n    \"cardNumber\": \"4000123456789012\",\n    \"lastFourDigits\": \"9012\",\n    \"balance\": 100.00,\n    \"initialValue\": 100.00,\n    \"status\": \"active\",\n    \"createdAt\": \"2025-01-01T00:00:00Z\",\n    \"updatedAt\": \"2025-01-15T10:30:00Z\",\n    \"activatedAt\": \"2025-01-02T14:20:00Z\",\n    \"expiresAt\": \"2026-01-01T00:00:00Z\",\n    \"customerId\": \"customer_456\",\n    \"customerEmail\": \"customer@example.com\",\n    \"customerName\": \"John Doe\",\n    \"merchantId\": \"merchant_123\",\n    \"isPhysical\": false,\n    \"designTemplate\": \"birthday\",\n    \"customMessage\": \"Happy Birthday!\"\n}\n```\n\n**Response Example (with transactions)**:\n```json\n{\n    \"id\": \"507f191e810c19729de860ea\",\n    ...card details...,\n    \"transactions\": [\n        {\n            \"id\": \"507f1f77bcf86cd799439011\",\n            \"transactionType\": \"REDEMPTION\",\n            \"amount\": -25.50,\n            \"balanceBefore\": 100.00,\n            \"balanceAfter\": 74.50,\n            ...transaction details...\n        }\n    ]\n}\n```\n\n**Status Codes**:\n- 200: Gift card details retrieved successfully\n- 404: Gift card not found or doesn't belong to program\n- 401: Unauthorized",
        "operationId": "getGiftCardDetails_v2_giftcards_programs__programId__cards__cardId__get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "include_transactions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Transactions"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/schedule": {
      "patch": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Schedulegiftcarddelivery",
        "operationId": "scheduleGiftCardDelivery_v2_giftcards_programs__programId__cards__cardId__schedule_patch",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleGiftCardDeliveryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/resend-code": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Resendgiftcardsecuritycode",
        "description": "### Resend Security Code\n\nGenerates a new security code for the gift card and resends it via email or SMS.\nApplicable primarily to PENDING cards, allowing merchants to re-send the code if\nthe customer lost the email/SMS or needs a fresh code.",
        "operationId": "resendGiftCardSecurityCode_v2_giftcards_programs__programId__cards__cardId__resend_code_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ResendSecurityCodeRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/activate": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Activategiftcard",
        "description": "### Activate Gift Card\n\nActivates a pending gift card and loads the initial balance. Creates an ACTIVATION transaction\nfor audit trail.\n\n**Business Rules**:\n- Only PENDING cards can be activated\n- Card must not be expired\n- Balance is set to initialValue upon activation\n- Status changes from PENDING to ACTIVE\n- Customer information can be updated during activation\n- Activation creates a transaction record\n- Authenticated customer session is required\n\n**Path Parameters**:\n- `programId`: MongoDB ObjectId of the loyalty program\n- `cardId`: MongoDB ObjectId of the gift card\n\n**Request Body**:\n- `customerEmail`: Customer email (optional, updates card if provided)\n- `customerName`: Customer name (optional, updates card if provided)\n\n**Returns**:\n- Activated gift card details with updated balance and ACTIVE status\n- Includes activatedAt timestamp\n\n**Status Codes**:\n- 200: Gift card activated successfully\n- 400: Card cannot be activated (already active, expired, or invalid status)\n- 404: Gift card not found or doesn't belong to program\n- 409: Activation conflicted with concurrent update\n- 401: Unauthorized\n\n**Idempotency Scope**:\n- Idempotency keys are scoped to `programId + activate + cardId`\n- The same key may be reused for different cards or different gift card actions",
        "operationId": "activateGiftCard_v2_giftcards_programs__programId__cards__cardId__activate_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/reload": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Reloadgiftcard",
        "description": "### Reload Gift Card\n\nAdds funds to an active gift card. Creates a RELOAD transaction for audit trail.\n\n**Business Rules**:\n- Only ACTIVE cards can be reloaded\n- Card must not be expired\n- Reload amount: $0.01 - $5,000 per transaction\n- Maximum card balance: $10,000\n- New balance = current balance + reload amount\n- Transaction includes before/after balance tracking\n\n**Path Parameters**:\n- `programId`: MongoDB ObjectId of the loyalty program\n- `cardId`: MongoDB ObjectId of the gift card\n\n**Request Body**:\n- `amount`: Amount to add ($0.01 - $5,000)\n- `referenceId`: External reference ID for tracking (optional)\n- `description`: Transaction description (optional, defaults to \"Gift card reload\")\n\n**Returns**:\n- Updated gift card details with new balance\n- Balance reflects immediately after reload\n\n**Status Codes**:\n- 200: Gift card reloaded successfully\n- 400: Cannot reload (inactive, expired, or would exceed max balance of $10,000)\n- 404: Gift card not found or doesn't belong to program\n- 401: Unauthorized\n\n**Error Response (Max Balance Exceeded)**:\n```json\n{\n    \"detail\": \"Reload would exceed maximum card balance\",\n    \"currentBalance\": 9500.00,\n    \"reloadAmount\": 1000.00,\n    \"maxBalance\": 10000.00,\n    \"availableReloadAmount\": 500.00\n}\n```\n\n**Idempotency Scope**:\n- Idempotency keys are scoped to `programId + reload + cardId`\n- The same key may be reused for different cards or different gift card actions",
        "operationId": "reloadGiftCard_v2_giftcards_programs__programId__cards__cardId__reload_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReloadGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/reload-by-number": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Reloadgiftcardbynumber",
        "description": "### Reload Gift Card by Card Number\n\nAllows topping up a gift card using the card number instead of the card ID.\nThis is useful for POS/cashier scenarios where the cashier types or scans\na card number rather than looking up the internal ID.\n\n**Business Rules**:\n- Same rules as the standard reload endpoint\n- Only ACTIVE cards can be reloaded\n- Card must not be expired\n- Reload amount: $0.01 - $5,000 per transaction\n- Maximum card balance: $10,000\n\n**Request Body**:\n- `cardNumber`: The full card number (up to 20 chars)\n- `amount`: Amount to add ($0.01 - $5,000)\n- `referenceId`: External reference ID for tracking (optional)\n- `description`: Transaction description (optional, defaults to \"Gift card reload\")\n\n**Status Codes**:\n- 200: Gift card reloaded successfully\n- 400: Cannot reload (inactive, expired, or would exceed max balance)\n- 404: Gift card not found",
        "operationId": "reloadGiftCardByNumber_v2_giftcards_programs__programId__cards_reload_by_number_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReloadByCardNumberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/redeem": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Redeemgiftcard",
        "description": "Redeem a specified amount from an active, non-expired gift card and record a REDEMPTION transaction.\n\nPerforms an atomic balance deduction (prevents double-spend and race conditions), updates the card status to DEPLETED when balance reaches zero, and inserts a GiftCardTransaction recording the redemption.\n\nReturns:\n    RedeemResponse: Contains `transactionId`, `giftCardId`, `amountRedeemed`, `remainingBalance`, `success`, and `message`.\n\nIdempotency Scope:\n    Keys are scoped to `programId + redeem + cardId`.\n    The same key may be reused for different cards or different gift card actions.",
        "operationId": "redeemGiftCard_v2_giftcards_programs__programId__cards__cardId__redeem_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedeemResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/transactions/{transactionId}/refund": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Refundgiftcardtransaction",
        "operationId": "refundGiftCardTransaction_v2_giftcards_programs__programId__cards__cardId__transactions__transactionId__refund_post",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PydanticObjectId"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customer/balance-check": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Customercheckgiftcardbalance",
        "description": "### Customer Balance Check (Cross-Program)\n\nAllows customers to check the balance of any gift card without needing to know\nthe programId. Searches across all programs by card number and security code.\n\nThis endpoint is designed for customer-facing applications where the customer\nmay have cards from multiple merchants/programs.\n\n**Security**:\n- Rate limited: 5 requests per minute per IP\n- Pattern detection for enumeration attacks\n- Card lockout after multiple failed attempts\n- Constant-time security code comparison\n\n**Request Body**:\n- `cardNumber`: The full 16-digit card number\n- `securityCode`: The 6-digit security code\n\n**Returns**:\n- Card balance, status, expiration, and activity status\n\n**Status Codes**:\n- 200: Balance retrieved successfully\n- 404: Card not found or invalid security code\n- 429: Rate limited or card locked",
        "operationId": "customerCheckGiftCardBalance_v2_giftcards_customer_balance_check_post",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BalanceCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceCheckResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v2/giftcards/programs/{programId}/balance-check": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Checkgiftcardbalance",
        "description": "Authenticate the provided card number and security code, and return the card's balance and usability information.\n\nPerforms a constant-time security-code comparison and abuse/lockout checks before returning card details.\n\nReturns:\n    BalanceCheckResponse: Contains `cardNumber`, `lastFourDigits`, `balance`, `status`, `expiresAt`, and `isActive`.\n    On authentication failure or lockout the endpoint responds with an HTTP error (e.g., 404 for not found/invalid code, 429 for rate limiting or card lockout).",
        "operationId": "checkGiftCardBalance_v2_giftcards_programs__programId__balance_check_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BalanceCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceCheckResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v2/giftcards/programs/{programId}/consolidate": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Consolidategiftcards",
        "description": "Consolidates multiple ACTIVE gift cards from the same program and customer into a single new active card with the combined balance.\n\nPerforms validation (2\u201310 unique cards, all ACTIVE, positive balances, same customer, total \u2264 $10,000), acquires per-card locks to prevent concurrent modifications, creates a new card with a cryptographically generated number and security code, voids source cards (setting their balances to zero), and records consolidation transactions inside an atomic database transaction.\n\nReturns:\n    ConsolidateResponse: Details of the consolidation including `newCard` (the created gift card), `voidedCards` (IDs of source cards), `totalConsolidatedAmount`, `consolidationTransactions` (transaction IDs), and an informational `message`.\n\nIdempotency Scope:\n    Keys are scoped to `programId + consolidate + sorted source card ids`.\n    Reusing the same key for a different source-card set is treated as a fresh operation.",
        "operationId": "consolidateGiftCards_v2_giftcards_programs__programId__consolidate_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsolidateGiftCardsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsolidateResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/transactions": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcardtransactions",
        "description": "### Get Gift Card Transaction History\n\nRetrieves paginated transaction history for a gift card with complete audit trail.\nTransactions include all card activities: activation, reloads, redemptions, and consolidations.\n\n**Transaction Types**:\n- ACTIVATION: Initial card activation and balance loading\n- RELOAD: Balance addition transactions\n- REDEMPTION: Balance deduction for purchases (negative amount)\n- CONSOLIDATION: Card consolidation (negative for voided cards, positive for new card)\n- VOID: Card voiding transactions\n- PURCHASE: Gift card purchase transactions\n- REFUND: Refund credit transactions\n\n**Business Rules**:\n- Returns transactions in reverse chronological order (newest first)\n- Includes before/after balance for each transaction\n- Contains optional POS reference data (transactionId, cashierId, terminalId)\n- Supports pagination for large transaction histories\n- All transactions immutable for audit compliance\n\n**Path Parameters**:\n- `programId`: MongoDB ObjectId of the loyalty program\n- `cardId`: MongoDB ObjectId of the gift card\n\n**Query Parameters**:\n- `limit`: Maximum number of transactions to return (1-100, default: 50)\n- `offset`: Number of transactions to skip for pagination (default: 0)\n\n**Returns**:\n- List of transaction objects ordered by createdAt (newest first)\n- Each transaction includes full details: type, amount, balances, timestamps, references\n\n**Transaction Response Fields**:\n```json\n{\n    \"id\": \"507f1f77bcf86cd799439011\",\n    \"transactionType\": \"REDEMPTION\",\n    \"amount\": -25.50,\n    \"balanceBefore\": 100.00,\n    \"balanceAfter\": 74.50,\n    \"referenceId\": \"ORDER_12345\",\n    \"description\": \"Purchase at Store #42\",\n    \"createdAt\": \"2025-01-15T10:30:00Z\",\n    \"processedAt\": \"2025-01-15T10:30:00Z\",\n    \"merchantId\": \"merchant_123\",\n    \"posTransactionId\": \"POS_TXN_789\",\n    \"cashierId\": \"cashier_001\",\n    \"terminalId\": \"terminal_A\"\n}\n```\n\n**Status Codes**:\n- 200: Transactions retrieved successfully (empty list if no transactions)\n- 404: Gift card not found or doesn't belong to program\n- 401: Unauthorized\n\n**Pagination Example**:\n- First page: `/giftcards/programs/{programId}/cards/{id}/transactions?limit=20&offset=0`\n- Second page: `/giftcards/programs/{programId}/cards/{id}/transactions?limit=20&offset=20`\n- Third page: `/giftcards/programs/{programId}/cards/{id}/transactions?limit=20&offset=40`",
        "operationId": "getGiftCardTransactions_v2_giftcards_programs__programId__cards__cardId__transactions_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/transfer": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Transfergiftcardbalance",
        "description": "### Transfer Balance Between Gift Cards\n\nMoves a specified amount from a source gift card to a destination gift card within the same program.\nThe source card's security code is required to authorise the transfer.\n\nBoth cards must be active and belong to the same program. A `TRANSFER_OUT` transaction is recorded\non the source card and a `TRANSFER_IN` transaction on the destination card.\n\n**Business Rules**:\n- Source and destination cards must be different\n- Both cards must have status `active`\n- Source card balance must be >= transfer amount\n- Destination card balance after transfer must not exceed \u00a310,000.00\n- Source card security code must match (constant-time comparison)\n- Transfer depletes source card if resulting balance reaches zero\n\n**Status Codes**:\n- 200: Transfer completed successfully\n- 400: Invalid amount, insufficient balance, or cards not eligible\n- 401: Incorrect security code\n- 404: Source or destination card not found\n- 409: Card currently locked by another operation\n\n**Idempotency Scope**:\n- Idempotency keys are scoped to `programId + transfer + sourceCardId + destinationCardId`\n- The same key may be reused for different source/destination pairs or other gift card actions",
        "operationId": "transferGiftCardBalance_v2_giftcards_programs__programId__cards__cardId__transfer_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferBalanceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferBalanceResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/transfer-ownership": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Transfergiftcardownership",
        "description": "### Transfer Gift Card Ownership\n\nUpdates the cardholder details (name, email, optional customer ID) on an active gift card.\nIntended for merchant use when a card is gifted or resold to a new owner.\n\nAn `OWNERSHIP_TRANSFER` transaction is recorded for audit trail purposes.\n\n**Business Rules**:\n- Card must be active\n- New owner email must be a valid email address (validated by Pydantic `EmailStr`)\n- Name is sanitized to remove HTML/script content\n\n**Status Codes**:\n- 200: Ownership transferred successfully\n- 400: Card is not active\n- 404: Card not found\n- 401: Unauthorized",
        "operationId": "transferGiftCardOwnership_v2_giftcards_programs__programId__cards__cardId__transfer_ownership_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferOwnershipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/network/overview": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getnetworkoverview",
        "description": "### Network Overview\n\nReturns aggregate statistics across the entire gift card network (all programs\nand merchants). Intended for network-admin and reporting dashboards.\n\nGroups card counts and transaction volumes by merchant, and returns overall totals.\n\n**Status Codes**:\n- 200: Overview returned successfully\n- 401: Unauthorized\n- 403: Forbidden (caller is not a network admin)",
        "operationId": "getNetworkOverview_v2_giftcards_network_overview_get",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkOverviewResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/business": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getbusinessreports",
        "operationId": "getBusinessReports_v2_giftcards_programs__programId__reports_business_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessReportResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/expiration-warnings": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getexpirationwarnings",
        "operationId": "getExpirationWarnings_v2_giftcards_programs__programId__reports_expiration_warnings_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpirationWarningReportResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/void": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Voidgiftcard",
        "operationId": "voidGiftCard_v2_giftcards_programs__programId__cards__cardId__void_post",
        "parameters": [
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoidGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpiredCardProcessingResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/suspend": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Suspendgiftcard",
        "operationId": "suspendGiftCard_v2_giftcards_programs__programId__cards__cardId__suspend_post",
        "parameters": [
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuspendGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/unsuspend": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Unsuspendgiftcard",
        "operationId": "unsuspendGiftCard_v2_giftcards_programs__programId__cards__cardId__unsuspend_post",
        "parameters": [
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnsuspendGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GiftCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/{cardId}/process-expired": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Processexpiredcard",
        "operationId": "processExpiredCard_v2_giftcards_programs__programId__cards__cardId__process_expired_post",
        "parameters": [
          {
            "name": "cardId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExpiredCardProcessingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpiredCardProcessingResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/compliance/aml": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getamlalerts",
        "operationId": "getAMLAlerts_v2_giftcards_programs__programId__compliance_aml_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From Date"
            }
          },
          {
            "name": "to_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To Date"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AMLReportResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/compliance/aml/{alertId}/acknowledge": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Acknowledgeamlalert",
        "operationId": "acknowledgeAMLAlert_v2_giftcards_programs__programId__compliance_aml__alertId__acknowledge_post",
        "parameters": [
          {
            "name": "alertId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Alertid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AMLAcknowledgeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "boolean"
                  },
                  "title": "Response Acknowledgeamlalert V2 Giftcards Programs  Programid  Compliance Aml  Alertid  Acknowledge Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/gdpr/export": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Exportgiftcardcustomerdata",
        "operationId": "exportGiftCardCustomerData_v2_giftcards_gdpr_export_post",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GDPRExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GDPRExportResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/gdpr/download": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Downloadgiftcardcustomerdata",
        "operationId": "downloadGiftCardCustomerData_v2_giftcards_gdpr_download_get",
        "parameters": [
          {
            "name": "exportId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Exportid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^(json|csv)$",
              "title": "Format"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "customerEmail",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Customeremail"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/gdpr/erasure": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Erasegiftcardcustomerdata",
        "operationId": "eraseGiftCardCustomerData_v2_giftcards_gdpr_erasure_post",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RightToErasureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RightToErasureResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/gdpr/consent/lookup": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcardconsentbyidentifier",
        "description": "Look up GDPR consent by email, phone, or customer ID.\n\nUse this endpoint when searching by email or phone (no customerId needed).\nFor path-based lookup by customerId, use /gdpr/consent/{customerId}.",
        "operationId": "getGiftCardConsentByIdentifier_v2_giftcards_gdpr_consent_lookup_get",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Customerid"
            }
          },
          {
            "name": "customerEmail",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Customeremail"
            }
          },
          {
            "name": "customerPhone",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Customerphone"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentRecordResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/gdpr/consent/{customerId}": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getgiftcardconsent",
        "operationId": "getGiftCardConsent_v2_giftcards_gdpr_consent__customerId__get",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customerid"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentRecordResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Updategiftcardconsent",
        "operationId": "updateGiftCardConsent_v2_giftcards_gdpr_consent__customerId__post",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customerid"
            }
          },
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentRecordResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/gdpr/consent": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Creategiftcardconsent",
        "description": "Create or update GDPR consent for a customer identified by email or phone.\n\nUse this endpoint when saving consent without a known customerId.\nRequires customerEmail or customerPhone in the request body.",
        "operationId": "createGiftCardConsent_v2_giftcards_gdpr_consent_post",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentRecordResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/escheatment": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getescheatmentreport",
        "operationId": "getEscheatmentReport_v2_giftcards_programs__programId__reports_escheatment_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Jurisdiction"
            }
          },
          {
            "name": "dormancy_days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 3650,
              "minimum": 1,
              "default": 1095,
              "title": "Dormancy Days"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EscheatmentReportResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customer/reports": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getcustomerreports",
        "operationId": "getCustomerReports_v2_giftcards_customer_reports_get",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerReportResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customer/transactions": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getcustomertransactions",
        "description": "### Get All Customer Transactions\n\nReturns paginated transaction history across all gift cards belonging to the customer.",
        "operationId": "getCustomerTransactions_v2_giftcards_customer_transactions_get",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransactionResponse"
                  },
                  "title": "Response Getcustomertransactions V2 Giftcards Customer Transactions Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customer/consolidatable-merchants": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Getcustomerconsolidatablemerchants",
        "description": "Get list of merchants and their number of active, positive-balance cards for a customer.",
        "operationId": "getCustomerConsolidatableMerchants_v2_giftcards_customer_consolidatable_merchants_get",
        "parameters": [
          {
            "name": "programId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConsolidatableMerchantResponse"
                  },
                  "title": "Response Getcustomerconsolidatablemerchants V2 Giftcards Customer Consolidatable Merchants Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/bulk": {
      "post": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Issue multiple gift cards",
        "description": "### Bulk Issue Gift Cards\n\nIssues multiple gift cards in a single request. For counts up to the sync\nthreshold (`gift_card_bulk_issue_sync_threshold`, default 50) the cards are\ncreated synchronously and returned immediately. For larger batches the request\nis accepted asynchronously and a task ID is returned for polling.\n\n**Issuance modes**:\n- `count` (integer) \u2014 count-only: cards have no recipient data; a CSV download\n  link is returned so the merchant can distribute the numbers.\n- `recipients` (list) \u2014 per-recipient: each card is optionally pre-populated\n  with the given customer info and a notification is dispatched.\n\n**Path Parameters**:\n- `programId`: MongoDB ObjectId of the loyalty program\n\n**Request Body** (`BulkIssueGiftCardRequest`):\n- `initialValue`: Starting balance (0.01 \u2013 10,000.00)\n- `isPhysical`: `true` for physical cards\n- `designTemplate`: Optional design-template slug\n- `expiresAt`: Optional explicit expiry; defaults to +365 days\n- `count` **or** `recipients`: Mutually exclusive\n\n**Response (sync \u2264 threshold)**:\n- HTTP 201 with `BulkIssuanceSyncResponse`\n\n**Response (async > threshold)**:\n- HTTP 202 with `BulkIssuanceAsyncResponse` (`taskId`, `status`)\n\n**Idempotency**:\n- Pass `Idempotency-Key` header to make the request safely retryable.",
        "operationId": "bulkIssueGiftCards_v2_giftcards_programs__programId__cards_bulk_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "idempotency-key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkIssueGiftCardRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/BulkIssuanceSyncResponse"
                    },
                    {
                      "$ref": "#/components/schemas/BulkIssuanceAsyncResponse"
                    }
                  ],
                  "title": "Response Bulkissuegiftcards V2 Giftcards Programs  Programid  Cards Bulk Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/cards/bulk/{taskId}": {
      "get": {
        "tags": [
          "Gift Cards"
        ],
        "summary": "Poll async bulk issuance task",
        "description": "### Poll Async Bulk Issuance\n\nReturns the current status of an async bulk gift-card issuance task.\n\n**Path Parameters**:\n- `programId`: MongoDB ObjectId of the loyalty program\n- `taskId`: Celery task ID returned by the bulk issuance POST\n\n**Response** (`BulkIssuanceTaskStatus`):\n- `status`: `\"pending\"` | `\"processing\"` | `\"completed\"` | `\"failed\"`\n- `issuedCount`, `cards`, `csvDownloadUrl` \u2014 populated when `status == \"completed\"`\n- `failedCount`, `error` \u2014 populated when `status == \"failed\"` or on partial failure",
        "operationId": "pollBulkIssuance_v2_giftcards_programs__programId__cards_bulk__taskId__get",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Taskid"
            }
          },
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkIssuanceTaskStatus"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customers/otp/send": {
      "post": {
        "tags": [
          "Gift Card Customers"
        ],
        "summary": "Sendcustomerotp",
        "description": "### Send OTP to Customer\n\nGenerate and send a one-time password to a customer's email or phone number.\nThe OTP is stored in Redis with a 5-minute expiry.\n\n**Rate Limiting**:\n- Maximum 5 requests per hour per target\n- Maximum 10 requests per day per target\n\n**Security**:\n- OTP codes are 6 digits, cryptographically secure\n- Codes expire after 5 minutes\n- Maximum 3 verification attempts per code\n- OTP codes are never returned in production (only in dev/test mode)\n\n**Request Body**:\n- `target`: Email address or phone number\n\n**Status Codes**:\n- 200: OTP sent successfully\n- 400: Invalid target format\n- 429: Rate limit exceeded",
        "operationId": "sendCustomerOTP_v2_giftcards_customers_otp_send_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendOTPRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendOTPResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customers/otp/verify": {
      "post": {
        "tags": [
          "Gift Card Customers"
        ],
        "summary": "Verifycustomerotp",
        "description": "### Verify OTP and Login Customer\n\nVerify the OTP code sent to the customer's email or phone.\nOn success, finds or creates a GiftCardCustomer record and returns a session token.\n\n**Flow**:\n1. Verify the OTP code against Redis\n2. Find or create a GiftCardCustomer document in MongoDB\n3. Update customer's trust level and login metadata\n4. Create a Redis-backed session (24-hour TTL)\n5. Return session token and customer identity\n\n**Request Body**:\n- `target`: Email or phone the OTP was sent to\n- `code`: 6-digit OTP code\n- `name`: Optional customer name (used during first registration)\n\n**Status Codes**:\n- 200: OTP verified, session created\n- 400: Invalid code, expired, or too many attempts",
        "operationId": "verifyCustomerOTP_v2_giftcards_customers_otp_verify_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyOTPRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyOTPResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customers/logout": {
      "post": {
        "tags": [
          "Gift Card Customers"
        ],
        "summary": "Logoutcustomer",
        "description": "### Logout Customer\n\nInvalidate a customer's session token in Redis.\n\n**Request Body**:\n- `sessionToken`: The session token to invalidate\n\n**Status Codes**:\n- 200: Session invalidated (or already expired)",
        "operationId": "logoutCustomer_v2_giftcards_customers_logout_post",
        "parameters": [
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogoutResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/customers/session": {
      "post": {
        "tags": [
          "Gift Card Customers"
        ],
        "summary": "Validatecustomersession",
        "description": "### Validate Customer Session\n\nCheck if a customer session token is still valid and return the customer identity.\nUsed by the ambassador to verify customer authentication on protected routes.\n\n**Request Body**:\n- `sessionToken`: The session token to validate\n\n**Returns**:\n- `valid`: Whether the session is valid\n- `customer`: Customer identity if session is valid\n\n**Status Codes**:\n- 200: Session validation result returned",
        "operationId": "validateCustomerSession_v2_giftcards_customers_session_post",
        "parameters": [
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateSessionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/merchants/session": {
      "post": {
        "tags": [
          "Gift Card Merchants"
        ],
        "summary": "Initmerchantsession",
        "description": "### Init or Refresh Merchant Session\n\nCalled by eposn-giftcards immediately after resolving a valid platform token.\nLooks up the merchant by `(merchantId, platform)`.  If a record exists the\ninfo is updated; if not, a new `GiftCardMerchant` document is created.\n\nLocations are stored as embedded sub-documents.  If `locationId` is provided,\nthe matching location is upserted within the merchant document.\n\n`programId` is stored **per location** \u2014 if supplied it will update only the\nactive location's `programId`, not a merchant-level field.\n\n**Returns**:\n- Full merchant context including the active location's `programId` so callers\n  can build a session without an additional API round-trip.\n\n**Status Codes**:\n- 200: Merchant record created or updated successfully\n- 401: HMAC authentication failed",
        "operationId": "initMerchantSession_v2_giftcards_merchants_session_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitMerchantSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantSessionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/merchants/session/validate": {
      "post": {
        "tags": [
          "Gift Card Merchants"
        ],
        "summary": "Validatemerchantsession",
        "description": "### Validate Merchant Session\n\nCheck if a merchant session token is still valid.",
        "operationId": "validateMerchantSession_v2_giftcards_merchants_session_validate_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateMerchantSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateMerchantSessionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/merchants/settings": {
      "put": {
        "tags": [
          "Gift Card Merchants"
        ],
        "summary": "Savemerchantsettings",
        "description": "### Save Per-Location Merchant Settings\n\nSaves the `programId` for a specific merchant location.  Merchant identity\nis resolved from the validated `X-Eposn-Merchant-Token` session, so\nownership is checked by confirming the programme belongs to that user.\n\nValidation steps:\n1. Parse and look up the `programId` \u2014 must exist in the Programme collection.\n2. Confirm the programme type is ``GIFT_CARD``.\n3. Confirm the programme's ``userId`` matches the authenticated user.\n4. Upsert the `programId` onto the target location of the matching\n   ``GiftCardMerchant`` document (matched by ``merchantId == str(user.id)``).\n\n**Status Codes**:\n- 200: Settings saved successfully\n- 400: programId is invalid or wrong type\n- 401: Not authenticated\n- 403: Programme does not belong to this user\n- 404: Programme or merchant not found",
        "operationId": "saveMerchantSettings_v2_giftcards_merchants_settings_put",
        "parameters": [
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SaveMerchantSettingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantSessionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/merchants/theme": {
      "get": {
        "tags": [
          "Gift Card Merchants"
        ],
        "summary": "Getmerchanttheme",
        "description": "Fetch the authenticated merchant's persisted portal theme.",
        "operationId": "getMerchantTheme_v2_giftcards_merchants_theme_get",
        "parameters": [
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MerchantThemeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Gift Card Merchants"
        ],
        "summary": "Savemerchanttheme",
        "description": "Validate and persist the authenticated merchant's portal theme.",
        "operationId": "saveMerchantTheme_v2_giftcards_merchants_theme_put",
        "parameters": [
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GiftCardMerchantTheme"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaveMerchantThemeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Theme validation failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "issues": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ThemeValidationIssue"
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ThemeValidationIssue"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/audit-logs": {
      "get": {
        "tags": [
          "Audit Logs"
        ],
        "summary": "Query Audit Logs",
        "description": "### Query Audit Logs\n\nPaginated query of audit log entries. Scoped by the authenticated user's\nmerchant context. Supports filtering by:\n\n- `merchantId` \u2014 merchant identifier\n- `subjectId` \u2014 customer/subject identifier (exact)\n- `actorId` \u2014 the user who performed the action (exact)\n- `subjectName` \u2014 customer/subject name or email (partial, case-insensitive)\n- `actorName` \u2014 actor's name, email, or username (partial, case-insensitive)\n- `merchantName` \u2014 merchant program name (partial, case-insensitive)\n- `action` \u2014 one or more `AuditAction` values (e.g. `pii_access`, `login_failed`)\n- `resourceType` \u2014 one or more `AuditResourceType` values\n- `from` / `to` \u2014 ISO 8601 datetime range\n- `page` / `limit` \u2014 pagination (max 200 per page)\n\nMERCHANT_ADMIN and MERCHANT_STAFF can query. If `merchantId` is omitted,\ndefaults to the program ID from the authenticated session.",
        "operationId": "query_audit_logs_v2_giftcards_audit_logs_get",
        "parameters": [
          {
            "name": "merchantId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Merchantid"
            }
          },
          {
            "name": "subjectId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Subjectid"
            }
          },
          {
            "name": "actorId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Actorid"
            }
          },
          {
            "name": "subjectName",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Subjectname"
            }
          },
          {
            "name": "actorName",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Actorname"
            }
          },
          {
            "name": "merchantName",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Merchantname"
            }
          },
          {
            "name": "action",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Action"
            }
          },
          {
            "name": "resourceType",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Resourcetype"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogPage"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/audit-logs/export": {
      "post": {
        "tags": [
          "Audit Logs"
        ],
        "summary": "Export Audit Logs",
        "description": "### Export Audit Logs (async bulk export)\n\nTriggers a background task to export audit log entries matching the given\nfilters as CSV or JSON. Only MERCHANT_ADMIN can trigger exports.\n\nReturns immediately with a `taskId`. Poll\n`GET /giftcards/audit-logs/export/{taskId}` to check status and get the download URL.",
        "operationId": "export_audit_logs_v2_giftcards_audit_logs_export_post",
        "parameters": [
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportStatusResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/audit-logs/export/{task_id}": {
      "get": {
        "tags": [
          "Audit Logs"
        ],
        "summary": "Get Export Status",
        "description": "### Poll Audit Log Export Status\n\nReturns the current status of a background export task.\nWhen `status` is `\"success\"`, `downloadUrl` contains a presigned S3 URL\nvalid for 1 hour.",
        "operationId": "get_export_status_v2_giftcards_audit_logs_export__task_id__get",
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportStatusResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/metrics": {
      "get": {
        "tags": [
          "fraud"
        ],
        "summary": "Get Fraud Metrics",
        "operationId": "get_fraud_metrics_v2_giftcards_programs__programId__fraud_metrics_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/alerts": {
      "get": {
        "tags": [
          "fraud"
        ],
        "summary": "Get Fraud Alerts",
        "operationId": "get_fraud_alerts_v2_giftcards_programs__programId__fraud_alerts_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Severity"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "patternType",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Patterntype"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Limit"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/alerts/{alert_id}/acknowledge": {
      "post": {
        "tags": [
          "fraud"
        ],
        "summary": "Acknowledge Fraud Alert",
        "operationId": "acknowledge_fraud_alert_v2_giftcards_programs__programId__fraud_alerts__alert_id__acknowledge_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "alert_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Alert Id"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcknowledgeAlertRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/patterns": {
      "get": {
        "tags": [
          "fraud"
        ],
        "summary": "Get Fraud Patterns",
        "operationId": "get_fraud_patterns_v2_giftcards_programs__programId__fraud_patterns_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/blocked-ips": {
      "get": {
        "tags": [
          "fraud"
        ],
        "summary": "Get Blocked Ips",
        "operationId": "get_blocked_ips_v2_giftcards_programs__programId__fraud_blocked_ips_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/block-ip": {
      "post": {
        "tags": [
          "fraud"
        ],
        "summary": "Block Ip",
        "operationId": "block_ip_v2_giftcards_programs__programId__fraud_block_ip_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockIPRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/block-ip/{ip}": {
      "delete": {
        "tags": [
          "fraud"
        ],
        "summary": "Unblock Ip",
        "operationId": "unblock_ip_v2_giftcards_programs__programId__fraud_block_ip__ip__delete",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "ip",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Ip"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/velocity-checks": {
      "get": {
        "tags": [
          "fraud"
        ],
        "summary": "Get Velocity Checks",
        "operationId": "get_velocity_checks_v2_giftcards_programs__programId__fraud_velocity_checks_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/rules": {
      "get": {
        "tags": [
          "fraud"
        ],
        "summary": "Get Fraud Rules",
        "operationId": "get_fraud_rules_v2_giftcards_programs__programId__fraud_rules_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "fraud"
        ],
        "summary": "Create Fraud Rule",
        "operationId": "create_fraud_rule_v2_giftcards_programs__programId__fraud_rules_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFraudRuleRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/fraud/rules/{rule_id}": {
      "put": {
        "tags": [
          "fraud"
        ],
        "summary": "Update Fraud Rule",
        "operationId": "update_fraud_rule_v2_giftcards_programs__programId__fraud_rules__rule_id__put",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "rule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rule Id"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFraudRuleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "fraud"
        ],
        "summary": "Delete Fraud Rule",
        "operationId": "delete_fraud_rule_v2_giftcards_programs__programId__fraud_rules__rule_id__delete",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "rule_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rule Id"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/anomalies/alerts": {
      "get": {
        "tags": [
          "anomalies"
        ],
        "summary": "Get Anomaly Alerts",
        "operationId": "get_anomaly_alerts_v2_giftcards_programs__programId__anomalies_alerts_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AnomalyAlertSeverity"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Severity"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AnomalyAlertType"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Type"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AnomalyAlertStatus"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Limit"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/anomalies/metrics": {
      "get": {
        "tags": [
          "anomalies"
        ],
        "summary": "Get Anomaly Metrics",
        "operationId": "get_anomaly_metrics_v2_giftcards_programs__programId__anomalies_metrics_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 30,
              "minimum": 1,
              "default": 7,
              "title": "Days"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/anomalies/alerts/{alert_id}/acknowledge": {
      "post": {
        "tags": [
          "anomalies"
        ],
        "summary": "Acknowledge Anomaly Alert",
        "operationId": "acknowledge_anomaly_alert_v2_giftcards_programs__programId__anomalies_alerts__alert_id__acknowledge_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "alert_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Alert Id"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/analytics/overview": {
      "get": {
        "tags": [
          "Gift Card Analytics"
        ],
        "summary": "Get Analytics Overview",
        "description": "Return a KPI snapshot for the programme over the requested period.\n\nComputes period-over-period deltas against the immediately preceding window\nof the same duration.  Monetary values are returned as ``\"0.00\"`` strings to\npreserve decimal precision across JSON serialisation.",
        "operationId": "get_analytics_overview_v2_giftcards_programs__programId__analytics_overview_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(7d|30d|90d|12m|custom)$"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Period"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/analytics/trends": {
      "get": {
        "tags": [
          "Gift Card Analytics"
        ],
        "summary": "Get Analytics Trends",
        "description": "Return time-series transaction data bucketed by *granularity*.\n\nThe aggregation groups transactions by day in MongoDB, then Python\nre-buckets the daily totals into week/month windows.  This avoids\nMongoDB version-specific ``$dateTrunc`` syntax.",
        "operationId": "get_analytics_trends_v2_giftcards_programs__programId__analytics_trends_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^(7d|30d|90d|12m|custom)$"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Period"
            }
          },
          {
            "name": "granularity",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "daily",
              "title": "Granularity"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/analytics/export": {
      "post": {
        "tags": [
          "Gift Card Analytics"
        ],
        "summary": "Export Analytics",
        "description": "Export analytics data for the period.\n\nGenerates the report synchronously, uploads to S3, and returns a\npre-signed download URL (or a ``data:`` URI if S3 is unavailable).",
        "operationId": "export_analytics_v2_giftcards_programs__programId__analytics_export_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnalyticsExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/schedule": {
      "post": {
        "tags": [
          "Gift Card Reports"
        ],
        "summary": "Create Schedule",
        "description": "Create an automated report schedule for the programme.",
        "operationId": "create_schedule_v2_giftcards_programs__programId__reports_schedule_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/scheduled": {
      "get": {
        "tags": [
          "Gift Card Reports"
        ],
        "summary": "List Scheduled Reports",
        "description": "List all scheduled reports for the programme, newest first.",
        "operationId": "list_scheduled_reports_v2_giftcards_programs__programId__reports_scheduled_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Pagesize"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/scheduled/{scheduleId}": {
      "delete": {
        "tags": [
          "Gift Card Reports"
        ],
        "summary": "Delete Scheduled Report",
        "description": "Delete a scheduled report by its UUID.\n\nReturns ``{\"success\": true}`` on success, 404 if not found.\nThe ``scheduleId`` value is URL-decoded to support the ``%2F``-encoded\nform that some HTTP clients send.",
        "operationId": "delete_scheduled_report_v2_giftcards_programs__programId__reports_scheduled__scheduleId__delete",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "scheduleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Scheduleid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/scheduled/{scheduleId}/download": {
      "get": {
        "tags": [
          "Gift Card Reports"
        ],
        "summary": "Download Scheduled Report",
        "description": "Generate and stream the latest report data for a schedule.\n\nDefaults to the last 30 days of transactions regardless of the schedule's\nconfigured period.  The response ``Content-Disposition`` header carries the\nsuggested filename derived from the schedule name and current date.",
        "operationId": "download_scheduled_report_v2_giftcards_programs__programId__reports_scheduled__scheduleId__download_get",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "scheduleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Scheduleid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/giftcards/programs/{programId}/reports/validate": {
      "post": {
        "tags": [
          "Gift Card Reports"
        ],
        "summary": "Validate Report Data",
        "description": "Run data-integrity checks against the programme's gift card collection.\n\nChecks include balance consistency, status transitions, future-dated\ntransactions, and revenue reconciliation.  Returns a list of issues\nwith severity (``\"error\"`` | ``\"warning\"``) so the caller can surface\nthem in the UI.",
        "operationId": "validate_report_data_v2_giftcards_programs__programId__reports_validate_post",
        "parameters": [
          {
            "name": "programId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Programid"
            }
          },
          {
            "name": "cardId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cardid"
            }
          },
          {
            "name": "X-Eposn-Customer-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Customer-Token"
            }
          },
          {
            "name": "X-Eposn-Merchant-Token",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Eposn-Merchant-Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passtypes": {
      "get": {
        "tags": [
          "Pass Type IDs"
        ],
        "summary": "Get All Available Passtypes",
        "description": "Retrieves a list of all available pass type IDs for the current user.\n\n- **user**: The authenticated user instance.\n\n### Returns\n- **list**: A list of pass type IDs serialized into `PassTypeRead` schema.",
        "operationId": "get_all_available_passtypes_v2_passtypes_get",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passtypes/{passTypeIdentifier}": {
      "get": {
        "tags": [
          "Pass Type IDs"
        ],
        "summary": "Get Passtype Information",
        "description": "Fetches detailed information about a specific pass type ID associated with the current user.\n\n- **passTypeIdentifier**: The unique identifier for the pass type.\n- **user**: The authenticated user instance.\n\n### Returns\n- **dict**: Detailed pass type information or an error message if not found.",
        "operationId": "get_passtype_information_v2_passtypes__passTypeIdentifier__get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates": {
      "get": {
        "tags": [
          "Pass Templates"
        ],
        "summary": "Get Pass Templates",
        "description": "### Get Pass Templates\n\nRetrieves a list of pass templates based on search criteria.\n\n**Parameters:**\n- `search` (dict): Search parameters including pagination options.\n- `user` (User): The currently authenticated user.\n\n**Returns:**\n- `list`: A list of pass templates serialized into dictionaries.",
        "operationId": "get_pass_templates_v2_templates_get",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pass Templates"
        ],
        "summary": "Create Pass Template",
        "description": "### Create Pass Template\n\nCreates a new pass template based on the provided data.\n\n**Parameters:**\n- `input` (dict): The template data.\n- `user` (User): The currently authenticated user.\n- `background_tasks` (BackgroundTasks): Background tasks for asynchronous execution.\n\n**Returns:**\n- `dict`: The newly created pass template.",
        "operationId": "create_pass_template_v2_templates_post",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true,
                "title": "Input"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}": {
      "get": {
        "tags": [
          "Pass Templates > Information"
        ],
        "summary": "Get Pass Template Information",
        "description": "### Get Pass Template Information\n\nRetrieves detailed information for a specific pass template.\n\n**Parameters:**\n- `templateId` (str): The ID of the pass template.\n\n**Returns:**\n- `dict`: Detailed information of the pass template.",
        "operationId": "get_pass_template_information_v2_templates__templateId__get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pass Templates > Information"
        ],
        "summary": "Update Pass Template Information",
        "description": "### Update Pass Template Information\n\nUpdates the information of a specific pass template.\n\n**Parameters:**\n- `data` (UpdateTemplatePayload): The updated template data.\n- `template` (Template): The template to update.\n\n**Returns:**\n- `dict`: The updated pass template information.",
        "operationId": "update_pass_template_information_v2_templates__templateId__put",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTemplatePayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pass Templates > Information"
        ],
        "summary": "Delete Pass Template Information",
        "description": "### Delete Pass Template Information\n\nDeletes a specific pass template and handles related clean-up.\n\n**Parameters:**\n- `template` (Template): The template to delete.\n- `background_tasks` (BackgroundTasks): Background tasks for asynchronous execution.\n\n**Returns:**\n- `Response`: Standard HTTP response indicating success or failure.",
        "operationId": "delete_pass_template_information_v2_templates__templateId__delete",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/walletclass": {
      "get": {
        "tags": [
          "Templates"
        ],
        "summary": "Get Pass Json",
        "operationId": "get_pass_json_v2_templates__templateId__walletclass_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/url": {
      "get": {
        "tags": [
          "Pass Templates > Link"
        ],
        "summary": "Get Pass Template Link",
        "description": "### Get Pass Template Link\n\nRetrieves the URL for a specific pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: A dictionary containing the template URL.",
        "operationId": "get_pass_template_link_v2_templates__templateId__url_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/pass": {
      "post": {
        "tags": [
          "Pass Templates > Pass Generation"
        ],
        "summary": "Create Pass From Template With Values Images",
        "description": "### Create Pass from Template with Values and Images\n\nCreates a pass from a template with provided values and images.\n\n**Parameters:**\n- `request` (Request): The incoming request.\n- `template` (Template): The pass template.\n- `user` (User): The currently authenticated user.\n- `background_tasks` (BackgroundTasks): Background tasks for asynchronous execution.\n\n**Returns:**\n- `dict`: A dictionary containing the created pass information.",
        "operationId": "create_pass_from_template_with_values_images_v2_templates__templateId__pass_post",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/names/{name}/pass": {
      "post": {
        "tags": [
          "Pass Templates > Pass Generation"
        ],
        "summary": "Create Pass From Template With Values Images By Name",
        "description": "### Create Pass from Template with Values and Images by Name\n\nCreates a pass from a template with provided values and images, identified by the template name.\n\n**Parameters:**\n- `request` (Request): The incoming request.\n- `name` (str): The name of the pass template.\n- `user` (User): The currently authenticated user.\n- `background_tasks` (BackgroundTasks): Background tasks for asynchronous execution.\n\n**Returns:**\n- `dict`: A dictionary containing the created pass information.",
        "operationId": "create_pass_from_template_with_values_images_by_name_v2_templates_names__name__pass_post",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Name"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/images": {
      "get": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Get All Images Of Pass Template",
        "description": "### Get All Images of Pass Template\n\nRetrieves all images associated with a specific pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `list`: A list of images serialized into dictionaries.",
        "operationId": "get_all_images_of_pass_template_v2_templates__templateId__images_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Delete All Images Of Pass Template",
        "description": "### Delete All Images of Pass Template\n\nDeletes all images associated with a specific pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `Response`: Standard HTTP response indicating success or failure.",
        "operationId": "delete_all_images_of_pass_template_v2_templates__templateId__images_delete",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/images/{type}": {
      "get": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Get All Images Of Pass Template Of Type",
        "description": "### Get All Images of Pass Template of Type\n\nRetrieves all images of a specific type associated with a pass template.\n\n**Parameters:**\n- `type` (PassImageType): The type of the images.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `list`: A list of images of the specified type serialized into dictionaries.",
        "operationId": "get_all_images_of_pass_template_of_type_v2_templates__templateId__images__type__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Delete All Images Of Pass Template Of Type",
        "description": "### Delete All Images of Pass Template of Type\n\nDeletes all images of a specific type associated with a pass template.\n\n**Parameters:**\n- `type` (PassImageType): The type of the images.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `Response`: Standard HTTP response indicating success or failure.",
        "operationId": "delete_all_images_of_pass_template_of_type_v2_templates__templateId__images__type__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/images/{type}/{resolution}": {
      "get": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Get Image From Pass Template Of Type And Resolution",
        "description": "### Get Image from Pass Template of Type and Resolution\n\nRetrieves an image of a specific type and resolution associated with a pass template.\n\n**Parameters:**\n- `type` (PassImageType): The type of the image.\n- `resolution` (PassImageResolution): The resolution of the image.\n- `template` (Template): The pass template.\n- `temp_file` (IO): A temporary file object for image storage.\n\n**Returns:**\n- `FileResponse`: The image file response.",
        "operationId": "get_image_from_pass_template_of_type_and_resolution_v2_templates__templateId__images__type___resolution__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageResolution"
            }
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Create Or Update Image Of Pass Template Of Type And Resolution",
        "description": "### Create or Update Image of Pass Template of Type and Resolution\n\nCreates or updates an image of a specific type and resolution for a pass template.\n\n**Parameters:**\n- `type` (PassImageType): The type of the image.\n- `resolution` (PassImageResolution): The resolution of the image.\n- `image` (UploadFile): The image file to upload.\n- `template` (Template): The pass template.\n- `user` (User): The currently authenticated user.\n\n**Returns:**\n- `dict`: The serialized image data.",
        "operationId": "create_or_update_image_of_pass_template_of_type_and_resolution_v2_templates__templateId__images__type___resolution__post",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageResolution"
            }
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_or_update_image_of_pass_template_of_type_and_resolution_v2_templates__templateId__images__type___resolution__post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pass Templates > Images"
        ],
        "summary": "Delete Image Of Pass Template Of Type And Resolution",
        "description": "### Delete Image of Pass Template of Type and Resolution\n\nDeletes an image of a specific type and resolution associated with a pass template.\n\n**Parameters:**\n- `type` (PassImageType): The type of the image.\n- `resolution` (PassImageResolution): The resolution of the image.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `Response`: Standard HTTP response indicating success or failure.",
        "operationId": "delete_image_of_pass_template_of_type_and_resolution_v2_templates__templateId__images__type___resolution__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageResolution"
            }
          },
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/actions": {
      "get": {
        "tags": [
          "Pass Templates > Actions"
        ],
        "summary": "Get Pass Template Actions",
        "description": "### Get Pass Template Actions\n\nReturns all actions of the pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: All actions of the pass template.",
        "operationId": "get_pass_template_actions_v2_templates__templateId__actions_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pass Templates > Actions"
        ],
        "summary": "Update Pass Template Actions",
        "description": "### Update Pass Template Actions\n\nUpdate the actions of the pass template.\n\n**Parameters:**\n- `actions` (TemplateAction): The updated actions data.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The updated actions of the pass template.",
        "operationId": "update_pass_template_actions_v2_templates__templateId__actions_put",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateAction"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/branding": {
      "get": {
        "tags": [
          "Pass Templates > Branding"
        ],
        "summary": "Get Branding Settings Of Pass Template",
        "description": "### Get Branding Settings of Pass Template\n\nReturns the branding settings of the pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The branding settings of the pass template.",
        "operationId": "get_branding_settings_of_pass_template_v2_templates__templateId__branding_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pass Templates > Branding"
        ],
        "summary": "Update Branding Settings Of Pass Template",
        "description": "### Update Branding Settings of Pass Template\n\nUpdate the branding settings of the pass template.\n\n**Parameters:**\n- `branding` (TemplateBranding): The updated branding settings data.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The updated branding settings of the pass template.",
        "operationId": "update_branding_settings_of_pass_template_v2_templates__templateId__branding_put",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateBranding"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/branding/footer": {
      "put": {
        "tags": [
          "Pass Templates > Branding"
        ],
        "summary": "Update Branding Footer Image",
        "description": "### Update Branding Footer Image\n\nUpdate the branding footer image for a pass template.\n\n**Parameters:**\n- `image` (UploadFile): The image file to upload.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The updated branding settings of the pass template.",
        "operationId": "update_branding_footer_image_v2_templates__templateId__branding_footer_put",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_branding_footer_image_v2_templates__templateId__branding_footer_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pass Templates > Branding"
        ],
        "summary": "Delete Branding Footer Image",
        "description": "### Delete Branding Footer Image\n\nDelete the branding footer image for a pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The updated branding settings of the pass template.",
        "operationId": "delete_branding_footer_image_v2_templates__templateId__branding_footer_delete",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/restrictions": {
      "get": {
        "tags": [
          "Pass Templates > Distribution Restrictions"
        ],
        "summary": "Get Pass Template Distribution Restrictions",
        "description": "### Get Pass Template Distribution Restrictions\n\nReturns the distribution restrictions of the pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The distribution restrictions of the pass template.",
        "operationId": "get_pass_template_distribution_restrictions_v2_templates__templateId__restrictions_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pass Templates > Distribution Restrictions"
        ],
        "summary": "Update Pass Template Distribution Restrictions",
        "description": "### Update Pass Template Distribution Restrictions\n\nUpdate the distribution restrictions of the pass template.\n\n**Parameters:**\n- `restrictions` (TemplateRestrictions): The updated distribution restrictions data.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The updated distribution restrictions of the pass template.",
        "operationId": "update_pass_template_distribution_restrictions_v2_templates__templateId__restrictions_put",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateRestrictions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{templateId}/payment": {
      "get": {
        "tags": [
          "Pass Templates > Payment Settings"
        ],
        "summary": "Get Payment Settings For Pass Template",
        "description": "### Get Payment Settings for Pass Template\n\nReturns the payment settings of the pass template.\n\n**Parameters:**\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The payment settings of the pass template.",
        "operationId": "get_payment_settings_for_pass_template_v2_templates__templateId__payment_get",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pass Templates > Payment"
        ],
        "summary": "Update Payment Settings For Pass Template",
        "description": "### Update Payment Settings for Pass Template\n\nUpdate the payment settings of the pass template.\n\n**Parameters:**\n- `payment` (TemplatePayment): The updated payment settings data.\n- `template` (Template): The pass template.\n\n**Returns:**\n- `dict`: The updated payment settings of the pass template.",
        "operationId": "update_payment_settings_for_pass_template_v2_templates__templateId__payment_put",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Templateid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplatePayment"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Passes",
        "description": "Retrieve all passes associated with the current user.\n\n**Parameters:**\n- `user`: User object, automatically resolved from the request.\n- `search`: Dictionary containing search parameters.\n\n**Returns:**\n- `list`: A list of serialized pass data.",
        "operationId": "get_passes_v2_passes_get",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Pass Type Identifier",
        "description": "Fetch information about passes with a specific type identifier for the current user.\n\n**Parameters:**\n- `passTypeIdentifier`: The unique identifier for the pass type.\n- `user`: User object, automatically resolved from the request.\n- `search`: Dictionary containing search parameters.\n\n**Returns:**\n- `list`: A list of passes matching the pass type identifier.",
        "operationId": "get_pass_type_identifier_v2_passes__passTypeIdentifier__get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Pass",
        "description": "Retrieve a specific pass by its type identifier and serial number.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n- `temp_dir`: Temporary directory path, automatically resolved.\n- `background_tasks`: BackgroundTasks object for scheduling tasks.\n\n**Returns:**\n- `FileResponse`: A file response containing the pass file.",
        "operationId": "get_pass_v2_passes__passTypeIdentifier___serialNumber__get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passes"
        ],
        "summary": "Delete Pass",
        "description": "Delete a specific pass by its type identifier and serial number.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n- `background_tasks`: BackgroundTasks object for scheduling tasks.\n\n**Returns:**\n- `Response`: A standard response indicating success or failure.",
        "operationId": "delete_pass_v2_passes__passTypeIdentifier___serialNumber__delete",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/url": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Pass Url",
        "description": "Retrieve the URL of a specific pass by its type identifier and serial number.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `dict`: A dictionary containing the URL of the pass.",
        "operationId": "get_pass_url_v2_passes__passTypeIdentifier___serialNumber__url_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/walletobject": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Pass Wallet Object",
        "operationId": "get_pass_wallet_object_v2_passes__passTypeIdentifier___serialNumber__walletobject_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/savetowallet": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Save Pass To Wallet Url",
        "operationId": "get_save_pass_to_wallet_url_v2_passes__passTypeIdentifier___serialNumber__savetowallet_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/passjson": {
      "get": {
        "tags": [
          "Passes"
        ],
        "summary": "Get Pass Json",
        "description": "Retrieve detailed information of a specific pass in JSON format.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n- `ifModifiedSince`: Optional datetime to check for modifications.\n\n**Returns:**\n- `Response`: A JSON response containing detailed pass information or a not modified status.",
        "operationId": "get_pass_json_v2_passes__passTypeIdentifier___serialNumber__passjson_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          },
          {
            "name": "if-modified-since",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Modified-Since"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/email": {
      "post": {
        "tags": [
          "Passes"
        ],
        "summary": "Send Pass To Email",
        "description": "Send a specific pass to a user's email.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n- `temp_dir`: Temporary directory path, automatically resolved.\n- `email`: Email address to send the pass to.\n- `subject`: Optional subject line for the email.\n- `message`: Optional message body for the email.\n\n**Returns:**\n- `JSONResponse`: A response indicating the success of the email sending operation.",
        "operationId": "send_pass_to_email_v2_passes__passTypeIdentifier___serialNumber__email_post",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_send_pass_to_email_v2_passes__passTypeIdentifier___serialNumber__email_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/push": {
      "post": {
        "tags": [
          "Passes"
        ],
        "summary": "Push Update To Pass",
        "description": "Send a push notification update for a specific pass.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `Response`: A standard response indicating the push notification was sent.",
        "operationId": "push_update_to_pass_v2_passes__passTypeIdentifier___serialNumber__push_post",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/values": {
      "get": {
        "tags": [
          "Passes > Pass Values"
        ],
        "summary": "Get Pass Values",
        "description": "Retrieve the placeholder values of a specific pass.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `dict`: A dictionary containing the placeholder values of the pass.",
        "operationId": "get_pass_values_v2_passes__passTypeIdentifier___serialNumber__values_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Passes > Pass Values"
        ],
        "summary": "Put Pass Values",
        "description": "Update the placeholder values of a specific pass.\n\n**Parameters:**\n- `data`: Dictionary containing the new placeholder values.\n- `lpass`: Pass object, automatically resolved from the request.\n- `background_tasks`: BackgroundTasks object for scheduling tasks.\n\n**Returns:**\n- `dict`: A dictionary containing the updated placeholder values of the pass.",
        "operationId": "put_pass_values_v2_passes__passTypeIdentifier___serialNumber__values_put",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true,
                "title": "Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/values/{placeholderName}": {
      "put": {
        "tags": [
          "Passes > Pass Values"
        ],
        "summary": "Update Pass Placeholder",
        "description": "Update a single placeholder value of a specific pass.\n\n**Parameters:**\n- `placeholderName`: The name of the placeholder to update.\n- `value`: The new value for the placeholder.\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `dict`: A dictionary containing the updated placeholder values of the pass.",
        "operationId": "update_pass_placeholder_v2_passes__passTypeIdentifier___serialNumber__values__placeholderName__put",
        "parameters": [
          {
            "name": "placeholderName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Placeholdername"
            }
          },
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_pass_placeholder_v2_passes__passTypeIdentifier___serialNumber__values__placeholderName__put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/images": {
      "get": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Get Pass Images",
        "description": "Retrieve all images associated with a specific pass.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `list`: A list of serialized image data.",
        "operationId": "get_pass_images_v2_passes__passTypeIdentifier___serialNumber__images_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Delete Pass Images",
        "description": "Delete all images associated with a specific pass.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n- `background_tasks`: BackgroundTasks object for scheduling tasks.\n\n**Returns:**\n- `Response`: A standard response indicating the images were deleted.",
        "operationId": "delete_pass_images_v2_passes__passTypeIdentifier___serialNumber__images_delete",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/images/{type}": {
      "get": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Get Pass Images By Type",
        "description": "Retrieve all images of a specific type associated with a pass.\n\n**Parameters:**\n- `type`: The type of images to retrieve.\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `list`: A list of serialized image data.",
        "operationId": "get_pass_images_by_type_v2_passes__passTypeIdentifier___serialNumber__images__type__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Delete All Pass Images Type",
        "description": "Delete all images of a specific type associated with a pass.\n\n**Parameters:**\n- `type`: The type of images to delete.\n- `lpass`: Pass object, automatically resolved from the request.\n- `background_tasks`: BackgroundTasks object for scheduling tasks.\n\n**Returns:**\n- `Response`: A standard response indicating the images were deleted.",
        "operationId": "delete_all_pass_images_type_v2_passes__passTypeIdentifier___serialNumber__images__type__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/images/{type}/{resolution}": {
      "get": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Get Pass Images Type Resolution",
        "description": "Retrieve all images of a specific type and resolution associated with a pass.\n\n**Parameters:**\n- `type`: The type of images to retrieve.\n- `resolution`: The resolution of the images to retrieve.\n- `lpass`: Pass object, automatically resolved from the request.\n- `temp_file`: Temporary file object, automatically resolved.\n\n**Returns:**\n- `FileResponse`: A file response containing the requested image.",
        "operationId": "get_pass_images_type_resolution_v2_passes__passTypeIdentifier___serialNumber__images__type___resolution__get",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageResolution"
            }
          },
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Create Update Pass Images Type Resolution",
        "description": "### Create or Update Image of Pass of Type and Resolution\n\nCreate or update an image associated with a specific pass, identified by type and resolution.\n\n**Parameters:**\n- `type`: Type of the image (e.g., logo, background).\n- `resolution`: Resolution of the image (e.g., normal, high).\n- `image`: Image file to be uploaded.\n- `lpass`: Pass object, automatically resolved from the request.\n- `user`: User object, automatically resolved from the request.\n\n**Returns:**\n- `JSONResponse`: A response with the image details or an error message.",
        "operationId": "create_update_pass_images_type_resolution_v2_passes__passTypeIdentifier___serialNumber__images__type___resolution__post",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageResolution"
            }
          },
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_create_update_pass_images_type_resolution_v2_passes__passTypeIdentifier___serialNumber__images__type___resolution__post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Delete All Pass Images Type Resolution",
        "description": "### Delete all images with the given type and resolution of the Wallet pass\n\nDelete all images of a specific type and resolution associated with a pass. Template images are not included.\n\n**Parameters:**\n- `type`: Type of the image (e.g., logo, background).\n- `resolution`: Resolution of the image (e.g., normal, high).\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `JSONResponse`: A response indicating the success or failure of the deletion.",
        "operationId": "delete_all_pass_images_type_resolution_v2_passes__passTypeIdentifier___serialNumber__images__type___resolution__delete",
        "parameters": [
          {
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageType"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PassImageResolution"
            }
          },
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/status": {
      "get": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Get Pass Status",
        "description": "### Get the status of the Wallet pass\n\nRetrieve the current status of a specific Wallet pass.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `str`: The current status of the Wallet pass.",
        "operationId": "get_pass_status_v2_passes__passTypeIdentifier___serialNumber__status_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Passes > Pass Images"
        ],
        "summary": "Update Pass Status",
        "description": "### Update the status of the Wallet pass\n\nUpdate the status of a specific Wallet pass.\n\n**Parameters:**\n- `status`: New status to be set.\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `JSONResponse`: A response indicating the success of the update.",
        "operationId": "update_pass_status_v2_passes__passTypeIdentifier___serialNumber__status_put",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_pass_status_v2_passes__passTypeIdentifier___serialNumber__status_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/passes/{passTypeIdentifier}/{serialNumber}/price": {
      "get": {
        "tags": [
          "Passes > Pass Payment"
        ],
        "summary": "Get Pass Price",
        "description": "### Get pass custom price\n\nRetrieve the custom price of a pass with the given pass type identifier and serial number.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `float`: The price of the pass.",
        "operationId": "get_pass_price_v2_passes__passTypeIdentifier___serialNumber__price_get",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Passes > Pass Payment"
        ],
        "summary": "Update Custom Price",
        "description": "### Update pass custom price\n\nUpdate the custom price of a pass with the given pass type identifier and serial number.\n\n**Parameters:**\n- `price`: New price to be set.\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `JSONResponse`: A response indicating the success of the price update.",
        "operationId": "update_custom_price_v2_passes__passTypeIdentifier___serialNumber__price_put",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_update_custom_price_v2_passes__passTypeIdentifier___serialNumber__price_put"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passes > Pass Payment"
        ],
        "summary": "Delete Custom Price",
        "description": "### Delete pass custom price\n\nDelete the custom price of a pass with the given pass type identifier and serial number.\n\n**Parameters:**\n- `lpass`: Pass object, automatically resolved from the request.\n\n**Returns:**\n- `JSONResponse`: A response indicating the success of the deletion.",
        "operationId": "delete_custom_price_v2_passes__passTypeIdentifier___serialNumber__price_delete",
        "parameters": [
          {
            "name": "passTypeIdentifier",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passtypeidentifier"
            }
          },
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Serialnumber"
            }
          },
          {
            "name": "passId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/scanners": {
      "get": {
        "tags": [
          "Scanners"
        ],
        "summary": "Get All Scanners",
        "description": "Retrieves a paginated list of all scanners associated with the current user.\n\n### Parameters:\n- `search` (dict): Pagination parameters including 'skip' and 'limit'.\n- `user` (User): The current authenticated user.\n\n### Returns:\n- `List[dict]`: A list of scanner data dictionaries.",
        "operationId": "get_all_scanners_v2_scanners_get",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Scanners"
        ],
        "summary": "Create Scanner",
        "description": "Creates a new scanner with the provided data under the current user's account.\n\n### Parameters:\n- `data` (CreatePassScannerPayload): The data required to create a scanner.\n- `user` (User): The current authenticated user.\n\n### Returns:\n- `dict`: The newly created scanner data.",
        "operationId": "create_scanner_v2_scanners_post",
        "parameters": [
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePassScannerPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/scanners/{scannerId}": {
      "get": {
        "tags": [
          "Scanners"
        ],
        "summary": "Get Scanner Information",
        "description": "Retrieves detailed information about a specific scanner by its ID.\n\n### Parameters:\n- `scannerId` (str): The unique identifier of the scanner.\n\n### Returns:\n- `dict`: Detailed scanner information.",
        "operationId": "get_scanner_information_v2_scanners__scannerId__get",
        "parameters": [
          {
            "name": "scannerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Scannerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Scanners"
        ],
        "summary": "Update Scanner Information",
        "description": "Updates the specified scanner with new data.\n\n### Parameters:\n- `scannerId` (str): The unique identifier of the scanner to update.\n- `data` (UpdatePassScannerPayload): The data to update the scanner with.\n\n### Returns:\n- `dict`: The updated scanner data.",
        "operationId": "update_scanner_information_v2_scanners__scannerId__put",
        "parameters": [
          {
            "name": "scannerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Scannerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePassScannerPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Scanners"
        ],
        "summary": "Delete Scanner",
        "description": "Deletes a scanner and all associated events.\n\n### Parameters:\n- `scannerId` (str): The unique identifier of the scanner to be deleted.\n\n### Returns:\n- `Response`: A standard HTTP response indicating success or failure.",
        "operationId": "delete_scanner_v2_scanners__scannerId__delete",
        "parameters": [
          {
            "name": "scannerId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Scannerid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get All Webhooks",
        "description": "Retrieve all webhooks associated with the current user based on search parameters.\n\n- **search**: `dict` - Search parameters including 'skip' and 'limit' for pagination.\n- **user**: `User` - The current authenticated user.\n\n**Returns**: `list` - A list of webhooks with selected fields (id, url, sharedSecret, enabled).",
        "operationId": "get_all_webhooks_v2_webhooks_get",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 250,
              "title": "Limit"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Offset"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create Webhook",
        "description": "Create a new webhook for the current user.\n\n- **data**: `CreateWebhookPayload` - The data for creating the webhook.\n- **user**: `User` - The current authenticated user.\n\n**Returns**: `dict` - The created webhook data.",
        "operationId": "create_webhook_v2_webhooks_post",
        "parameters": [
          {
            "name": "user-agent",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhooks/{webhookId}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get Webhook Information",
        "description": "Retrieve information for a specific webhook by ID.\n\n- **webhook**: `Webhook` - The webhook instance loaded by webhook ID.\n\n**Returns**: `dict` - The information of the specified webhook.",
        "operationId": "get_webhook_information_v2_webhooks__webhookId__get",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Webhookid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update Webhook Information",
        "description": "Update the information of a specific webhook.\n\n- **data**: `CreateWebhookPayload` - The updated data for the webhook.\n- **webhook**: `Webhook` - The webhook instance loaded by webhook ID.\n\n**Returns**: `dict` - The updated webhook information.",
        "operationId": "update_webhook_information_v2_webhooks__webhookId__put",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Webhookid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookPayload"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete Webhook",
        "description": "Delete a specific webhook by ID.\n\n- **webhook**: `Webhook` - The webhook instance loaded by webhook ID.\n\n**Returns**: `Response` - A JSON response indicating successful deletion.",
        "operationId": "delete_webhook_v2_webhooks__webhookId__delete",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Webhookid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhooks/{webhookId}/enable": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Enable Webhook",
        "description": "Enable a webhook and verify its endpoint by sending a verification token.\n\n- **webhook**: `Webhook` - The webhook instance loaded by webhook ID.\n\n**Returns**: `dict` - The updated webhook information if enabled successfully, otherwise an error message.",
        "operationId": "enable_webhook_v2_webhooks__webhookId__enable_post",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Webhookid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhooks/{webhookId}/disable": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Disable Webhook",
        "description": "Disable a specific webhook by ID.\n\n- **webhook**: `Webhook` - The webhook instance loaded by webhook ID.\n\n**Returns**: `dict` - The updated webhook information showing it as disabled.",
        "operationId": "disable_webhook_v2_webhooks__webhookId__disable_post",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                {
                  "type": "string"
                }
              ],
              "title": "Webhookid"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AMLAcknowledgeRequest": {
        "properties": {
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          }
        },
        "type": "object",
        "title": "AMLAcknowledgeRequest"
      },
      "AMLAlertResponse": {
        "properties": {
          "alertId": {
            "type": "string",
            "title": "Alertid"
          },
          "flagType": {
            "type": "string",
            "title": "Flagtype"
          },
          "severity": {
            "type": "string",
            "title": "Severity"
          },
          "cardId": {
            "type": "string",
            "title": "Cardid"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "transactionIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Transactionids"
          },
          "detectedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Detectedat"
          },
          "acknowledged": {
            "type": "boolean",
            "title": "Acknowledged"
          },
          "acknowledgedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledgedat"
          },
          "acknowledgedBy": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledgedby"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "amount": {
            "type": "string",
            "title": "Amount"
          }
        },
        "type": "object",
        "required": [
          "alertId",
          "flagType",
          "severity",
          "cardId",
          "cardNumber",
          "customerEmail",
          "transactionIds",
          "detectedAt",
          "acknowledged",
          "amount"
        ],
        "title": "AMLAlertResponse"
      },
      "AMLReportResponse": {
        "properties": {
          "reportId": {
            "type": "string",
            "title": "Reportid"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Generatedat"
          },
          "alerts": {
            "items": {
              "$ref": "#/components/schemas/AMLAlertResponse"
            },
            "type": "array",
            "title": "Alerts"
          },
          "highSeverityCount": {
            "type": "integer",
            "title": "Highseveritycount"
          },
          "mediumSeverityCount": {
            "type": "integer",
            "title": "Mediumseveritycount"
          },
          "lowSeverityCount": {
            "type": "integer",
            "title": "Lowseveritycount"
          },
          "unacknowledgedCount": {
            "type": "integer",
            "title": "Unacknowledgedcount"
          }
        },
        "type": "object",
        "required": [
          "reportId",
          "generatedAt",
          "alerts",
          "highSeverityCount",
          "mediumSeverityCount",
          "lowSeverityCount",
          "unacknowledgedCount"
        ],
        "title": "AMLReportResponse"
      },
      "AcknowledgeAlertRequest": {
        "properties": {
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "isFalsePositive": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isfalsepositive"
          },
          "suspendCard": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspendcard"
          },
          "suspendReason": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspendreason"
          },
          "suspendExpiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspendexpiresat"
          }
        },
        "type": "object",
        "title": "AcknowledgeAlertRequest"
      },
      "ActivateGiftCardRequest": {
        "properties": {
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerPhone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerphone"
          },
          "customerName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Customername"
          },
          "securityCode": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 6
              },
              {
                "type": "null"
              }
            ],
            "title": "Securitycode",
            "description": "Security code required for customer self-activation"
          }
        },
        "type": "object",
        "title": "ActivateGiftCardRequest"
      },
      "AdoptionDataPoint": {
        "properties": {
          "label": {
            "type": "string",
            "title": "Label"
          },
          "value": {
            "type": "integer",
            "title": "Value"
          },
          "secondaryValue": {
            "type": "integer",
            "title": "Secondaryvalue"
          }
        },
        "type": "object",
        "required": [
          "label",
          "value",
          "secondaryValue"
        ],
        "title": "AdoptionDataPoint"
      },
      "AnalyticsExportRequest": {
        "properties": {
          "format": {
            "type": "string",
            "pattern": "^(csv|excel|json|pdf)$",
            "title": "Format",
            "default": "csv"
          },
          "period": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(7d|30d|90d|12m|custom)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period"
          },
          "from": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From"
          },
          "to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To"
          },
          "metrics": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Metrics"
          },
          "includePrivacyNotice": {
            "type": "boolean",
            "title": "Includeprivacynotice",
            "default": false
          }
        },
        "type": "object",
        "title": "AnalyticsExportRequest"
      },
      "AnomalyAlertSeverity": {
        "type": "string",
        "enum": [
          "warning",
          "critical"
        ],
        "title": "AnomalyAlertSeverity"
      },
      "AnomalyAlertStatus": {
        "type": "string",
        "enum": [
          "open",
          "acknowledged",
          "resolved"
        ],
        "title": "AnomalyAlertStatus"
      },
      "AnomalyAlertType": {
        "type": "string",
        "enum": [
          "VOLUME_SPIKE",
          "ERROR_RATE",
          "AUTH_FAILURE_SPIKE"
        ],
        "title": "AnomalyAlertType"
      },
      "AuditLogPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AuditLogResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "title": "Page"
          },
          "pages": {
            "type": "integer",
            "title": "Pages"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "pages",
          "limit"
        ],
        "title": "AuditLogPage"
      },
      "AuditLogResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "action": {
            "type": "string",
            "title": "Action"
          },
          "resourceType": {
            "type": "string",
            "title": "Resourcetype"
          },
          "resourceId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resourceid"
          },
          "actorId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actorid"
          },
          "actorType": {
            "type": "string",
            "title": "Actortype"
          },
          "subjectId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subjectid"
          },
          "merchantId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantid"
          },
          "ipAddress": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ipaddress"
          },
          "userAgent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Useragent"
          },
          "requestId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requestid"
          },
          "details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Details"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "title": "Timestamp"
          },
          "actorName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actorname"
          },
          "subjectName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subjectname"
          },
          "merchantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantname"
          },
          "resourceName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resourcename"
          }
        },
        "type": "object",
        "required": [
          "id",
          "action",
          "resourceType",
          "actorType",
          "timestamp"
        ],
        "title": "AuditLogResponse"
      },
      "BalanceCheckRequest": {
        "properties": {
          "cardNumber": {
            "type": "string",
            "maxLength": 20,
            "title": "Cardnumber"
          },
          "securityCode": {
            "type": "string",
            "maxLength": 6,
            "title": "Securitycode"
          },
          "captchaToken": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4096
              },
              {
                "type": "null"
              }
            ],
            "title": "Captchatoken"
          }
        },
        "type": "object",
        "required": [
          "cardNumber",
          "securityCode"
        ],
        "title": "BalanceCheckRequest"
      },
      "BalanceCheckResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "programId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "lastFourDigits": {
            "type": "string",
            "title": "Lastfourdigits"
          },
          "balance": {
            "type": "string",
            "title": "Balance"
          },
          "status": {
            "$ref": "#/components/schemas/GiftCardStatus"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          }
        },
        "type": "object",
        "required": [
          "id",
          "programId",
          "cardNumber",
          "lastFourDigits",
          "balance",
          "status",
          "expiresAt",
          "isActive"
        ],
        "title": "BalanceCheckResponse"
      },
      "BasicProgramRead": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "shareUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Shareurl",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "shareUrl"
        ],
        "title": "BasicProgramRead"
      },
      "BlockIPRequest": {
        "properties": {
          "ipAddress": {
            "type": "string",
            "title": "Ipaddress"
          },
          "reason": {
            "type": "string",
            "title": "Reason",
            "default": "Manual block"
          },
          "isPermanent": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ispermanent"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          },
          "cidrRange": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cidrrange"
          }
        },
        "type": "object",
        "required": [
          "ipAddress"
        ],
        "title": "BlockIPRequest"
      },
      "Body_change_loyalty_program_pass_type_v2_loyalty_programs__programId__passtype_put": {
        "properties": {
          "passType": {
            "type": "string",
            "title": "Passtype"
          }
        },
        "type": "object",
        "required": [
          "passType"
        ],
        "title": "Body_change_loyalty_program_pass_type_v2_loyalty_programs__programId__passtype_put"
      },
      "Body_create_or_update_image_of_pass_template_of_type_and_resolution_v2_templates__templateId__images__type___resolution__post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_create_or_update_image_of_pass_template_of_type_and_resolution_v2_templates__templateId__images__type___resolution__post"
      },
      "Body_create_or_update_loyalty_program_offer_card_image_v2_loyalty_programs__programId__offers__offerId__card_images__type__post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_create_or_update_loyalty_program_offer_card_image_v2_loyalty_programs__programId__offers__offerId__card_images__type__post"
      },
      "Body_create_or_update_loyalty_program_voucher_card_image_v2_loyalty_programs__programId__vouchers__voucherId__card_images__type__post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_create_or_update_loyalty_program_voucher_card_image_v2_loyalty_programs__programId__vouchers__voucherId__card_images__type__post"
      },
      "Body_create_update_pass_images_type_resolution_v2_passes__passTypeIdentifier___serialNumber__images__type___resolution__post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_create_update_pass_images_type_resolution_v2_passes__passTypeIdentifier___serialNumber__images__type___resolution__post"
      },
      "Body_post_loyalty_program_customer_push_v2_loyalty_programs__programId__customers__customerId__push_post": {
        "properties": {
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          }
        },
        "type": "object",
        "title": "Body_post_loyalty_program_customer_push_v2_loyalty_programs__programId__customers__customerId__push_post"
      },
      "Body_publish_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__issue_post": {
        "properties": {
          "email": {
            "type": "string",
            "title": "Email"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "Body_publish_loyalty_program_voucher_v2_loyalty_programs__programId__vouchers__voucherId__issue_post"
      },
      "Body_send_pass_to_email_v2_passes__passTypeIdentifier___serialNumber__email_post": {
        "properties": {
          "email": {
            "type": "string",
            "title": "Email"
          },
          "subject": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "Body_send_pass_to_email_v2_passes__passTypeIdentifier___serialNumber__email_post"
      },
      "Body_update_branding_footer_image_v2_templates__templateId__branding_footer_put": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_update_branding_footer_image_v2_templates__templateId__branding_footer_put"
      },
      "Body_update_custom_price_v2_passes__passTypeIdentifier___serialNumber__price_put": {
        "properties": {
          "price": {
            "type": "number",
            "title": "Price"
          }
        },
        "type": "object",
        "required": [
          "price"
        ],
        "title": "Body_update_custom_price_v2_passes__passTypeIdentifier___serialNumber__price_put"
      },
      "Body_update_loyalty_program_card_image_v2_loyalty_programs__programId__card_images__type__post": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_update_loyalty_program_card_image_v2_loyalty_programs__programId__card_images__type__post"
      },
      "Body_update_loyalty_program_customer_points_v2_loyalty_programs__programId__customers__customerId__points_add_post": {
        "properties": {
          "points": {
            "type": "integer",
            "title": "Points"
          }
        },
        "type": "object",
        "required": [
          "points"
        ],
        "title": "Body_update_loyalty_program_customer_points_v2_loyalty_programs__programId__customers__customerId__points_add_post"
      },
      "Body_update_loyalty_program_icon_v2_loyalty_programs__programId__icon_put": {
        "properties": {
          "image": {
            "type": "string",
            "contentMediaType": "application/octet-stream",
            "title": "Image"
          },
          "crop": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Crop"
          }
        },
        "type": "object",
        "required": [
          "image"
        ],
        "title": "Body_update_loyalty_program_icon_v2_loyalty_programs__programId__icon_put"
      },
      "Body_update_pass_placeholder_v2_passes__passTypeIdentifier___serialNumber__values__placeholderName__put": {
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ],
            "title": "Value"
          }
        },
        "type": "object",
        "required": [
          "value"
        ],
        "title": "Body_update_pass_placeholder_v2_passes__passTypeIdentifier___serialNumber__values__placeholderName__put"
      },
      "Body_update_pass_status_v2_passes__passTypeIdentifier___serialNumber__status_put": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/PassStatus"
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "Body_update_pass_status_v2_passes__passTypeIdentifier___serialNumber__status_put"
      },
      "BreakageData": {
        "properties": {
          "value": {
            "type": "integer",
            "title": "Value"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "centerText": {
            "type": "string",
            "title": "Centertext"
          },
          "label": {
            "type": "string",
            "title": "Label"
          }
        },
        "type": "object",
        "required": [
          "value",
          "total",
          "centerText",
          "label"
        ],
        "title": "BreakageData"
      },
      "BulkIssuanceAsyncResponse": {
        "properties": {
          "taskId": {
            "type": "string",
            "title": "Taskid"
          },
          "status": {
            "type": "string",
            "title": "Status",
            "default": "pending"
          }
        },
        "type": "object",
        "required": [
          "taskId"
        ],
        "title": "BulkIssuanceAsyncResponse"
      },
      "BulkIssuanceSyncResponse": {
        "properties": {
          "issuedCount": {
            "type": "integer",
            "title": "Issuedcount"
          },
          "cards": {
            "items": {
              "$ref": "#/components/schemas/BulkIssuedCardSummary"
            },
            "type": "array",
            "title": "Cards"
          },
          "csvDownloadUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Csvdownloadurl"
          },
          "failedCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failedcount"
          }
        },
        "type": "object",
        "required": [
          "issuedCount",
          "cards"
        ],
        "title": "BulkIssuanceSyncResponse"
      },
      "BulkIssuanceTaskStatus": {
        "properties": {
          "taskId": {
            "type": "string",
            "title": "Taskid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "issuedCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issuedcount"
          },
          "cards": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BulkIssuedCardSummary"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cards"
          },
          "csvDownloadUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Csvdownloadurl"
          },
          "failedCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failedcount"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "completedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completedat"
          }
        },
        "type": "object",
        "required": [
          "taskId",
          "status"
        ],
        "title": "BulkIssuanceTaskStatus"
      },
      "BulkIssueGiftCardRequest": {
        "properties": {
          "initialValue": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 10000.0,
                "minimum": 0.01
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Initialvalue"
          },
          "isPhysical": {
            "type": "boolean",
            "title": "Isphysical",
            "default": false
          },
          "designTemplate": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Designtemplate"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          },
          "count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Count"
          },
          "recipients": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BulkIssueRecipient"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recipients"
          }
        },
        "type": "object",
        "required": [
          "initialValue"
        ],
        "title": "BulkIssueGiftCardRequest"
      },
      "BulkIssueRecipient": {
        "properties": {
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerPhone": {
            "anyOf": [
              {
                "type": "string",
                "format": "phone"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerphone"
          },
          "customerName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Customername"
          },
          "senderName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Sendername"
          },
          "customMessage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Custommessage"
          }
        },
        "type": "object",
        "title": "BulkIssueRecipient"
      },
      "BulkIssuedCardSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "lastFourDigits": {
            "type": "string",
            "title": "Lastfourdigits"
          }
        },
        "type": "object",
        "required": [
          "id",
          "cardNumber",
          "lastFourDigits"
        ],
        "title": "BulkIssuedCardSummary"
      },
      "BusinessReportResponse": {
        "properties": {
          "totalCards": {
            "type": "integer",
            "title": "Totalcards"
          },
          "activeCards": {
            "type": "integer",
            "title": "Activecards"
          },
          "pendingCards": {
            "type": "integer",
            "title": "Pendingcards"
          },
          "depletedCards": {
            "type": "integer",
            "title": "Depletedcards"
          },
          "expiredCards": {
            "type": "integer",
            "title": "Expiredcards"
          },
          "voidedCards": {
            "type": "integer",
            "title": "Voidedcards"
          },
          "totalSold": {
            "type": "string",
            "title": "Totalsold"
          },
          "totalRedeemed": {
            "type": "string",
            "title": "Totalredeemed"
          },
          "totalBalance": {
            "type": "string",
            "title": "Totalbalance"
          },
          "cardsSoldThisMonth": {
            "type": "integer",
            "title": "Cardssoldthismonth"
          },
          "salesThisMonth": {
            "type": "string",
            "title": "Salesthismonth"
          }
        },
        "type": "object",
        "required": [
          "totalCards",
          "activeCards",
          "pendingCards",
          "depletedCards",
          "expiredCards",
          "voidedCards",
          "totalSold",
          "totalRedeemed",
          "totalBalance",
          "cardsSoldThisMonth",
          "salesThisMonth"
        ],
        "title": "BusinessReportResponse"
      },
      "ConsentInput": {
        "properties": {
          "consentType": {
            "$ref": "#/components/schemas/ConsentType"
          },
          "granted": {
            "type": "boolean",
            "title": "Granted"
          },
          "method": {
            "$ref": "#/components/schemas/ConsentMethod"
          }
        },
        "type": "object",
        "required": [
          "consentType",
          "granted",
          "method"
        ],
        "title": "ConsentInput",
        "description": "A single consent decision for one consent type."
      },
      "ConsentMethod": {
        "type": "string",
        "enum": [
          "checkbox",
          "api",
          "paper",
          "verbal",
          "pos_terminal",
          "migration"
        ],
        "title": "ConsentMethod"
      },
      "ConsentRecordResponse": {
        "properties": {
          "customerId": {
            "type": "string",
            "title": "Customerid"
          },
          "purposes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Purposes"
          },
          "consentedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Consentedat"
          },
          "ipAddress": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ipaddress"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updatedat"
          }
        },
        "type": "object",
        "required": [
          "customerId",
          "purposes",
          "consentedAt",
          "ipAddress",
          "expiresAt",
          "updatedAt"
        ],
        "title": "ConsentRecordResponse"
      },
      "ConsentRequest": {
        "properties": {
          "purposes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Purposes",
            "default": []
          },
          "ipAddress": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ipaddress"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerPhone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerphone"
          }
        },
        "type": "object",
        "title": "ConsentRequest"
      },
      "ConsentType": {
        "type": "string",
        "enum": [
          "marketing_email",
          "marketing_sms",
          "analytics",
          "data_sharing"
        ],
        "title": "ConsentType"
      },
      "ConsolidatableMerchantResponse": {
        "properties": {
          "merchantId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "merchantName": {
            "type": "string",
            "title": "Merchantname"
          },
          "cardCount": {
            "type": "integer",
            "title": "Cardcount"
          },
          "totalBalance": {
            "type": "string",
            "title": "Totalbalance"
          }
        },
        "type": "object",
        "required": [
          "merchantId",
          "merchantName",
          "cardCount",
          "totalBalance"
        ],
        "title": "ConsolidatableMerchantResponse"
      },
      "ConsolidateGiftCardsRequest": {
        "properties": {
          "cardNumbers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10,
            "minItems": 2,
            "title": "Cardnumbers"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Customername"
          },
          "senderName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Sendername"
          },
          "merchantId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "isPhysical": {
            "type": "boolean",
            "title": "Isphysical",
            "default": false
          },
          "designTemplate": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Designtemplate"
          },
          "customMessage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Custommessage"
          }
        },
        "type": "object",
        "required": [
          "cardNumbers",
          "merchantId"
        ],
        "title": "ConsolidateGiftCardsRequest"
      },
      "ConsolidateResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "newCard": {
            "$ref": "#/components/schemas/GiftCardResponse"
          },
          "voidedCards": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Voidedcards"
          },
          "totalConsolidatedAmount": {
            "type": "string",
            "title": "Totalconsolidatedamount"
          },
          "consolidationTransactions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Consolidationtransactions"
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          }
        },
        "type": "object",
        "required": [
          "success",
          "message",
          "newCard",
          "voidedCards",
          "totalConsolidatedAmount",
          "consolidationTransactions",
          "referenceId"
        ],
        "title": "ConsolidateResponse"
      },
      "CreateCustomerPayload": {
        "properties": {
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "format": "phone"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "points": {
            "type": "integer",
            "title": "Points",
            "default": 0
          },
          "referrerId": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PydanticObjectId"
              },
              {
                "type": "null"
              }
            ]
          },
          "customFields": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customfields"
          },
          "initialConsentGranted": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Initialconsentgranted"
          }
        },
        "type": "object",
        "title": "CreateCustomerPayload",
        "description": "The customer creation payload\n\nAttributes:\n    firstName (str | None, optional): The first name of the customer. Defaults to None\n    lastName (str | None, optional): The last name of the customer. Defaults to None\n    email (str | None, optional): The email address of the customer. Defaults to None\n    phone (str | None, optional): The E164 phone number of the customer. Defaults to None\n    customFields (Dict | None, optional): The values of the custom fields. Defaults to {}\n\n    referrerId (PydanticObjectId | None, optional): The ID of the referrer customer. Defaults to None"
      },
      "CreateFraudRuleRequest": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "type": "string",
            "title": "Description",
            "default": ""
          },
          "ruleType": {
            "$ref": "#/components/schemas/FraudRuleType"
          },
          "action": {
            "$ref": "#/components/schemas/FraudRuleAction",
            "default": "block"
          },
          "config": {
            "additionalProperties": true,
            "type": "object",
            "title": "Config"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          }
        },
        "type": "object",
        "required": [
          "name",
          "ruleType"
        ],
        "title": "CreateFraudRuleRequest"
      },
      "CreateGiftCardRequest": {
        "properties": {
          "initialValue": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 10000.0,
                "minimum": 0.01
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Initialvalue"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerPhone": {
            "anyOf": [
              {
                "type": "string",
                "format": "phone"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerphone"
          },
          "customerName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Customername"
          },
          "senderName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Sendername"
          },
          "merchantId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          },
          "isPhysical": {
            "type": "boolean",
            "title": "Isphysical",
            "default": false
          },
          "designTemplate": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Designtemplate"
          },
          "customMessage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Custommessage"
          },
          "deliverAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverat"
          }
        },
        "type": "object",
        "required": [
          "initialValue",
          "merchantId"
        ],
        "title": "CreateGiftCardRequest"
      },
      "CreateOfferPayload": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "startDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startdate"
          },
          "endDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enddate"
          },
          "autoClaim": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Autoclaim",
            "default": false
          },
          "autoClaimOverwrite": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Autoclaimoverwrite",
            "default": false
          },
          "notify": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notify"
          },
          "notifyMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notifymessage"
          },
          "pointsMin": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsmin"
          },
          "pointsMax": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsmax"
          },
          "pointsCost": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointscost"
          },
          "limitPerCustomer": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Limitpercustomer"
          },
          "availabilityCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Availabilitycount"
          },
          "value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OfferType"
              },
              {
                "type": "null"
              }
            ]
          },
          "categories": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Categories"
          },
          "products": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Products"
          },
          "priceRule": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OfferPriceRule"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CreateOfferPayload"
      },
      "CreatePassScannerPayload": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "$ref": "#/components/schemas/PassScannerType"
          },
          "fullAccess": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fullaccess"
          },
          "pin": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pin"
          },
          "allowedTemplates": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowedtemplates"
          }
        },
        "type": "object",
        "required": [
          "name",
          "type"
        ],
        "title": "CreatePassScannerPayload"
      },
      "CreateVoucherPayload": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "startDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startdate"
          },
          "endDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enddate"
          },
          "type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VoucherType"
              },
              {
                "type": "null"
              }
            ]
          },
          "expiresIn": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresin"
          },
          "limitPerCustomer": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Limitpercustomer"
          },
          "availabilityCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Availabilitycount"
          },
          "requireFields": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requirefields"
          },
          "issueBeforeBirthday": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Issuebeforebirthday"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountvalue"
          },
          "discountCurrency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountcurrency"
          },
          "discountType": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OfferType"
              },
              {
                "type": "null"
              }
            ]
          },
          "categories": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Categories"
          },
          "products": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Products"
          },
          "priceRule": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OfferPriceRule"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CreateVoucherPayload"
      },
      "CreateWebhookPayload": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2083,
            "minLength": 1,
            "format": "uri",
            "title": "Url"
          },
          "sharedSecret": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 8
              },
              {
                "type": "null"
              }
            ],
            "title": "Sharedsecret"
          },
          "allPassTemplates": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allpasstemplates"
          },
          "allowedTemplates": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowedtemplates"
          },
          "allEventTypes": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Alleventtypes"
          },
          "allowedEvents": {
            "anyOf": [
              {
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/WebhookEventType"
                    },
                    {
                      "type": "string"
                    }
                  ]
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowedevents"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "CreateWebhookPayload",
        "description": "The webhook creation payload\n\nAttributes:\n    url (str): The webhook URL\n    sharedSecret (str | None, optional): A random string to handshake to verify the URL and hmac the event payload data. Defaults to None\n    allowedTemplates (List[PydanticObjectId] | None, optional): A list ID of the allowed templates. Defaults to None\n    allowedEvents (List[WebhookEventType] | None, optional): A list of allowed webhook types. Defaults to None"
      },
      "CustomerIdentityResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "verified": {
            "type": "boolean",
            "title": "Verified"
          },
          "verifiedAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verifiedat"
          },
          "trustLevel": {
            "type": "string",
            "title": "Trustlevel"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "phone",
          "name",
          "verified",
          "verifiedAt",
          "trustLevel"
        ],
        "title": "CustomerIdentityResponse",
        "description": "Customer identity information returned after successful verification."
      },
      "CustomerReportResponse": {
        "properties": {
          "totalCards": {
            "type": "integer",
            "title": "Totalcards"
          },
          "activeCards": {
            "type": "integer",
            "title": "Activecards"
          },
          "expiringSoonCards": {
            "type": "integer",
            "title": "Expiringsooncards"
          },
          "totalSpent": {
            "type": "string",
            "title": "Totalspent"
          },
          "totalBalance": {
            "type": "string",
            "title": "Totalbalance"
          }
        },
        "type": "object",
        "required": [
          "totalCards",
          "activeCards",
          "expiringSoonCards",
          "totalSpent",
          "totalBalance"
        ],
        "title": "CustomerReportResponse"
      },
      "EscheatmentReportEntryResponse": {
        "properties": {
          "cardId": {
            "type": "string",
            "title": "Cardid"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "balance": {
            "type": "string",
            "title": "Balance"
          },
          "lastActivityDate": {
            "type": "string",
            "format": "date-time",
            "title": "Lastactivitydate"
          },
          "dormancyDays": {
            "type": "integer",
            "title": "Dormancydays"
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction"
          },
          "liabilityAmount": {
            "type": "string",
            "title": "Liabilityamount"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "merchantId": {
            "type": "string",
            "title": "Merchantid"
          }
        },
        "type": "object",
        "required": [
          "cardId",
          "cardNumber",
          "balance",
          "lastActivityDate",
          "dormancyDays",
          "jurisdiction",
          "liabilityAmount",
          "customerEmail",
          "merchantId"
        ],
        "title": "EscheatmentReportEntryResponse"
      },
      "EscheatmentReportResponse": {
        "properties": {
          "reportId": {
            "type": "string",
            "title": "Reportid"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Generatedat"
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction"
          },
          "dormancyThresholdDays": {
            "type": "integer",
            "title": "Dormancythresholddays"
          },
          "entries": {
            "items": {
              "$ref": "#/components/schemas/EscheatmentReportEntryResponse"
            },
            "type": "array",
            "title": "Entries"
          },
          "totalLiability": {
            "type": "string",
            "title": "Totalliability"
          },
          "entriesCount": {
            "type": "integer",
            "title": "Entriescount"
          }
        },
        "type": "object",
        "required": [
          "reportId",
          "generatedAt",
          "jurisdiction",
          "dormancyThresholdDays",
          "entries",
          "totalLiability",
          "entriesCount"
        ],
        "title": "EscheatmentReportResponse"
      },
      "ExpirationWarningReportResponse": {
        "properties": {
          "reportId": {
            "type": "string",
            "title": "Reportid"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Generatedat"
          },
          "warnings": {
            "items": {
              "$ref": "#/components/schemas/ExpirationWarningResponse"
            },
            "type": "array",
            "title": "Warnings"
          },
          "count30d": {
            "type": "integer",
            "title": "Count30D"
          },
          "count60d": {
            "type": "integer",
            "title": "Count60D"
          },
          "count90d": {
            "type": "integer",
            "title": "Count90D"
          }
        },
        "type": "object",
        "required": [
          "reportId",
          "generatedAt",
          "warnings",
          "count30d",
          "count60d",
          "count90d"
        ],
        "title": "ExpirationWarningReportResponse"
      },
      "ExpirationWarningResponse": {
        "properties": {
          "cardId": {
            "type": "string",
            "title": "Cardid"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customername"
          },
          "daysUntilExpiry": {
            "type": "integer",
            "title": "Daysuntilexpiry"
          },
          "warningLevel": {
            "type": "string",
            "title": "Warninglevel"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "balance": {
            "type": "string",
            "title": "Balance"
          }
        },
        "type": "object",
        "required": [
          "cardId",
          "cardNumber",
          "customerEmail",
          "customerName",
          "daysUntilExpiry",
          "warningLevel",
          "expiresAt",
          "balance"
        ],
        "title": "ExpirationWarningResponse"
      },
      "ExpiredCardProcessingRequest": {
        "properties": {
          "action": {
            "type": "string",
            "pattern": "^(extend|refund|void)$",
            "title": "Action"
          },
          "extensionDays": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 730.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Extensiondays"
          },
          "refundReference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Refundreference"
          }
        },
        "type": "object",
        "required": [
          "action"
        ],
        "title": "ExpiredCardProcessingRequest"
      },
      "ExpiredCardProcessingResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "cardId": {
            "type": "string",
            "title": "Cardid"
          },
          "action": {
            "type": "string",
            "title": "Action"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "newExpiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Newexpiresat"
          },
          "transactionId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transactionid"
          }
        },
        "type": "object",
        "required": [
          "success",
          "cardId",
          "action",
          "message"
        ],
        "title": "ExpiredCardProcessingResponse"
      },
      "ExportRequest": {
        "properties": {
          "format": {
            "type": "string",
            "title": "Format",
            "default": "csv"
          },
          "merchantId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantid"
          },
          "subjectId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subjectid"
          },
          "actorId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actorid"
          },
          "subjectName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subjectname"
          },
          "actorName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actorname"
          },
          "merchantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantname"
          },
          "actions": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actions"
          },
          "resourceTypes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resourcetypes"
          },
          "fromDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fromdate"
          },
          "toDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Todate"
          }
        },
        "type": "object",
        "title": "ExportRequest"
      },
      "ExportStatusResponse": {
        "properties": {
          "taskId": {
            "type": "string",
            "title": "Taskid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "downloadUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Downloadurl"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          }
        },
        "type": "object",
        "required": [
          "taskId",
          "status"
        ],
        "title": "ExportStatusResponse"
      },
      "FraudRuleAction": {
        "type": "string",
        "enum": [
          "block",
          "flag",
          "require_review"
        ],
        "title": "FraudRuleAction"
      },
      "FraudRuleType": {
        "type": "string",
        "enum": [
          "VELOCITY_LIMIT",
          "GEOGRAPHIC_RESTRICTION",
          "IP_BLOCK",
          "USER_AGENT_BLOCK",
          "TRANSACTION_LIMIT",
          "TIME_RESTRICTION",
          "CUSTOM"
        ],
        "title": "FraudRuleType"
      },
      "GDPRExportRequest": {
        "properties": {
          "customerId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerid"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "format": {
            "type": "string",
            "pattern": "^(json|csv)$",
            "title": "Format"
          }
        },
        "type": "object",
        "required": [
          "format"
        ],
        "title": "GDPRExportRequest"
      },
      "GDPRExportResponse": {
        "properties": {
          "exportId": {
            "type": "string",
            "title": "Exportid"
          },
          "downloadUrl": {
            "type": "string",
            "title": "Downloadurl"
          },
          "format": {
            "type": "string",
            "title": "Format"
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Requestedat"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "status": {
            "type": "string",
            "title": "Status"
          }
        },
        "type": "object",
        "required": [
          "exportId",
          "downloadUrl",
          "format",
          "requestedAt",
          "expiresAt",
          "status"
        ],
        "title": "GDPRExportResponse"
      },
      "GiftCardMerchantTheme": {
        "properties": {
          "presetId": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Presetid",
            "default": "eposn-default"
          },
          "primary": {
            "type": "string",
            "maxLength": 7,
            "title": "Primary",
            "default": "#15803d"
          },
          "primaryFg": {
            "type": "string",
            "maxLength": 7,
            "title": "Primaryfg",
            "default": "#ffffff"
          },
          "sidebarBg": {
            "type": "string",
            "maxLength": 7,
            "title": "Sidebarbg",
            "default": "#ffffff"
          },
          "sidebarText": {
            "type": "string",
            "maxLength": 7,
            "title": "Sidebartext",
            "default": "#4b5563"
          },
          "sidebarActiveBg": {
            "type": "string",
            "maxLength": 7,
            "title": "Sidebaractivebg",
            "default": "#f0fdf4"
          },
          "sidebarActiveText": {
            "type": "string",
            "maxLength": 7,
            "title": "Sidebaractivetext",
            "default": "#15803d"
          },
          "sidebarBadge": {
            "type": "string",
            "maxLength": 7,
            "title": "Sidebarbadge",
            "default": "#15803d"
          },
          "background": {
            "type": "string",
            "maxLength": 7,
            "title": "Background",
            "default": "#f9fafb"
          },
          "foreground": {
            "type": "string",
            "maxLength": 7,
            "title": "Foreground",
            "default": "#111827"
          },
          "surface": {
            "type": "string",
            "maxLength": 7,
            "title": "Surface",
            "default": "#ffffff"
          },
          "border": {
            "type": "string",
            "maxLength": 7,
            "title": "Border",
            "default": "#e5e7eb"
          },
          "muted": {
            "type": "string",
            "maxLength": 7,
            "title": "Muted",
            "default": "#6b7280"
          },
          "logoUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ],
            "title": "Logourl"
          },
          "logoAlt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Logoalt"
          },
          "fontFamily": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255,
                "pattern": "^[A-Za-z0-9 ,'\\\"._\\-]+$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fontfamily"
          },
          "borderRadius": {
            "$ref": "#/components/schemas/GiftCardMerchantThemeBorderRadius",
            "default": "lg"
          }
        },
        "type": "object",
        "title": "GiftCardMerchantTheme",
        "description": "Persisted merchant-facing theme configuration for the EPOSN portal."
      },
      "GiftCardMerchantThemeBorderRadius": {
        "type": "string",
        "enum": [
          "none",
          "sm",
          "md",
          "lg",
          "full"
        ],
        "title": "GiftCardMerchantThemeBorderRadius"
      },
      "GiftCardResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "balance": {
            "type": "string",
            "title": "Balance"
          },
          "initialValue": {
            "type": "string",
            "title": "Initialvalue"
          },
          "status": {
            "$ref": "#/components/schemas/GiftCardStatus"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updatedat"
          },
          "activatedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activatedat"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "suspendedReason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspendedreason"
          },
          "suspendedUntil": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspendeduntil"
          },
          "suspendedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspendedat"
          },
          "customerId": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PydanticObjectId"
              },
              {
                "type": "null"
              }
            ]
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerPhone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerphone"
          },
          "customerName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customername"
          },
          "senderName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sendername"
          },
          "merchantId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "merchantName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantname"
          },
          "isPhysical": {
            "type": "boolean",
            "title": "Isphysical"
          },
          "designTemplate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Designtemplate"
          },
          "customMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custommessage"
          },
          "lastFourDigits": {
            "type": "string",
            "title": "Lastfourdigits"
          },
          "programId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "deliverAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverat"
          },
          "delivered": {
            "type": "boolean",
            "title": "Delivered",
            "default": false
          },
          "card": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassCard"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "cardNumber",
          "balance",
          "initialValue",
          "status",
          "createdAt",
          "updatedAt",
          "activatedAt",
          "expiresAt",
          "suspendedReason",
          "suspendedUntil",
          "suspendedAt",
          "customerId",
          "customerEmail",
          "customerPhone",
          "customerName",
          "merchantId",
          "isPhysical",
          "designTemplate",
          "customMessage",
          "lastFourDigits",
          "programId",
          "card"
        ],
        "title": "GiftCardResponse"
      },
      "GiftCardStatus": {
        "type": "string",
        "enum": [
          "pending",
          "active",
          "suspended",
          "expired",
          "voided",
          "depleted"
        ],
        "title": "GiftCardStatus",
        "description": "Gift card status enumeration."
      },
      "GiftCardTransactionType": {
        "type": "string",
        "enum": [
          "PURCHASE",
          "ACTIVATION",
          "RELOAD",
          "REDEMPTION",
          "CONSOLIDATION",
          "VOID",
          "TRANSFER_OUT",
          "TRANSFER_IN",
          "OWNERSHIP_TRANSFER",
          "RESEND_CODE",
          "REFUND"
        ],
        "title": "GiftCardTransactionType",
        "description": "Gift card transaction type enumeration."
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "ImageObject": {
        "properties": {
          "key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Key"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          }
        },
        "type": "object",
        "title": "ImageObject"
      },
      "InitMerchantSessionRequest": {
        "properties": {
          "appToken": {
            "type": "string",
            "maxLength": 512,
            "minLength": 1,
            "title": "Apptoken"
          },
          "merchantId": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Merchantid",
            "description": "Platform-specific merchant/company identifier"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Human-readable merchant/company name"
          },
          "platform": {
            "$ref": "#/components/schemas/PlatformProvider",
            "default": "eposnow"
          },
          "locationId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationid",
            "description": "Platform-specific location identifier"
          },
          "locationName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationname"
          },
          "programId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Programid",
            "description": "Linked LoyaltyDog programme ID (per location)"
          },
          "userId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Userid",
            "description": "Optional LoyaltyDog User ID to link/onboard this merchant"
          },
          "role": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Role",
            "description": "Role of the merchant"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid",
            "description": "Platform-specific cashier identifier"
          },
          "terminalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Terminalid",
            "description": "Platform-specific terminal identifier"
          }
        },
        "type": "object",
        "required": [
          "appToken",
          "merchantId"
        ],
        "title": "InitMerchantSessionRequest",
        "description": "Payload sent by eposn-giftcards after resolving a platform token.\n\nFields are intentionally generic so that EPOS Now, Shopify, and future\nplatforms all use the same endpoint."
      },
      "LogoutRequest": {
        "properties": {
          "sessionToken": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Sessiontoken",
            "description": "Session token to invalidate"
          }
        },
        "type": "object",
        "required": [
          "sessionToken"
        ],
        "title": "LogoutRequest",
        "description": "Request to logout (invalidate a session)."
      },
      "LogoutResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "success"
        ],
        "title": "LogoutResponse"
      },
      "MerchantCardStats": {
        "properties": {
          "merchantId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "merchantName": {
            "type": "string",
            "title": "Merchantname"
          },
          "cardCount": {
            "type": "integer",
            "title": "Cardcount"
          },
          "transactionVolume": {
            "type": "string",
            "title": "Transactionvolume"
          }
        },
        "type": "object",
        "required": [
          "merchantId",
          "merchantName",
          "cardCount",
          "transactionVolume"
        ],
        "title": "MerchantCardStats"
      },
      "MerchantLocationResponse": {
        "properties": {
          "locationId": {
            "type": "string",
            "title": "Locationid"
          },
          "locationName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationname"
          },
          "lastSeenAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastseenat"
          },
          "programId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Programid"
          }
        },
        "type": "object",
        "required": [
          "locationId",
          "locationName",
          "lastSeenAt",
          "programId"
        ],
        "title": "MerchantLocationResponse"
      },
      "MerchantSessionResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "merchantId": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PydanticObjectId"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "platform": {
            "type": "string",
            "title": "Platform"
          },
          "programId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Programid"
          },
          "active": {
            "type": "boolean",
            "title": "Active"
          },
          "locationId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationid"
          },
          "locationName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationname"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/MerchantLocationResponse"
            },
            "type": "array",
            "title": "Locations"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid"
          },
          "terminalId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Terminalid"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          },
          "sessionToken": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sessiontoken"
          }
        },
        "type": "object",
        "required": [
          "id",
          "merchantId",
          "name",
          "platform",
          "programId",
          "active",
          "locationId",
          "locationName",
          "locations"
        ],
        "title": "MerchantSessionResponse",
        "description": "Returned after a successful merchant session init or validation.\n\nContains everything needed to populate the eposn-giftcards session\nwithout an additional core_api round-trip."
      },
      "MerchantThemeResponse": {
        "properties": {
          "theme": {
            "$ref": "#/components/schemas/GiftCardMerchantTheme"
          }
        },
        "type": "object",
        "required": [
          "theme"
        ],
        "title": "MerchantThemeResponse"
      },
      "NetworkOverviewResponse": {
        "properties": {
          "totalMerchants": {
            "type": "integer",
            "title": "Totalmerchants"
          },
          "totalCards": {
            "type": "integer",
            "title": "Totalcards"
          },
          "totalTransactionVolume": {
            "type": "string",
            "title": "Totaltransactionvolume"
          },
          "activeCards": {
            "type": "integer",
            "title": "Activecards"
          },
          "totalTransactions": {
            "type": "integer",
            "title": "Totaltransactions"
          },
          "merchantBreakdowns": {
            "items": {
              "$ref": "#/components/schemas/MerchantCardStats"
            },
            "type": "array",
            "title": "Merchantbreakdowns"
          },
          "salesGrowth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Salesgrowth"
          },
          "salesGrowthType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Salesgrowthtype"
          },
          "merchantGrowth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantgrowth"
          },
          "merchantGrowthType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantgrowthtype"
          },
          "cardGrowth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardgrowth"
          },
          "cardGrowthType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardgrowthtype"
          },
          "txGrowth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Txgrowth"
          },
          "txGrowthType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Txgrowthtype"
          },
          "adoptionData": {
            "items": {
              "$ref": "#/components/schemas/AdoptionDataPoint"
            },
            "type": "array",
            "title": "Adoptiondata"
          },
          "revenueData": {
            "items": {
              "$ref": "#/components/schemas/RevenueDataPoint"
            },
            "type": "array",
            "title": "Revenuedata"
          },
          "breakage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BreakageData"
              },
              {
                "type": "null"
              }
            ]
          },
          "txFeeRevenue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Txfeerevenue"
          },
          "ltvUplift": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ltvuplift"
          },
          "healthTxSuccessRate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Healthtxsuccessrate"
          },
          "healthFraudAlerts": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Healthfraudalerts"
          },
          "healthSupportTickets": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Healthsupporttickets"
          }
        },
        "type": "object",
        "required": [
          "totalMerchants",
          "totalCards",
          "totalTransactionVolume",
          "activeCards",
          "totalTransactions",
          "merchantBreakdowns"
        ],
        "title": "NetworkOverviewResponse"
      },
      "OfferPriceRule": {
        "type": "string",
        "enum": [
          "min",
          "max",
          "none"
        ],
        "title": "OfferPriceRule"
      },
      "OfferType": {
        "type": "string",
        "enum": [
          "fixed",
          "percent",
          "other"
        ],
        "title": "OfferType"
      },
      "PassBarcode": {
        "properties": {
          "format": {
            "$ref": "#/components/schemas/PassBarcodeFormat"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "messageEncoding": {
            "type": "string",
            "title": "Messageencoding",
            "default": "iso-8859-1"
          },
          "altText": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Alttext"
          },
          "verifier": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verifier"
          },
          "disabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disabled"
          }
        },
        "type": "object",
        "required": [
          "format",
          "message"
        ],
        "title": "PassBarcode"
      },
      "PassBarcodeFormat": {
        "type": "string",
        "enum": [
          "PKBarcodeFormatPDF417",
          "PKBarcodeFormatQR",
          "PKBarcodeFormatAztec",
          "PKBarcodeFormatCode128"
        ],
        "title": "PassBarcodeFormat",
        "description": "The pass barcodes have 2 fields, 'barcode' is legacy so limit it to the legacy formats, 'barcodes' supports all.\nLegacy formats: PDF417, QR, and AZTEC"
      },
      "PassBeacon": {
        "properties": {
          "proximityUUID": {
            "type": "string",
            "title": "Proximityuuid"
          },
          "major": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Major"
          },
          "minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minor"
          },
          "relevantText": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relevanttext"
          }
        },
        "type": "object",
        "required": [
          "proximityUUID"
        ],
        "title": "PassBeacon"
      },
      "PassCard": {
        "properties": {
          "serialNumber": {
            "type": "string",
            "title": "Serialnumber"
          },
          "passTypeIdentifier": {
            "type": "string",
            "title": "Passtypeidentifier"
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "format": "uri",
            "title": "Url"
          }
        },
        "type": "object",
        "required": [
          "serialNumber",
          "passTypeIdentifier",
          "url"
        ],
        "title": "PassCard",
        "description": "The customer card object\n\nAttributes:\n    serialNumber (str): The serial number of the customer pass\n    passTypeIdentifier (str): The pass type identifier of the customer pass\n    url (str): The shareable URL of the customer pass"
      },
      "PassDataDetectorType": {
        "type": "string",
        "enum": [
          "PKDataDetectorTypePhoneNumber",
          "PKDataDetectorTypeLink",
          "PKDataDetectorTypeAddress",
          "PKDataDetectorTypeCalendarEvent"
        ],
        "title": "PassDataDetectorType"
      },
      "PassDateStyle": {
        "type": "string",
        "enum": [
          "PKDateStyleNone",
          "PKDateStyleShort",
          "PKDateStyleMedium",
          "PKDateStyleLong",
          "PKDateStyleFull"
        ],
        "title": "PassDateStyle"
      },
      "PassField": {
        "properties": {
          "key": {
            "type": "string",
            "title": "Key"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ],
            "title": "Value"
          },
          "attributedValue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attributedvalue"
          },
          "changeMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Changemessage"
          },
          "textAlignment": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassTextAlignment"
              },
              {
                "type": "null"
              }
            ]
          },
          "dataDetectorTypes": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PassDataDetectorType"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Datadetectortypes"
          },
          "dateStyle": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassDateStyle"
              },
              {
                "type": "null"
              }
            ]
          },
          "timeStyle": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassDateStyle"
              },
              {
                "type": "null"
              }
            ]
          },
          "isRelative": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isrelative"
          },
          "ignoresTimeZone": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ignorestimezone"
          },
          "numberStyle": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassNumberStyle"
              },
              {
                "type": "null"
              }
            ]
          },
          "currencyCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currencycode"
          },
          "googleHideOnCard": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Googlehideoncard"
          },
          "googleHideOnBack": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Googlehideonback"
          },
          "googleFieldType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Googlefieldtype"
          },
          "googleUri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Googleuri"
          },
          "googleLabel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Googlelabel"
          },
          "googleValue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Googlevalue"
          }
        },
        "type": "object",
        "required": [
          "key",
          "value"
        ],
        "title": "PassField"
      },
      "PassImageResolution": {
        "type": "string",
        "enum": [
          "normal",
          "high",
          "ultra"
        ],
        "title": "PassImageResolution"
      },
      "PassImageType": {
        "type": "string",
        "enum": [
          "logo",
          "icon",
          "strip",
          "footer",
          "background",
          "thumbnail"
        ],
        "title": "PassImageType",
        "description": "Supported images\n    Boarding pass:  logo, icon, footer\n    Coupon:         logo, icon, strip\n    Event ticket:   logo, icon, strip, background, thumbnail\n                    If you specify a strip image, do not specify a background image or a thumbnail.\n    Generic:        logo, icon, thumbnail\n    Store card:     logo, icon, strip\n\nArgs:\n    StrEnum (_type_): _description_"
      },
      "PassInformation": {
        "properties": {
          "headerFields": {
            "items": {
              "$ref": "#/components/schemas/PassField"
            },
            "type": "array",
            "title": "Headerfields"
          },
          "primaryFields": {
            "items": {
              "$ref": "#/components/schemas/PassField"
            },
            "type": "array",
            "title": "Primaryfields"
          },
          "secondaryFields": {
            "items": {
              "$ref": "#/components/schemas/PassField"
            },
            "type": "array",
            "title": "Secondaryfields"
          },
          "backFields": {
            "items": {
              "$ref": "#/components/schemas/PassField"
            },
            "type": "array",
            "title": "Backfields"
          },
          "auxiliaryFields": {
            "items": {
              "$ref": "#/components/schemas/PassField"
            },
            "type": "array",
            "title": "Auxiliaryfields"
          },
          "transitType": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassTransitType"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "PassInformation"
      },
      "PassLocation": {
        "properties": {
          "latitude": {
            "type": "number",
            "title": "Latitude",
            "default": 0.0
          },
          "longitude": {
            "type": "number",
            "title": "Longitude",
            "default": 0.0
          },
          "altitude": {
            "type": "number",
            "title": "Altitude",
            "default": 0.0
          },
          "distance": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Distance"
          },
          "relevantText": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relevanttext"
          }
        },
        "type": "object",
        "title": "PassLocation"
      },
      "PassNumberStyle": {
        "type": "string",
        "enum": [
          "PKNumberStyleDecimal",
          "PKNumberStylePercent",
          "PKNumberStyleScientific",
          "PKNumberStyleSpellOut"
        ],
        "title": "PassNumberStyle"
      },
      "PassScannerType": {
        "type": "string",
        "enum": [
          "Browser",
          "PassVerifier",
          "CodeReadr",
          "None"
        ],
        "title": "PassScannerType"
      },
      "PassSharing": {
        "properties": {
          "method": {
            "$ref": "#/components/schemas/PassSharingMethod",
            "default": "PKPassSharingMethodDisabled"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text"
          }
        },
        "type": "object",
        "title": "PassSharing"
      },
      "PassSharingMethod": {
        "type": "string",
        "enum": [
          "PKPassSharingMethodURL",
          "PKPassSharingMethodDisabled"
        ],
        "title": "PassSharingMethod"
      },
      "PassStatus": {
        "type": "string",
        "enum": [
          "valid",
          "invalid",
          "redeemed",
          "expired",
          "unpaid",
          "locked",
          "incomplete"
        ],
        "title": "PassStatus"
      },
      "PassTextAlignment": {
        "type": "string",
        "enum": [
          "PKTextAlignmentLeft",
          "PKTextAlignmentCenter",
          "PKTextAlignmentRight",
          "PKTextAlignmentJustified",
          "PKTextAlignmentNatural"
        ],
        "title": "PassTextAlignment"
      },
      "PassTransitType": {
        "type": "string",
        "enum": [
          "PKTransitTypeAir",
          "PKTransitTypeTrain",
          "PKTransitTypeBus",
          "PKTransitTypeBoat",
          "PKTransitTypeGeneric"
        ],
        "title": "PassTransitType"
      },
      "PlatformProvider": {
        "type": "string",
        "enum": [
          "eposnow",
          "shopify",
          "clover",
          "wordpress"
        ],
        "title": "PlatformProvider"
      },
      "PydanticObjectId": {
        "type": "string",
        "maxLength": 24,
        "minLength": 24,
        "pattern": "^[0-9a-f]{24}$",
        "example": "5eb7cf5a86d9755df3a6c593"
      },
      "RecordConsentsPayload": {
        "properties": {
          "consents": {
            "items": {
              "$ref": "#/components/schemas/ConsentInput"
            },
            "type": "array",
            "minItems": 1,
            "title": "Consents"
          },
          "policyVersion": {
            "type": "string",
            "minLength": 1,
            "title": "Policyversion"
          }
        },
        "type": "object",
        "required": [
          "consents",
          "policyVersion"
        ],
        "title": "RecordConsentsPayload",
        "description": "Request body for POST /customers/{id}/consents.\n\nAttributes:\n    consents: One or more consent decisions to record.\n    policyVersion: Version of the policy document the customer is consenting to."
      },
      "RedeemGiftCardRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.01
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Amount"
          },
          "posTransactionId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Postransactionid"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid"
          },
          "terminalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Terminalid"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          }
        },
        "type": "object",
        "required": [
          "amount"
        ],
        "title": "RedeemGiftCardRequest"
      },
      "RedeemResponse": {
        "properties": {
          "transactionId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "giftCardId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "amountRedeemed": {
            "type": "string",
            "title": "Amountredeemed"
          },
          "remainingBalance": {
            "type": "string",
            "title": "Remainingbalance"
          },
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "transactionId",
          "giftCardId",
          "amountRedeemed",
          "remainingBalance",
          "success",
          "message"
        ],
        "title": "RedeemResponse"
      },
      "RefundGiftCardRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "posTransactionId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Postransactionid"
          }
        },
        "type": "object",
        "title": "RefundGiftCardRequest"
      },
      "RefundResponse": {
        "properties": {
          "transactionId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "giftCardId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "refundedAmount": {
            "type": "string",
            "title": "Refundedamount"
          },
          "remainingBalance": {
            "type": "string",
            "title": "Remainingbalance"
          },
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "transactionId",
          "giftCardId",
          "refundedAmount",
          "remainingBalance",
          "success",
          "message"
        ],
        "title": "RefundResponse"
      },
      "ReloadByCardNumberRequest": {
        "properties": {
          "cardNumber": {
            "type": "string",
            "maxLength": 20,
            "title": "Cardnumber"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 5000.0,
                "minimum": 0.01
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Amount"
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          }
        },
        "type": "object",
        "required": [
          "cardNumber",
          "amount"
        ],
        "title": "ReloadByCardNumberRequest"
      },
      "ReloadGiftCardRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 5000.0,
                "minimum": 0.01
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Amount"
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          }
        },
        "type": "object",
        "required": [
          "amount"
        ],
        "title": "ReloadGiftCardRequest"
      },
      "ResendSecurityCodeRequest": {
        "properties": {
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "customerPhone": {
            "anyOf": [
              {
                "type": "string",
                "format": "phone"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerphone"
          },
          "senderName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Sendername"
          },
          "customMessage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Custommessage"
          }
        },
        "type": "object",
        "title": "ResendSecurityCodeRequest"
      },
      "ReturningUserRestrictionType": {
        "type": "string",
        "enum": [
          "user_decides",
          "show_existing",
          "create_new"
        ],
        "title": "ReturningUserRestrictionType"
      },
      "RevenueDataPoint": {
        "properties": {
          "label": {
            "type": "string",
            "title": "Label"
          },
          "value": {
            "type": "integer",
            "title": "Value"
          }
        },
        "type": "object",
        "required": [
          "label",
          "value"
        ],
        "title": "RevenueDataPoint"
      },
      "RightToErasureRequest": {
        "properties": {
          "customerId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customerid"
          },
          "customerEmail": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customeremail"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          }
        },
        "type": "object",
        "title": "RightToErasureRequest"
      },
      "RightToErasureResponse": {
        "properties": {
          "requestId": {
            "type": "string",
            "title": "Requestid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "affectedCards": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Affectedcards"
          },
          "completedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completedat"
          },
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "requestId",
          "status",
          "affectedCards",
          "message"
        ],
        "title": "RightToErasureResponse"
      },
      "SaveMerchantSettingsRequest": {
        "properties": {
          "programId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Programid",
            "description": "LoyaltyDog programme ID to link to the active location"
          },
          "locationId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationid",
            "description": "Location to update; defaults to the first location if omitted"
          },
          "merchantId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Merchantid",
            "description": "User ID of the merchant"
          }
        },
        "type": "object",
        "title": "SaveMerchantSettingsRequest",
        "description": "Payload for saving per-location merchant settings."
      },
      "SaveMerchantThemeResponse": {
        "properties": {
          "theme": {
            "$ref": "#/components/schemas/GiftCardMerchantTheme"
          },
          "validation": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/ThemeValidationIssue"
              },
              "type": "array"
            },
            "type": "object",
            "title": "Validation"
          },
          "performance": {
            "$ref": "#/components/schemas/ThemePerformanceReport"
          }
        },
        "type": "object",
        "required": [
          "theme",
          "validation",
          "performance"
        ],
        "title": "SaveMerchantThemeResponse"
      },
      "ScheduleGiftCardDeliveryRequest": {
        "properties": {
          "deliverAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverat"
          }
        },
        "type": "object",
        "title": "ScheduleGiftCardDeliveryRequest"
      },
      "ScheduleReportRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "frequency": {
            "type": "string",
            "pattern": "^(daily|weekly|monthly)$",
            "title": "Frequency"
          },
          "dayOfWeek": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 6.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Dayofweek"
          },
          "dayOfMonth": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 28.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Dayofmonth"
          },
          "hourUtc": {
            "type": "integer",
            "maximum": 23.0,
            "minimum": 0.0,
            "title": "Hourutc",
            "default": 0
          },
          "format": {
            "type": "string",
            "pattern": "^(csv|excel|json|pdf)$",
            "title": "Format"
          },
          "recipients": {
            "items": {
              "type": "string",
              "format": "email"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "title": "Recipients"
          },
          "metrics": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Metrics"
          },
          "includePrivacyNotice": {
            "type": "boolean",
            "title": "Includeprivacynotice",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "name",
          "frequency",
          "format",
          "recipients"
        ],
        "title": "ScheduleReportRequest"
      },
      "SendOTPRequest": {
        "properties": {
          "target": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Target",
            "description": "Email address or phone number to send OTP to"
          }
        },
        "type": "object",
        "required": [
          "target"
        ],
        "title": "SendOTPRequest",
        "description": "Request to send an OTP to an email or phone number."
      },
      "SendOTPResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "otpType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Otptype"
          },
          "mockCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mockcode"
          }
        },
        "type": "object",
        "required": [
          "success"
        ],
        "title": "SendOTPResponse"
      },
      "SuspendGiftCardRequest": {
        "properties": {
          "reason": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Reason"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          }
        },
        "type": "object",
        "required": [
          "reason"
        ],
        "title": "SuspendGiftCardRequest"
      },
      "TemplateAction": {
        "properties": {
          "redeem": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Redeem"
          },
          "reactivate": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reactivate"
          },
          "updateFields": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Updatefields"
          }
        },
        "type": "object",
        "title": "TemplateAction"
      },
      "TemplateBranding": {
        "properties": {
          "titleText": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Titletext"
          },
          "headerText": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Headertext"
          },
          "bodyTextColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bodytextcolor"
          },
          "footerTextColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Footertextcolor"
          },
          "footerBackgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Footerbackgroundcolor"
          },
          "footerImage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ImageObject"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "TemplateBranding"
      },
      "TemplatePass": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "default": ""
          },
          "suppressStripShine": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suppressstripshine"
          },
          "sharing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassSharing"
              },
              {
                "type": "null"
              }
            ]
          },
          "appLaunchURL": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Applaunchurl"
          },
          "associatedApps": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Associatedapps"
          },
          "associatedStoreIdentifiers": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Associatedstoreidentifiers"
          },
          "associatedPlayIdentifiers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Associatedplayidentifiers"
          },
          "beacons": {
            "items": {
              "$ref": "#/components/schemas/PassBeacon"
            },
            "type": "array",
            "title": "Beacons"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/PassLocation"
            },
            "type": "array",
            "title": "Locations"
          },
          "barcodes": {
            "items": {
              "$ref": "#/components/schemas/PassBarcode"
            },
            "type": "array",
            "title": "Barcodes"
          },
          "barcode": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassBarcode"
              },
              {
                "type": "null"
              }
            ]
          },
          "labelColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Labelcolor"
          },
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundcolor"
          },
          "foregroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Foregroundcolor"
          },
          "logoText": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logotext"
          },
          "relevantDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relevantdate"
          },
          "expirationDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expirationdate"
          },
          "voided": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voided"
          },
          "userInfo": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Userinfo"
          },
          "generic": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassInformation"
              },
              {
                "type": "null"
              }
            ]
          },
          "coupon": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassInformation"
              },
              {
                "type": "null"
              }
            ]
          },
          "storeCard": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassInformation"
              },
              {
                "type": "null"
              }
            ]
          },
          "eventTicket": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassInformation"
              },
              {
                "type": "null"
              }
            ]
          },
          "boardingPass": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassInformation"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "TemplatePass"
      },
      "TemplatePayment": {
        "properties": {
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "provider": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplatePaymentProvider"
              },
              {
                "type": "null"
              }
            ]
          },
          "providerSettings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplatePaymentSettings"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "TemplatePayment"
      },
      "TemplatePaymentProvider": {
        "type": "string",
        "enum": [
          "PayPalNVP",
          "Stripe",
          "PAYMILL"
        ],
        "title": "TemplatePaymentProvider"
      },
      "TemplatePaymentSettings": {
        "properties": {
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "password": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "signature": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signature"
          },
          "sandbox": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sandbox"
          },
          "itemName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Itemname"
          },
          "publishableKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publishablekey"
          },
          "secretKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secretkey"
          },
          "publicKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Publickey"
          },
          "privateKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Privatekey"
          }
        },
        "type": "object",
        "title": "TemplatePaymentSettings"
      },
      "TemplatePlaceholder": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "$ref": "#/components/schemas/TemplatePlaceholderType",
            "default": "text"
          },
          "displayName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Displayname"
          },
          "defaultValue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Defaultvalue"
          },
          "points": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Points"
          },
          "options": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Options"
          },
          "required": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "TemplatePlaceholder"
      },
      "TemplatePlaceholderType": {
        "type": "string",
        "enum": [
          "text",
          "email",
          "number",
          "date",
          "selection",
          "json"
        ],
        "title": "TemplatePlaceholderType"
      },
      "TemplateRestrictions": {
        "properties": {
          "quantityRestriction": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quantityrestriction"
          },
          "redemptionRestriction": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Redemptionrestriction"
          },
          "passwordProtection": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passwordprotection"
          },
          "sharingRestriction": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sharingrestriction"
          },
          "dateRestriction": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Daterestriction"
          },
          "returningUserRestriction": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReturningUserRestrictionType"
              },
              {
                "type": "null"
              }
            ]
          },
          "passSharingMethod": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateSharingMethod"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "TemplateRestrictions"
      },
      "TemplateSharingMethod": {
        "type": "string",
        "enum": [
          "pass",
          "url",
          "disabled"
        ],
        "title": "TemplateSharingMethod"
      },
      "TemplateStripImage": {
        "properties": {
          "generator": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateStripImageGenerator"
              },
              {
                "type": "null"
              }
            ]
          },
          "placeholder": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Placeholder"
          },
          "stamps": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stamps"
          },
          "backgroundColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backgroundcolor"
          },
          "backgroundImage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ImageObject"
              },
              {
                "type": "null"
              }
            ]
          },
          "stampedColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stampedcolor"
          },
          "stampedImage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ImageObject"
              },
              {
                "type": "null"
              }
            ]
          },
          "unstampedColor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unstampedcolor"
          },
          "unstampedImage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ImageObject"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "TemplateStripImage"
      },
      "TemplateStripImageGenerator": {
        "type": "string",
        "enum": [
          "stamp"
        ],
        "title": "TemplateStripImageGenerator"
      },
      "TemplateTranslation": {
        "properties": {
          "baseLanguage": {
            "type": "string",
            "title": "Baselanguage",
            "default": "en"
          },
          "strings": {
            "additionalProperties": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "type": "object",
            "title": "Strings"
          }
        },
        "type": "object",
        "title": "TemplateTranslation"
      },
      "ThemePerformanceIssue": {
        "properties": {
          "severity": {
            "type": "string",
            "title": "Severity"
          },
          "code": {
            "type": "string",
            "title": "Code"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "estimatedMs": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimatedms"
          }
        },
        "type": "object",
        "required": [
          "severity",
          "code",
          "message"
        ],
        "title": "ThemePerformanceIssue"
      },
      "ThemePerformanceReport": {
        "properties": {
          "cssVarChanges": {
            "type": "integer",
            "title": "Cssvarchanges"
          },
          "hasCustomFont": {
            "type": "boolean",
            "title": "Hascustomfont"
          },
          "hasLargeLogo": {
            "type": "boolean",
            "title": "Haslargelogo"
          },
          "issues": {
            "items": {
              "$ref": "#/components/schemas/ThemePerformanceIssue"
            },
            "type": "array",
            "title": "Issues"
          },
          "score": {
            "type": "integer",
            "title": "Score"
          }
        },
        "type": "object",
        "required": [
          "cssVarChanges",
          "hasCustomFont",
          "hasLargeLogo",
          "issues",
          "score"
        ],
        "title": "ThemePerformanceReport"
      },
      "ThemeValidationIssue": {
        "properties": {
          "field": {
            "type": "string",
            "title": "Field"
          },
          "severity": {
            "type": "string",
            "title": "Severity"
          },
          "code": {
            "type": "string",
            "title": "Code"
          },
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "field",
          "severity",
          "code",
          "message"
        ],
        "title": "ThemeValidationIssue"
      },
      "TransactionResponse": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "transactionType": {
            "$ref": "#/components/schemas/GiftCardTransactionType"
          },
          "amount": {
            "type": "string",
            "title": "Amount"
          },
          "balanceBefore": {
            "type": "string",
            "title": "Balancebefore"
          },
          "balanceAfter": {
            "type": "string",
            "title": "Balanceafter"
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "processedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Processedat"
          },
          "merchantId": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "posTransactionId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Postransactionid"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid"
          },
          "terminalId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Terminalid"
          }
        },
        "type": "object",
        "required": [
          "id",
          "transactionType",
          "amount",
          "balanceBefore",
          "balanceAfter",
          "referenceId",
          "description",
          "createdAt",
          "processedAt",
          "merchantId",
          "posTransactionId",
          "cashierId",
          "terminalId"
        ],
        "title": "TransactionResponse"
      },
      "TransferBalanceDestCard": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "newBalance": {
            "type": "string",
            "title": "Newbalance"
          }
        },
        "type": "object",
        "required": [
          "id",
          "cardNumber",
          "newBalance"
        ],
        "title": "TransferBalanceDestCard"
      },
      "TransferBalanceRequest": {
        "properties": {
          "securityCode": {
            "type": "string",
            "maxLength": 6,
            "minLength": 6,
            "title": "Securitycode"
          },
          "destinationCardNumber": {
            "type": "string",
            "maxLength": 20,
            "title": "Destinationcardnumber"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 5000.0,
                "minimum": 0.01
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Amount"
          },
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          }
        },
        "type": "object",
        "required": [
          "securityCode",
          "destinationCardNumber",
          "amount"
        ],
        "title": "TransferBalanceRequest"
      },
      "TransferBalanceResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "transferId": {
            "type": "string",
            "title": "Transferid"
          },
          "sourceCard": {
            "$ref": "#/components/schemas/TransferBalanceSourceCard"
          },
          "destinationCard": {
            "$ref": "#/components/schemas/TransferBalanceDestCard"
          },
          "amountTransferred": {
            "type": "string",
            "title": "Amounttransferred"
          }
        },
        "type": "object",
        "required": [
          "success",
          "message",
          "transferId",
          "sourceCard",
          "destinationCard",
          "amountTransferred"
        ],
        "title": "TransferBalanceResponse"
      },
      "TransferBalanceSourceCard": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "remainingBalance": {
            "type": "string",
            "title": "Remainingbalance"
          },
          "status": {
            "$ref": "#/components/schemas/GiftCardStatus"
          }
        },
        "type": "object",
        "required": [
          "id",
          "cardNumber",
          "remainingBalance",
          "status"
        ],
        "title": "TransferBalanceSourceCard"
      },
      "TransferOwnershipRequest": {
        "properties": {
          "newOwnerName": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Newownername"
          },
          "newOwnerEmail": {
            "type": "string",
            "format": "email",
            "title": "Newowneremail"
          },
          "newCustomerId": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PydanticObjectId"
              },
              {
                "type": "null"
              }
            ]
          },
          "referenceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Referenceid"
          }
        },
        "type": "object",
        "required": [
          "newOwnerName",
          "newOwnerEmail"
        ],
        "title": "TransferOwnershipRequest"
      },
      "UnsuspendGiftCardRequest": {
        "properties": {},
        "type": "object",
        "title": "UnsuspendGiftCardRequest"
      },
      "UpdateCustomerPayload": {
        "properties": {
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "format": "phone"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "points": {
            "type": "integer",
            "title": "Points",
            "default": 0
          },
          "currentMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currentmessage"
          },
          "customFields": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customfields"
          }
        },
        "type": "object",
        "title": "UpdateCustomerPayload",
        "description": "The customer updating payload\n\nAttributes:\n    firstName (str | None, optional): The first name of the customer. Defaults to None\n    lastName (str | None, optional): The last name of the customer. Defaults to None\n    email (str | None, optional): The email address of the customer. Defaults to None\n    phone (str | None, optional): The E164 phone number of the customer. Defaults to None\n    customFields (Dict | None, optional): The values of the custom fields. Defaults to None"
      },
      "UpdateFraudRuleRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "action": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FraudRuleAction"
              },
              {
                "type": "null"
              }
            ]
          },
          "isActive": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Isactive"
          },
          "config": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Config"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          }
        },
        "type": "object",
        "title": "UpdateFraudRuleRequest"
      },
      "UpdatePassScannerPayload": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassScannerType"
              },
              {
                "type": "null"
              }
            ]
          },
          "fullAccess": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fullaccess"
          },
          "pin": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pin"
          },
          "allowedTemplates": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PydanticObjectId"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowedtemplates"
          }
        },
        "type": "object",
        "title": "UpdatePassScannerPayload"
      },
      "UpdateProgramPayload": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "website": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2083,
                "minLength": 1,
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "terms": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Terms"
          },
          "pointsAddEmail": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsaddemail"
          },
          "pointsAddPhone": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsaddphone"
          },
          "pointsInstallPass": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsinstallpass"
          },
          "pointsScanPass": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsscanpass"
          },
          "dynamicScanPoints": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dynamicscanpoints"
          },
          "pointsReferral": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pointsreferral"
          },
          "referralRequiredPoints": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Referralrequiredpoints"
          },
          "scannerType": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PassScannerType"
              },
              {
                "type": "null"
              }
            ]
          },
          "customPointsChangeMessage": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custompointschangemessage"
          },
          "disableCustomPointsChangeMessage": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disablecustompointschangemessage"
          },
          "customPointName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custompointname"
          },
          "customPointsName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Custompointsname"
          },
          "customFields": {
            "items": {
              "$ref": "#/components/schemas/TemplatePlaceholder"
            },
            "type": "array",
            "title": "Customfields",
            "default": []
          },
          "requiredFields": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Requiredfields",
            "default": []
          },
          "retention_period_days": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 365.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Retention Period Days",
            "description": "Days to retain deleted data (0-365)"
          }
        },
        "type": "object",
        "title": "UpdateProgramPayload"
      },
      "UpdateTemplatePayload": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "passType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passtype"
          },
          "description": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplatePass"
              },
              {
                "type": "null"
              }
            ]
          },
          "disablePush": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disablepush"
          },
          "placeholders": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/TemplatePlaceholder"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Placeholders"
          },
          "branding": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateBranding"
              },
              {
                "type": "null"
              }
            ]
          },
          "payment": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplatePayment"
              },
              {
                "type": "null"
              }
            ]
          },
          "restrictions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateRestrictions"
              },
              {
                "type": "null"
              }
            ]
          },
          "actions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateAction"
              },
              {
                "type": "null"
              }
            ]
          },
          "translations": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateTranslation"
              },
              {
                "type": "null"
              }
            ]
          },
          "allowPassImages": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PassImageType"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowpassimages"
          },
          "stripImage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TemplateStripImage"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "UpdateTemplatePayload"
      },
      "UserRead": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/PydanticObjectId"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "email": {
            "type": "string",
            "format": "email",
            "title": "Email"
          },
          "emailVerified": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Emailverified"
          },
          "active": {
            "type": "boolean",
            "title": "Active",
            "default": true
          },
          "admin": {
            "type": "boolean",
            "title": "Admin",
            "default": false
          },
          "image": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email"
        ],
        "title": "UserRead"
      },
      "ValidateMerchantSessionRequest": {
        "properties": {
          "sessionToken": {
            "type": "string",
            "title": "Sessiontoken"
          }
        },
        "type": "object",
        "required": [
          "sessionToken"
        ],
        "title": "ValidateMerchantSessionRequest"
      },
      "ValidateMerchantSessionResponse": {
        "properties": {
          "valid": {
            "type": "boolean",
            "title": "Valid"
          },
          "merchant": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MerchantSessionResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "valid"
        ],
        "title": "ValidateMerchantSessionResponse"
      },
      "ValidateReportRequest": {
        "properties": {
          "reportType": {
            "type": "string",
            "maxLength": 50,
            "title": "Reporttype",
            "default": "analytics"
          },
          "from": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From"
          },
          "to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To"
          }
        },
        "type": "object",
        "title": "ValidateReportRequest"
      },
      "ValidateSessionRequest": {
        "properties": {
          "sessionToken": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Sessiontoken",
            "description": "Session token to validate"
          }
        },
        "type": "object",
        "required": [
          "sessionToken"
        ],
        "title": "ValidateSessionRequest",
        "description": "Request to validate a session token."
      },
      "ValidateSessionResponse": {
        "properties": {
          "valid": {
            "type": "boolean",
            "title": "Valid"
          },
          "identity": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CustomerIdentityResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "valid"
        ],
        "title": "ValidateSessionResponse"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "VerifyOTPRequest": {
        "properties": {
          "target": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Target",
            "description": "Email address or phone number the OTP was sent to"
          },
          "code": {
            "type": "string",
            "maxLength": 6,
            "minLength": 6,
            "pattern": "^\\d{6}$",
            "title": "Code",
            "description": "6-digit OTP code"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 255
              },
              {
                "type": "null"
              }
            ],
            "title": "Name",
            "description": "Customer name (used during registration)"
          }
        },
        "type": "object",
        "required": [
          "target",
          "code"
        ],
        "title": "VerifyOTPRequest",
        "description": "Request to verify an OTP code."
      },
      "VerifyOTPResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "verifiedTarget": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verifiedtarget"
          },
          "otpType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Otptype"
          },
          "sessionToken": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sessiontoken"
          },
          "identity": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CustomerIdentityResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "success"
        ],
        "title": "VerifyOTPResponse"
      },
      "VoidGiftCardRequest": {
        "properties": {
          "reason": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Reason"
          },
          "refundReference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Refundreference"
          }
        },
        "type": "object",
        "required": [
          "reason"
        ],
        "title": "VoidGiftCardRequest"
      },
      "VoucherType": {
        "type": "string",
        "enum": [
          "welcome",
          "birthday",
          "other"
        ],
        "title": "VoucherType"
      },
      "WebhookEventType": {
        "type": "string",
        "enum": [
          "pass.created",
          "pass.updated",
          "pass.downloaded",
          "pass.installed",
          "pass.deleted",
          "registration.created",
          "registration.deleted",
          "scan.performed",
          "webhook.verify",
          "transaction.completed",
          "loyalty.activity.performed",
          "loyalty.activity.reward.redeemed",
          "loyalty.activity.points.redeemed",
          "loyalty.activity.offer.received",
          "loyalty.activity.offer.redeemed",
          "loyalty.activity.offer.expired",
          "loyalty.activity.voucher.received",
          "loyalty.activity.voucher.redeemed",
          "loyalty.activity.voucher.expired",
          "loyalty.activity.points.changed",
          "loyalty.activity.email.added",
          "loyalty.activity.phone.added",
          "loyalty.activity.customer.referred",
          "loyalty.activity.custom.field.added",
          "loyalty.activity.card.installed",
          "loyalty.activity.card.scanned",
          "loyalty.customer.created",
          "loyalty.customer.updated",
          "loyalty.customer.deleted"
        ],
        "title": "WebhookEventType"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "JWT access token obtained from POST /v2/token."
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ]
}
