{
  "openapi": "3.1.0",
  "info": {
    "title": "12K Loyalty Public API",
    "version": "0.1.0",
    "description": "Public tenant API, unauthenticated card downloads, and 40 BonusPlus-compatible operations (39 indexed plus the separately documented gift-card lookup). Internal portal and platform-admin routes are intentionally excluded."
  },
  "paths": {
    "/health": {
      "get": {
        "summary": "Проверить доступность API",
        "operationId": "health",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "HealthResponse",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "description": "Возвращает короткий ответ процесса без обращения к базе данных.",
        "x-12k-group": "system",
        "x-12k-status": "READY"
      }
    },
    "/ready": {
      "get": {
        "summary": "Проверить готовность API",
        "operationId": "readiness",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "ReadinessResponse",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "description": "Проверяет соединение с PostgreSQL и возвращает готовность сервиса принимать запросы.",
        "x-12k-group": "system",
        "x-12k-status": "READY"
      }
    },
    "/v1/company": {
      "get": {
        "tags": [
          "platform"
        ],
        "summary": "Получить компанию",
        "operationId": "get_company_v1_company_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает реквизиты компании текущего tenant.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "company:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/program": {
      "get": {
        "tags": [
          "platform"
        ],
        "summary": "Получить программу лояльности",
        "operationId": "get_program_v1_program_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProgramResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает основную конфигурацию программы текущей компании.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "program:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/subscription": {
      "get": {
        "tags": [
          "platform"
        ],
        "summary": "Получить подписку",
        "operationId": "get_subscription_v1_subscription_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает тариф, лимит касс, статус и сроки доступа к API.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "subscription:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers": {
      "post": {
        "tags": [
          "customers"
        ],
        "summary": "Создать клиента",
        "operationId": "enroll_customer_v1_customers_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Регистрирует клиента по российскому номеру телефона и создаёт бонусный счёт.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "customers"
        ],
        "summary": "Получить список клиентов",
        "operationId": "read_customer_directory_v1_customers_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ],
              "title": "Query"
            }
          },
          {
            "name": "minimumAvailable",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0.0
                },
                {
                  "type": "string",
                  "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Minimumavailable"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDirectoryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает страницу клиентов с поиском и фильтром по доступному балансу.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/search": {
      "get": {
        "tags": [
          "customers"
        ],
        "summary": "Найти клиента по телефону",
        "operationId": "search_customer_v1_customers_search_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает клиента и актуальный бонусный баланс по нормализованному телефону.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/{customer_id}/reward-account": {
      "get": {
        "tags": [
          "customers"
        ],
        "summary": "Получить бонусный счёт",
        "operationId": "read_reward_account_v1_customers__customer_id__reward_account_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardAccountResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает доступные, ожидающие и зарезервированные бонусы клиента.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/{customer_id}/reward-adjustments": {
      "post": {
        "tags": [
          "customers"
        ],
        "summary": "Изменить баланс бонусов",
        "operationId": "create_reward_adjustment_v1_customers__customer_id__reward_adjustments_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardAdjustmentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardAdjustmentResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Идемпотентно начисляет или списывает бонусы с обязательным основанием операции.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "ledger:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/{customer_id}/reward-activities": {
      "get": {
        "tags": [
          "customers"
        ],
        "summary": "Получить историю бонусов",
        "operationId": "read_reward_activities_v1_customers__customer_id__reward_activities_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 20,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardActivityPageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает страницу операций бонусного ledger конкретного клиента.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/checkout-sessions": {
      "post": {
        "tags": [
          "checkout"
        ],
        "summary": "Открыть кассовую сессию",
        "operationId": "open_checkout_session_v1_checkout_sessions_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCheckoutSessionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutSessionResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт идемпотентный checkout для чека ЭВОТОР и выбранного клиента.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/checkout-sessions/{checkout_session_id}/quote": {
      "post": {
        "tags": [
          "checkout"
        ],
        "summary": "Рассчитать чек",
        "operationId": "quote_checkout_v1_checkout_sessions__checkout_session_id__quote_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "checkout_session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Checkout Session Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateQuoteRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Рассчитывает скидку, доступное списание и будущее начисление по позициям чека; возвращает причину ограничения, не блокируя саму продажу.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/checkout-sessions/{checkout_session_id}/hold": {
      "post": {
        "tags": [
          "checkout"
        ],
        "summary": "Зарезервировать бонусы",
        "operationId": "hold_checkout_rewards_v1_checkout_sessions__checkout_session_id__hold_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "checkout_session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Checkout Session Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateHoldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoldResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Ставит рассчитанную сумму списания в hold до закрытия чека.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      },
      "delete": {
        "tags": [
          "checkout"
        ],
        "summary": "Освободить резерв",
        "operationId": "release_checkout_rewards_v1_checkout_sessions__checkout_session_id__hold_delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "checkout_session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Checkout Session Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReleaseHoldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoldResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Снимает hold бонусов при отмене оплаты; разрешён также для безопасного завершения после остановки подписки.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/checkout-sessions/{checkout_session_id}/commit": {
      "post": {
        "tags": [
          "checkout"
        ],
        "summary": "Закрыть продажу",
        "operationId": "commit_checkout_sale_v1_checkout_sessions__checkout_session_id__commit_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "checkout_session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Checkout Session Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommitSaleRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaleResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Фиксирует продажу, списание и начисление бонусов по подтверждённому чеку ЭВОТОР.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/sales/by-external-receipt/{external_receipt_id}": {
      "get": {
        "tags": [
          "checkout"
        ],
        "summary": "Найти продажу по чеку ЭВОТОР",
        "operationId": "get_evotor_sale_by_external_receipt_v1_sales_by_external_receipt__external_receipt_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "external_receipt_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "title": "External Receipt Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaleLookupResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает зафиксированную продажу по внешнему идентификатору чека.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/sales/{sale_id}/returns": {
      "post": {
        "tags": [
          "checkout"
        ],
        "summary": "Оформить возврат",
        "operationId": "return_checkout_sale_v1_sales__sale_id__returns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "sale_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Sale Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateReturnRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Идемпотентно возвращает строки продажи и компенсирует бонусные операции.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "checkout:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/catalog-syncs": {
      "post": {
        "tags": [
          "catalog-syncs"
        ],
        "summary": "Полностью синхронизировать каталог точки ЭВОТОР",
        "operationId": "post_catalog_sync_v1_catalog_syncs_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CatalogSyncRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogSyncResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Атомарно сверяет полный снимок товаров одной зарегистрированной точки ЭВОТОР: обновляет переданные позиции и удаляет отсутствующие. Требует Idempotency-Key; пустой снимок принимается только с явным allowEmpty=true.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "products:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/stores": {
      "post": {
        "tags": [
          "locations"
        ],
        "summary": "Создать торговую точку",
        "operationId": "post_store_v1_stores_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStoreRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Добавляет точку продаж, адрес и координаты для касс и Wallet-геометок.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "locations"
        ],
        "summary": "Получить торговые точки",
        "operationId": "get_stores_v1_stores_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "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": 200,
              "minimum": 1,
              "default": 50,
              "title": "Pagesize"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает страницу точек текущей компании.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/place-directory": {
      "get": {
        "tags": [
          "locations"
        ],
        "summary": "Получить публичный каталог точек",
        "operationId": "get_place_directory_v1_place_directory_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaceDirectoryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает активные города и только явно опубликованные в MINIAPP торговые точки текущей компании.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/terminals": {
      "post": {
        "tags": [
          "locations"
        ],
        "summary": "Зарегистрировать кассу ЭВОТОР",
        "operationId": "post_terminal_v1_terminals_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTerminalRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Привязывает терминал ЭВОТОР к торговой точке в пределах тарифного лимита.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "locations"
        ],
        "summary": "Получить кассы",
        "operationId": "get_terminals_v1_terminals_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "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": 200,
              "minimum": 1,
              "default": 50,
              "title": "Pagesize"
            }
          },
          {
            "name": "storeId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Storeid"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает страницу терминалов с фильтром по точке.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/cashiers": {
      "get": {
        "tags": [
          "locations"
        ],
        "summary": "Получить кассиров ЭВОТОР",
        "operationId": "get_cashiers_v1_cashiers_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "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": 200,
              "minimum": 1,
              "default": 50,
              "title": "Pagesize"
            }
          },
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ],
              "title": "Query"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CashierListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает безопасный каталог авторизованных пользователей касс ЭВОТОР текущей компании. PIN, телефон и ИНН пользователя ЭВОТОР не принимаются и не сохраняются.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/terminals/{terminal_id}": {
      "patch": {
        "tags": [
          "locations"
        ],
        "summary": "Изменить кассу",
        "operationId": "patch_terminal_v1_terminals__terminal_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "terminal_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Terminal Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTerminalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Обновляет название, состояние или привязку терминала.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "locations:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/api-credentials": {
      "post": {
        "tags": [
          "api-credentials"
        ],
        "summary": "Выпустить API-ключ",
        "operationId": "post_credential_v1_api_credentials_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCredentialRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedCredentialResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт ключ с заданными scopes и показывает секрет ровно один раз.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "credentials:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "api-credentials"
        ],
        "summary": "Получить API-ключи",
        "operationId": "get_credentials_v1_api_credentials_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает метаданные ключей без их секретных значений.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "credentials:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/api-credentials/{credential_id}/rotate": {
      "post": {
        "tags": [
          "api-credentials"
        ],
        "summary": "Ротировать API-ключ",
        "operationId": "post_credential_rotation_v1_api_credentials__credential_id__rotate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "credential_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Credential Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedCredentialResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Отзывает старый credential и однократно возвращает новый секрет.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "credentials:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/verifications": {
      "post": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Запросить код подтверждения",
        "operationId": "post_verification_v1_verifications_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт ограниченный по времени OTP challenge и отправляет код через настроенный SMS или Telegram-канал.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "consents:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/verifications/telegram-contact": {
      "post": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Подтвердить контакт Telegram",
        "operationId": "post_trusted_telegram_contact_v1_verifications_telegram_contact_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrustedTelegramContactRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт подтверждённый enrollment challenge только для доверенного Mini App bot после self-contact Telegram.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "telegram:verify",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/verifications/{challenge_id}/confirm": {
      "post": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Подтвердить код",
        "operationId": "post_verification_confirmation_v1_verifications__challenge_id__confirm_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "challenge_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Challenge Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Проверяет OTP, срок и число попыток; только после успеха разрешается защищённое действие.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "consents:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/consent-documents": {
      "post": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Создать документ согласия",
        "operationId": "post_consent_document_v1_consent_documents_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateConsentDocumentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentDocumentResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Публикует новую неизменяемую версию текста согласия.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "consents:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Получить документы согласий",
        "operationId": "get_consent_documents_v1_consent_documents_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentDocumentListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает версии юридических текстов согласий.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "consents:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/{customer_id}/consents": {
      "post": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Зафиксировать согласие клиента",
        "operationId": "post_customer_consent_v1_customers__customer_id__consents_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordConsentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentEvidenceResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Записывает доказательство согласия после подходящего подтверждённого challenge.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "consents:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "identity-consent"
        ],
        "summary": "Получить согласия клиента",
        "operationId": "get_customer_consents_v1_customers__customer_id__consents_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает аудит согласий конкретного клиента.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "consents:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/policies/current": {
      "get": {
        "tags": [
          "loyalty-policies"
        ],
        "summary": "Получить активные правила",
        "operationId": "get_active_policy_v1_policies_current_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает применяемую сейчас версию правил начисления, списания и сроков бонусов.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/policies": {
      "get": {
        "tags": [
          "loyalty-policies"
        ],
        "summary": "Получить версии правил",
        "operationId": "get_policy_versions_v1_policies_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает историю и черновики правил программы.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "loyalty-policies"
        ],
        "summary": "Создать версию правил",
        "operationId": "post_policy_v1_policies_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePolicyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт новый неизменяемый черновик бонусной политики.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/policies/{policy_id}/activate": {
      "post": {
        "tags": [
          "loyalty-policies"
        ],
        "summary": "Активировать правила",
        "operationId": "post_policy_activation_v1_policies__policy_id__activate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "policy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Policy Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PolicyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Делает выбранную версию правил текущей для новых расчётов.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/card-types": {
      "get": {
        "tags": [
          "loyalty-card-types"
        ],
        "summary": "Получить типы карт",
        "operationId": "get_card_types_v1_card_types_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 10000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardTypeListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped уровни программы и их активные неизменяемые версии экономики, сроков и защитных лимитов.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "loyalty-card-types"
        ],
        "summary": "Создать тип карты",
        "operationId": "post_card_type_v1_card_types_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardTypeMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardTypeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт новый ручной или накопительный уровень с собственной экономикой и лимитами; операция требует короткоживущий credential настройки политики.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/card-types/{card_type_id}": {
      "put": {
        "tags": [
          "loyalty-card-types"
        ],
        "summary": "Создать новую версию типа карты",
        "operationId": "put_card_type_v1_card_types__card_type_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "card_type_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Type Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CardTypeMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardTypeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Архивирует прежние правила и публикует следующую версию с optimistic concurrency через If-Match.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/{customer_id}/card-type-assignment": {
      "get": {
        "tags": [
          "loyalty-card-types"
        ],
        "summary": "Получить уровень клиента",
        "operationId": "get_customer_card_type_assignment_v1_customers__customer_id__card_type_assignment_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCardTypeAssignmentResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает текущее назначение типа карты, его источник, revision и подтверждённый накопленный оборот.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:read",
        "x-12k-lifecycle": "active"
      },
      "put": {
        "tags": [
          "loyalty-card-types"
        ],
        "summary": "Назначить уровень клиенту",
        "operationId": "put_customer_card_type_assignment_v1_customers__customer_id__card_type_assignment_put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCardTypeAssignmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCardTypeAssignmentResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно назначает тип карты и журналирует ручное изменение без пересчёта старых чеков.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/webhook-endpoints": {
      "post": {
        "tags": [
          "webhooks"
        ],
        "summary": "Создать webhook-подписку",
        "operationId": "post_webhook_endpoint_v1_webhook_endpoints_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedWebhookResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Регистрирует HTTPS endpoint, события и однократно возвращает HMAC-секрет.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "webhooks:write",
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "webhooks"
        ],
        "summary": "Получить webhook-подписки",
        "operationId": "get_webhook_endpoints_v1_webhook_endpoints_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает активные исходящие webhook endpoints.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "webhooks:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/webhook-endpoints/{endpoint_id}": {
      "delete": {
        "tags": [
          "webhooks"
        ],
        "summary": "Отключить webhook",
        "operationId": "delete_webhook_endpoint_v1_webhook_endpoints__endpoint_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Endpoint Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Деактивирует исходящую webhook-подписку.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "webhooks:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/customers/{customer_id}/membership-card": {
      "post": {
        "tags": [
          "membership-cards"
        ],
        "summary": "Выпустить карту лояльности",
        "operationId": "post_membership_card_v1_customers__customer_id__membership_card_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Customer Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт или возвращает карту клиента с QR и короткоживущими ссылками Wallet.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "cards:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/membership-cards/{card_id}/rotate": {
      "post": {
        "tags": [
          "membership-cards"
        ],
        "summary": "Перевыпустить карту",
        "operationId": "post_membership_card_rotation_v1_membership_cards__card_id__rotate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "card_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Card Id"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Меняет секрет QR и инвалидирует старое значение.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "cards:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/membership-cards/resolve": {
      "post": {
        "tags": [
          "membership-cards"
        ],
        "summary": "Распознать карту",
        "operationId": "post_membership_card_resolution_v1_membership_cards_resolve_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResolveCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolvedCardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Находит действующую карту, клиента и баланс по QR/штрихкоду.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "cards:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/ecards/{download_token}": {
      "get": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Открыть электронную карту",
        "operationId": "get_public_ecard_public_v1_ecards__download_token__get",
        "parameters": [
          {
            "name": "download_token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Download Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicEcardResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "По короткоживущему подписанному токену возвращает QR, баланс и геометки без API-ключа.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/wallet/apple/{download_token}": {
      "get": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Скачать Apple Wallet pass",
        "operationId": "get_apple_wallet_pass_public_v1_wallet_apple__download_token__get",
        "parameters": [
          {
            "name": "download_token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Download Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "По короткоживущему токену возвращает подписанный .pkpass; требует настроенного Apple issuer.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/wallet/apple/v1/devices/{device_library_identifier}/registrations/{pass_type_identifier}/{serial_number}": {
      "post": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Зарегистрировать Apple Wallet pass",
        "operationId": "post_apple_wallet_registration_public_v1_wallet_apple_v1_devices__device_library_identifier__registrations__pass_type_identifier___serial_number__post",
        "parameters": [
          {
            "name": "device_library_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[A-Za-z0-9._-]+$",
              "title": "Device Library Identifier"
            }
          },
          {
            "name": "pass_type_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 6,
              "maxLength": 255,
              "pattern": "^pass\\.[A-Za-z0-9.-]+$",
              "title": "Pass Type Identifier"
            }
          },
          {
            "name": "serial_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[A-Za-z0-9._-]+$",
              "title": "Serial Number"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 600
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplePushTokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Служебный PassKit endpoint: проверяет ApplePass-токен, шифрует APNs push token и регистрирует устройство для обновлений карты.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      },
      "delete": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Отменить регистрацию Apple Wallet pass",
        "operationId": "delete_apple_wallet_registration_public_v1_wallet_apple_v1_devices__device_library_identifier__registrations__pass_type_identifier___serial_number__delete",
        "parameters": [
          {
            "name": "device_library_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[A-Za-z0-9._-]+$",
              "title": "Device Library Identifier"
            }
          },
          {
            "name": "pass_type_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 6,
              "maxLength": 255,
              "pattern": "^pass\\.[A-Za-z0-9.-]+$",
              "title": "Pass Type Identifier"
            }
          },
          {
            "name": "serial_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[A-Za-z0-9._-]+$",
              "title": "Serial Number"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 600
                },
                {
                  "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"
                }
              }
            }
          }
        },
        "description": "Служебный PassKit endpoint: после проверки ApplePass-токена удаляет связь устройства с картой.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/wallet/apple/v1/devices/{device_library_identifier}/registrations/{pass_type_identifier}": {
      "get": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Получить изменившиеся Apple Wallet passes",
        "operationId": "get_apple_wallet_updates_public_v1_wallet_apple_v1_devices__device_library_identifier__registrations__pass_type_identifier__get",
        "parameters": [
          {
            "name": "device_library_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[A-Za-z0-9._-]+$",
              "title": "Device Library Identifier"
            }
          },
          {
            "name": "pass_type_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 6,
              "maxLength": 255,
              "pattern": "^pass\\.[A-Za-z0-9.-]+$",
              "title": "Pass Type Identifier"
            }
          },
          {
            "name": "passesUpdatedSince",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 20
                },
                {
                  "type": "null"
                }
              ],
              "title": "Passesupdatedsince"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Служебный PassKit endpoint: возвращает зарегистрированные serial numbers, изменившиеся после переданного монотонного update tag.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/wallet/apple/v1/passes/{pass_type_identifier}/{serial_number}": {
      "get": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Получить обновлённый Apple Wallet pass",
        "operationId": "get_latest_apple_wallet_pass_public_v1_wallet_apple_v1_passes__pass_type_identifier___serial_number__get",
        "parameters": [
          {
            "name": "pass_type_identifier",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 6,
              "maxLength": 255,
              "pattern": "^pass\\.[A-Za-z0-9.-]+$",
              "title": "Pass Type Identifier"
            }
          },
          {
            "name": "serial_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[A-Za-z0-9._-]+$",
              "title": "Serial Number"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 600
                },
                {
                  "type": "null"
                }
              ],
              "title": "Authorization"
            }
          },
          {
            "name": "if-modified-since",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "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"
                }
              }
            }
          }
        },
        "description": "Служебный PassKit endpoint: после проверки стабильного ApplePass-токена возвращает заново подписанный pass с актуальным QR и балансом.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/wallet/apple/v1/log": {
      "post": {
        "tags": [
          "public-membership-cards"
        ],
        "summary": "Принять диагностическое сообщение Apple Wallet",
        "operationId": "post_apple_wallet_log_public_v1_wallet_apple_v1_log_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppleLogEntriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Служебный PassKit endpoint: валидирует ограниченный пакет диагностических строк без сохранения пользовательского содержимого.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/plans": {
      "get": {
        "tags": [
          "public-tariffs"
        ],
        "summary": "Получить публичный каталог тарифов ЭВОТОР",
        "operationId": "get_public_platform_plans_public_v1_plans_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlatformPlanCatalogResponse"
                }
              }
            }
          }
        },
        "description": "Возвращает единый read-only каталог STANDARD, PROFI и PROFI_PLUS: цены на 1, 6 и 12 месяцев, стоимость дополнительной кассы и список возможностей. Оплату не запускает; тариф выдаётся вручную.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/legal-pages/{slug}.pdf": {
      "get": {
        "tags": [
          "public-legal-pages"
        ],
        "summary": "Открыть юридический документ PDF",
        "operationId": "get_public_legal_pdf_public_v1_legal_pages__slug__pdf_get",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9](?:[a-z0-9-]{0,78}[a-z0-9])?$",
              "title": "Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Отдаёт PDF последней утверждённой и уже действующей версии как application/pdf с проверяемым SHA-256; для текстовой версии и неопубликованной страницы возвращается 404.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/legal-pages/{slug}": {
      "get": {
        "tags": [
          "public-legal-pages"
        ],
        "summary": "Получить юридическую страницу",
        "operationId": "get_public_legal_page_detail_public_v1_legal_pages__slug__get",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9](?:[a-z0-9-]{0,78}[a-z0-9])?$",
              "title": "Slug"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicLegalPageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает последнюю утверждённую версию российского юридического документа, дата вступления в силу которой уже наступила; черновики и будущие версии не раскрываются.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/feedback/{token}": {
      "get": {
        "tags": [
          "public-feedback"
        ],
        "summary": "Открыть форму отзыва",
        "operationId": "get_public_feedback_public_v1_feedback__token__get",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 40,
              "maxLength": 64,
              "pattern": "^[A-Za-z0-9_-]+$",
              "title": "Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicFeedbackContextResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Проверяет одноразовую ссылку конкретного чека и возвращает только название компании, внешний номер чека, награду и срок.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "public-feedback"
        ],
        "summary": "Отправить отзыв и NPS",
        "operationId": "post_public_feedback_public_v1_feedback__token__post",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 40,
              "maxLength": 64,
              "pattern": "^[A-Za-z0-9_-]+$",
              "title": "Token"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicFeedbackSubmitRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicFeedbackSubmitResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Однократно сохраняет рейтинг, NPS и комментарий; награда атомарно проходит через бонусный ledger и не может быть выдана повторно.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/feedback/{token}/operator-reply": {
      "get": {
        "tags": [
          "public-feedback"
        ],
        "summary": "Получить ответ компании на отзыв",
        "operationId": "get_public_feedback_reply_public_v1_feedback__token__operator_reply_get",
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 40,
              "maxLength": 64,
              "pattern": "^[A-Za-z0-9_-]+$",
              "title": "Token"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicFeedbackOperatorReplyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "По исходной feedback capability до её срока действия возвращает доставленный ответ компании или явный статус ожидания без раскрытия других обращений клиента.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/referral-program": {
      "get": {
        "tags": [
          "referrals"
        ],
        "summary": "Получить условия реферальной программы",
        "operationId": "read_referral_program_v1_referral_program_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralProgramResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает активность, уровни, формулы, срок наград и revision настроек; денежные условия изменяются только в защищённом кабинете владельца.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "program:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/referrals": {
      "get": {
        "tags": [
          "referrals"
        ],
        "summary": "Получить реферальные приглашения",
        "operationId": "read_referral_invites_v1_referrals_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralInvitePageResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped страницу персональных приглашений и число подтверждённых регистраций без раскрытия телефона клиента.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "referrals"
        ],
        "summary": "Выпустить реферальное приглашение",
        "operationId": "issue_referral_invite_v1_referrals_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReferralInviteCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralInviteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт или повторно возвращает подписанную персональную ссылку активного клиента для выбранной активной ссылки регистрации.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/referrals/{invite_id}/rotate": {
      "post": {
        "tags": [
          "referrals"
        ],
        "summary": "Сменить реферальную ссылку",
        "operationId": "rotate_invite_v1_referrals__invite_id__rotate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "invite_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
              "title": "Invite Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralInviteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Повышает версию приглашения по If-Match и немедленно делает прежние URL и QR недействительными.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/referrals/{invite_id}/revoke": {
      "post": {
        "tags": [
          "referrals"
        ],
        "summary": "Отозвать реферальное приглашение",
        "operationId": "revoke_invite_v1_referrals__invite_id__revoke_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "invite_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
              "title": "Invite Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferralInviteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Отзывает активное приглашение по If-Match, сохраняя историю регистраций и уже проведённых наград.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "customers:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/registration/{slug}": {
      "get": {
        "tags": [
          "public-registration"
        ],
        "summary": "Открыть регистрацию клиента",
        "operationId": "get_public_registration_public_v1_registration__slug__get",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 32,
              "maxLength": 43,
              "pattern": "^[A-Za-z0-9_-]+$",
              "title": "Slug"
            }
          },
          {
            "name": "ref",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 40,
                  "maxLength": 160
                },
                {
                  "type": "null"
                }
              ],
              "title": "Ref"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRegistrationConfigurationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "По активной публичной ссылке возвращает бренд программы, тип карты, обязательные поля и актуальные версии документов согласия без раскрытия внутренних идентификаторов компании.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/registration/{slug}/verifications": {
      "post": {
        "tags": [
          "public-registration"
        ],
        "summary": "Запросить код регистрации",
        "operationId": "post_public_registration_verification_public_v1_registration__slug__verifications_post",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 32,
              "maxLength": 43,
              "pattern": "^[A-Za-z0-9_-]+$",
              "title": "Slug"
            }
          },
          {
            "name": "X-Public-Client-IP",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Public-Client-Ip"
            }
          },
          {
            "name": "X-Portal-BFF-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Portal-Bff-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRegistrationVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRegistrationVerificationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Нормализует российский номер телефона, применяет лимиты по компании, ссылке, номеру и клиентскому адресу и отправляет одноразовый SMS-код; клиент до подтверждения не создаётся.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/public/v1/registration/{slug}/enroll": {
      "post": {
        "tags": [
          "public-registration"
        ],
        "summary": "Завершить регистрацию клиента",
        "operationId": "post_public_registration_enrollment_public_v1_registration__slug__enroll_post",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 32,
              "maxLength": 43,
              "pattern": "^[A-Za-z0-9_-]+$",
              "title": "Slug"
            }
          },
          {
            "name": "X-Public-Client-IP",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Public-Client-Ip"
            }
          },
          {
            "name": "X-Portal-BFF-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Portal-Bff-Key"
            }
          },
          {
            "name": "User-Agent",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "User-Agent"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicRegistrationEnrollRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRegistrationEnrollResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Проверяет одноразовый код и обязательные согласия, атомарно создаёт либо находит клиента, выпускает карту, начисляет настроенный приветственный бонус и возвращает баланс, QR и короткоживущую ссылку электронной карты.",
        "x-12k-group": "public",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/product-exclusion-campaigns": {
      "get": {
        "tags": [
          "product-exclusion-campaigns"
        ],
        "summary": "Получить товарные исключения",
        "operationId": "get_product_exclusion_campaigns_v1_product_exclusion_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductExclusionCampaignListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped наборы товаров, групп и меток с областью действия: пустой storeIds означает все торговые точки.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "product-exclusion-campaigns"
        ],
        "summary": "Создать товарное исключение",
        "operationId": "post_product_exclusion_campaign_v1_product_exclusion_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductExclusionCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductExclusionCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт набор импортированных товаров, групп и/или productLabels глобально либо для выбранных storeIds; группа охватывает потомков по pid, метка — товары из любых веток.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/product-exclusion-campaigns/{campaign_id}/audit-events": {
      "get": {
        "tags": [
          "product-exclusion-campaigns"
        ],
        "summary": "Получить аудит товарного исключения",
        "operationId": "get_product_exclusion_campaign_audit_events_v1_product_exclusion_campaigns__campaign_id__audit_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductExclusionCampaignAuditListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает append-only историю создания и изменения набора с actor, revision и неизменяемыми before/after снимками.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/product-exclusion-campaigns/{campaign_id}": {
      "put": {
        "tags": [
          "product-exclusion-campaigns"
        ],
        "summary": "Изменить товарное исключение",
        "operationId": "put_product_exclusion_campaign_v1_product_exclusion_campaigns__campaign_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductExclusionCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductExclusionCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно изменяет набор через If-Match: отсутствие storeIds сохраняет область, явный [] включает все точки; checkout доверяет только terminal credential.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/coupon-campaigns": {
      "get": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Получить купонные кампании",
        "operationId": "get_coupon_campaigns_v1_coupon_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCampaignListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped список кампаний одноразовых промокодов без раскрытия исходных значений кодов.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Создать купонную кампанию",
        "operationId": "post_coupon_campaign_v1_coupon_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CouponCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт версионную кампанию фиксированной или процентной скидки с периодом действия и лимитами использования.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/coupon-campaigns/{campaign_id}/audit-events": {
      "get": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Получить аудит купонной кампании",
        "operationId": "get_coupon_campaign_audit_events_v1_coupon_campaigns__campaign_id__audit_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCampaignAuditListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает append-only историю создания и изменения кампании с actor, revision и неизменяемыми before/after снимками.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/coupon-campaigns/{campaign_id}/codes": {
      "get": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Получить реестр купонных кодов",
        "operationId": "get_coupon_codes_v1_coupon_campaigns__campaign_id__codes_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCodeListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает только идентификаторы, маски, состояние и статистику использования кодов; исходные секретные значения повторно не выдаются.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/coupon-campaigns/{campaign_id}": {
      "put": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Изменить купонную кампанию",
        "operationId": "put_coupon_campaign_v1_coupon_campaigns__campaign_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CouponCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно изменяет кампанию через If-Match и сохраняет изменение в append-only аудите.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/coupon-campaigns/{campaign_id}/code-batches": {
      "post": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Выпустить одноразовые купонные коды",
        "operationId": "post_coupon_code_batch_v1_coupon_campaigns__campaign_id__code_batches_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CouponCodeBatchRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCodeBatchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Идемпотентно выпускает ограниченную партию кодов и показывает исходные значения только в первом успешном ответе; endpoint защищён rate limit.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/coupon-codes/{code_id}/revoke": {
      "post": {
        "tags": [
          "coupon-campaigns"
        ],
        "summary": "Отозвать купонный код",
        "operationId": "post_revoke_coupon_code_v1_coupon_codes__code_id__revoke_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "code_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Code Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevokeCouponCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CouponCodeResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Идемпотентно отзывает код по непрозрачному идентификатору и сохраняет причину и actor в аудите.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/nth-purchase-campaigns": {
      "get": {
        "tags": [
          "nth-purchase-campaigns"
        ],
        "summary": "Получить акции по номеру покупки",
        "operationId": "get_nth_purchase_campaigns_v1_nth_purchase_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthPurchaseCampaignListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped разовые правила для точного порядкового номера покупки, включая расписание, товары, исключения, точки и типы карт.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "nth-purchase-campaigns"
        ],
        "summary": "Создать акцию по номеру покупки",
        "operationId": "post_nth_purchase_campaign_v1_nth_purchase_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NthPurchaseCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthPurchaseCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт разовую процентную скидку на точную lifetime-покупку; scope поддерживает включения и исключения товаров, метки, точки и типы карт.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/nth-purchase-campaigns/{campaign_id}/audit-events": {
      "get": {
        "tags": [
          "nth-purchase-campaigns"
        ],
        "summary": "Получить аудит акции по номеру покупки",
        "operationId": "get_nth_purchase_campaign_audit_events_v1_nth_purchase_campaigns__campaign_id__audit_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthPurchaseCampaignAuditListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает append-only историю конфигурации с actor, revision и неизменяемыми before/after снимками.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/nth-purchase-campaigns/{campaign_id}": {
      "put": {
        "tags": [
          "nth-purchase-campaigns"
        ],
        "summary": "Изменить акцию по номеру покупки",
        "operationId": "put_nth_purchase_campaign_v1_nth_purchase_campaigns__campaign_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NthPurchaseCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthPurchaseCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно изменяет правило через If-Match; checkout сериализует порядковые номера и сохраняет применённую ревизию в quote.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/reward-accrual-campaigns": {
      "get": {
        "tags": [
          "reward-accrual-campaigns"
        ],
        "summary": "Получить акции повышенного начисления",
        "operationId": "get_reward_accrual_campaigns_v1_reward_accrual_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardAccrualCampaignListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped правила временного процентного кешбэка, включая расписание, активацию и срок бонусов, товары, исключения, списки клиентов, точки и типы карт.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "reward-accrual-campaigns"
        ],
        "summary": "Создать акцию повышенного начисления",
        "operationId": "post_reward_accrual_campaign_v1_reward_accrual_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardAccrualCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardAccrualCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт временный процентный кешбэк со стратегией MAXIMUM, отдельной активацией и сроком бонусов, расписанием и tenant-scoped областью товаров, списков клиентов, точек и типов карт.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/reward-accrual-campaigns/{campaign_id}/audit-events": {
      "get": {
        "tags": [
          "reward-accrual-campaigns"
        ],
        "summary": "Получить аудит акции повышенного начисления",
        "operationId": "get_reward_accrual_campaign_audit_events_v1_reward_accrual_campaigns__campaign_id__audit_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardAccrualCampaignAuditListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает append-only историю конфигурации с actor, revision и неизменяемыми before/after снимками.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/reward-accrual-campaigns/{campaign_id}": {
      "put": {
        "tags": [
          "reward-accrual-campaigns"
        ],
        "summary": "Изменить акцию повышенного начисления",
        "operationId": "put_reward_accrual_campaign_v1_reward_accrual_campaigns__campaign_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RewardAccrualCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RewardAccrualCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно изменяет правило через If-Match; checkout применяет его только когда начисление выгоднее базового, а результат и условия бонусного lot сохраняет в quote.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/nth-unit-campaigns": {
      "get": {
        "tags": [
          "nth-unit-campaigns"
        ],
        "summary": "Получить количественные акции",
        "operationId": "get_nth_unit_campaigns_v1_nth_unit_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthUnitCampaignListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped правила вида «каждый N-й товар»: цикл, число льготных единиц, выгоду, расписание и товарные области.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "nth-unit-campaigns"
        ],
        "summary": "Создать количественную акцию",
        "operationId": "post_nth_unit_campaign_v1_nth_unit_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NthUnitCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthUnitCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт правило «1+1=3 / каждый N-й»: бесплатная единица, процентная скидка или фиксированная цена с расписанием и областью товаров, меток и точек.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/nth-unit-campaigns/{campaign_id}/audit-events": {
      "get": {
        "tags": [
          "nth-unit-campaigns"
        ],
        "summary": "Получить аудит количественной акции",
        "operationId": "get_nth_unit_campaign_audit_events_v1_nth_unit_campaigns__campaign_id__audit_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthUnitCampaignAuditListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает append-only историю конфигурации акции с actor, revision и неизменяемыми before/after снимками.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/nth-unit-campaigns/{campaign_id}": {
      "put": {
        "tags": [
          "nth-unit-campaigns"
        ],
        "summary": "Изменить количественную акцию",
        "operationId": "put_nth_unit_campaign_v1_nth_unit_campaigns__campaign_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NthUnitCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NthUnitCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно изменяет правило через If-Match; checkout выбирает кампанию детерминированно и сохраняет механику, ревизию и денежный результат в quote.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/scheduled-discount-campaigns": {
      "get": {
        "tags": [
          "scheduled-discount-campaigns"
        ],
        "summary": "Получить акции по расписанию",
        "operationId": "get_scheduled_discount_campaigns_v1_scheduled_discount_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledDiscountCampaignListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает tenant-scoped скидочные акции, их локальное расписание, приоритет и области товаров, меток и торговых точек.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      },
      "post": {
        "tags": [
          "scheduled-discount-campaigns"
        ],
        "summary": "Создать скидочную акцию по расписанию",
        "operationId": "post_scheduled_discount_campaign_v1_scheduled_discount_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduledDiscountCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledDiscountCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт серверное правило скидки для счастливых часов: дни недели, локальный интервал, период дат, товары/группы/метки и точки; пустая товарная область означает весь чек.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/scheduled-discount-campaigns/{campaign_id}/audit-events": {
      "get": {
        "tags": [
          "scheduled-discount-campaigns"
        ],
        "summary": "Получить аудит акции по расписанию",
        "operationId": "get_scheduled_discount_campaign_audit_events_v1_scheduled_discount_campaigns__campaign_id__audit_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledDiscountCampaignAuditListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает append-only историю конфигурации акции с actor, revision и before/after снимками.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:read",
        "x-12k-lifecycle": "active"
      }
    },
    "/v1/scheduled-discount-campaigns/{campaign_id}": {
      "put": {
        "tags": [
          "scheduled-discount-campaigns"
        ],
        "summary": "Изменить скидочную акцию по расписанию",
        "operationId": "put_scheduled_discount_campaign_v1_scheduled_discount_campaigns__campaign_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "If-Match"
            }
          },
          {
            "name": "X-Loyalty-Pos-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Loyalty-Pos-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduledDiscountCampaignMutationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledDiscountCampaignResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Версионно изменяет акцию через If-Match; checkout не суммирует акции, выбирает приоритетную и сохраняет неизменяемый снимок на строке quote.",
        "x-12k-group": "native",
        "x-12k-status": "READY",
        "x-required-scope": "policies:write",
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer": {
      "post": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Создать клиента",
        "operationId": "post_customer_compat_bonusplus_customer_post",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusCreateCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт анкету, карту и бонусный счёт клиента.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 8,
        "x-12k-lifecycle": "active"
      },
      "get": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Найти клиента",
        "operationId": "get_customer_compat_bonusplus_customer_get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Id"
            }
          },
          {
            "name": "ean",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Ean"
            }
          },
          {
            "name": "phone",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Phone"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Ищет клиента по GUID, карте/EAN или телефону.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 7,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/search": {
      "post": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Искать клиентов",
        "operationId": "post_customer_search_compat_bonusplus_customer_search_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusCustomerSearchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BonusPlusDictionaryItemResponse"
                  },
                  "type": "array",
                  "title": "Response Post Customer Search Compat Bonusplus Customer Search Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Ищет до десяти клиентов по телефону или ФИО.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 17,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/list": {
      "post": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Получить список клиентов",
        "operationId": "post_customer_list_compat_bonusplus_customer_list_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusCustomerListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BonusPlusCustomerResponse"
                  },
                  "type": "array",
                  "title": "Response Post Customer List Compat Bonusplus Customer List Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает страницу Customer DTO; сложные CRM/RFM-фильтры реализованы не полностью.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 15,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/stat": {
      "get": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Получить статистику клиентов",
        "operationId": "get_customer_stat_compat_bonusplus_customer_stat_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCustomerStatsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает агрегаты по полу, подтверждению, promo opt-out и e-card.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 18,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/ecard/{phone_number}/{valid_minutes}": {
      "get": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Получить e-card",
        "operationId": "get_ecard_compat_bonusplus_ecard__phone_number___valid_minutes__get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          },
          {
            "name": "valid_minutes",
            "in": "path",
            "required": true,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "maximum": 10080.0,
                  "exclusiveMinimum": 0.0
                },
                {
                  "type": "string",
                  "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
                }
              ],
              "title": "Valid Minutes"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusEcardLinkResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает временную подписанную ссылку на QR-карту клиента.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 25,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone_number}/sendMessage": {
      "post": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Отправить сообщение",
        "operationId": "post_customer_send_message_compat_bonusplus_customer__phone_number__sendMessage_post",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusSendMessageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Ставит поддерживаемое сообщение в outbox; требуется реальный провайдер канала.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 16,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/messaging/price": {
      "post": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Рассчитать цену сообщений",
        "operationId": "post_messaging_price_compat_bonusplus_messaging_price_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusMessagePriceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusMessagePriceResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Считает GSM-7/UCS-2 сегменты и цену SMS/PUSH/EMAIL.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 32,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone_number}": {
      "patch": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Изменить данные клиента",
        "operationId": "patch_customer_compat_bonusplus_customer__phone_number__patch",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusPatchCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Частично обновляет анкету, телефон или карту.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 10,
        "x-12k-lifecycle": "active"
      },
      "delete": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Удалить клиента",
        "operationId": "delete_customer_compat_bonusplus_customer__phone_number__delete",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Архивирует клиента и создаёт событие удаления.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 11,
        "x-12k-lifecycle": "active"
      },
      "put": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Заменить данные клиента",
        "operationId": "put_customer_compat_bonusplus_customer__phone_number__put",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusPutCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Заменяет поддерживаемые поля анкеты клиента.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 9,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone}/sendCode": {
      "put": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Отправить код по телефону",
        "operationId": "put_customer_send_code_by_phone_compat_bonusplus_customer__phone__sendCode_put",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт OTP для указанного телефона через SMS-провайдера.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 12,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/sendCode": {
      "put": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Отправить код из тела",
        "operationId": "put_customer_send_code_compat_bonusplus_customer_sendCode_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusSendCodeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Создаёт OTP для телефона из JSON-тела.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 13,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone_number}/checkCode/{code}": {
      "put": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Проверить код",
        "operationId": "put_customer_check_code_compat_bonusplus_customer__phone_number__checkCode__code__put",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Code"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Проверяет срок, попытки и подтверждает номер клиента.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 14,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone}/setPassword": {
      "get": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Сбросить пароль",
        "operationId": "get_customer_set_password_compat_bonusplus_customer__phone__setPassword_get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Генерирует пароль с rate limit и отправляет через настроенный SMS-канал.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 24,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/login": {
      "post": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Войти как клиент",
        "operationId": "post_customer_login_compat_bonusplus_customer_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusCustomerLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCustomerResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Проверяет телефон и scrypt-пароль с нейтральной ошибкой credentials.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 23,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone_number}/balance": {
      "patch": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Изменить баланс",
        "operationId": "patch_customer_balance_compat_bonusplus_customer__phone_number__balance_patch",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128,
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusBalancePatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusBalancePatchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Начисляет или списывает бонусы с партиями и сроками.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 19,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone_number}/balance/reserve": {
      "patch": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Зарезервировать бонусы",
        "operationId": "patch_customer_balance_reserve_compat_bonusplus_customer__phone_number__balance_reserve_patch",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128,
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusReserveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Создаёт или частично освобождает идемпотентный резерв.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 20,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/balance/reserve": {
      "delete": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Отменить резерв",
        "operationId": "delete_customer_balance_reserve_compat_bonusplus_customer_balance_reserve_delete",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusCancelReserveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Полностью освобождает бонусный резерв.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 21,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/customer/{phone_number}/balance/reserve/{external_id}": {
      "get": {
        "tags": [
          "BonusPlus compatibility"
        ],
        "summary": "Получить резерв",
        "operationId": "get_customer_balance_reserve_compat_bonusplus_customer__phone_number__balance_reserve__external_id__get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "phone_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Phone Number"
            }
          },
          {
            "name": "external_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "External Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusReserveResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает состояние и сумму резерва.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 22,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/product/import": {
      "post": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Импортировать товары",
        "operationId": "post_product_import_compat_bonusplus_product_import_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusProductImportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Массово обновляет или создаёт до 10 000 товаров.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 35,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/product/list": {
      "post": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Получить товары",
        "operationId": "post_product_list_compat_bonusplus_product_list_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusProductFilterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusProductListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает страницу товарного каталога.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 33,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/product/search": {
      "post": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Искать товары",
        "operationId": "post_product_search_compat_bonusplus_product_search_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusProductSearchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusProductListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Выполняет Unicode-регистронезависимый поиск по каталогу.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 34,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/certificate/number": {
      "get": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Получить номер сертификата",
        "operationId": "get_certificate_number_compat_bonusplus_certificate_number_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCertificateNumberResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Генерирует свободный EAN-13 для нового сертификата.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 4,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/certificate": {
      "post": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Создать сертификат",
        "operationId": "post_certificate_compat_bonusplus_certificate_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusCreateCertificateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object",
                  "title": "Response Post Certificate Compat Bonusplus Certificate Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Выпускает подарочный сертификат с номиналом, остатком и сроком.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 3,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/certificate/{certificate_id}": {
      "get": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Получить сертификат",
        "operationId": "get_certificate_compat_bonusplus_certificate__certificate_id__get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "certificate_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Certificate Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCertificateResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает состояние, номинал, остаток и срок сертификата.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 6,
        "x-12k-lifecycle": "active"
      },
      "delete": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Удалить сертификат",
        "operationId": "delete_certificate_compat_bonusplus_certificate__certificate_id__delete",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "certificate_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Certificate Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Delete Certificate Compat Bonusplus Certificate  Certificate Id  Delete"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Безопасно архивирует сертификат текущей компании.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-bonusplus-number": 5,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail/giftCard": {
      "put": {
        "tags": [
          "BonusPlus catalog compatibility"
        ],
        "summary": "Найти сертификат для оплаты",
        "description": "Разрешает отдельно документированный BonusPlus gift-card tender по отсканированному номеру внутри текущей компании.",
        "operationId": "get_retail_gift_card_compat_bonusplus_retail_giftCard_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusGiftCardLookupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusCertificateResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "x-12k-group": "bonusplus",
        "x-12k-status": "READY",
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail/calc": {
      "put": {
        "tags": [
          "BonusPlus retail compatibility"
        ],
        "summary": "Рассчитать продажу",
        "operationId": "put_retail_calc_compat_bonusplus_retail_calc_put",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusRetailCalcRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusRetailCalcResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Рассчитывает скидки, списание и начисление по строкам чека.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 26,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail": {
      "post": {
        "tags": [
          "BonusPlus retail compatibility"
        ],
        "summary": "Провести продажу",
        "operationId": "post_retail_compat_bonusplus_retail_post",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusRetailRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusRetailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Идемпотентно выполняет quote, hold и commit; сохраняет неизменяемый снимок даты, кассового контекста, тегов, купонов и товарных полей.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 27,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail/{legacy_id}": {
      "get": {
        "tags": [
          "BonusPlus retail compatibility"
        ],
        "summary": "Получить продажу или возврат",
        "operationId": "get_retail_compat_bonusplus_retail__legacy_id__get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "legacy_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Legacy Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusSaleResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает продажу type=0 либо возврат type=1 с parentId исходного чека, кассовым контекстом и неизменяемыми товарными позициями.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 31,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail/back": {
      "put": {
        "tags": [
          "BonusPlus retail compatibility"
        ],
        "summary": "Провести возврат",
        "operationId": "put_retail_back_compat_bonusplus_retail_back_put",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 100,
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusRetailBackRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusRetailBackResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает всю оставшуюся часть выбранной строки либо указанную рублёвую сумму, компенсирует бонусы и выдаёт отдельный returnedPurchaseId.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 28,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail/transactions": {
      "post": {
        "tags": [
          "BonusPlus retail compatibility"
        ],
        "summary": "Получить продажи и возвраты",
        "operationId": "post_retail_transactions_compat_bonusplus_retail_transactions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusTransactionFilterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusTransactionListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает единый пагинированный поток строк продаж и возвратов с устойчивыми operation/position ID, датами, рублёвыми и бонусными суммами, историческим кассовым контекстом и tenant-safe фильтрами.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 29,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/retail/bonusActivities": {
      "post": {
        "tags": [
          "BonusPlus retail compatibility"
        ],
        "summary": "Получить бонусные операции",
        "operationId": "post_retail_bonus_activities_compat_bonusplus_retail_bonusActivities_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusActivityFilterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusActivityListResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает операции бонусного ledger с устойчивыми person/purchase/store/cashier ID, историческим контекстом чека и карты, пагинацией и фильтрами phone, PersonsId, cardNumber, transactionType, creationDate и validUntil.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 30,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/account": {
      "get": {
        "tags": [
          "BonusPlus platform compatibility"
        ],
        "summary": "Получить аккаунт",
        "operationId": "get_account_compat_bonusplus_account_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusAccountResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает компанию, программу, подписку и цены каналов.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 1,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/account/filter": {
      "get": {
        "tags": [
          "BonusPlus platform compatibility"
        ],
        "summary": "Получить справочники",
        "operationId": "get_account_filter_compat_bonusplus_account_filter_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusFilterDataResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает магазины, пол, типы операций и параметры программы.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 2,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/webhook/subscriptions": {
      "get": {
        "tags": [
          "BonusPlus platform compatibility"
        ],
        "summary": "Получить webhook-подписки",
        "operationId": "get_webhook_subscriptions_compat_bonusplus_webhook_subscriptions_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/BonusPlusWebhookResponse"
                  },
                  "type": "array",
                  "title": "Response Get Webhook Subscriptions Compat Bonusplus Webhook Subscriptions Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Возвращает активные совместимые подписки.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 36,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/webhook/subscription/{subscription_id}": {
      "get": {
        "tags": [
          "BonusPlus platform compatibility"
        ],
        "summary": "Получить webhook-подписку",
        "operationId": "get_webhook_subscription_compat_bonusplus_webhook_subscription__subscription_id__get",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Subscription Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusWebhookResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Возвращает подписку текущей компании по ID.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 37,
        "x-12k-lifecycle": "active"
      },
      "delete": {
        "tags": [
          "BonusPlus platform compatibility"
        ],
        "summary": "Удалить webhook-подписку",
        "operationId": "delete_webhook_subscription_compat_bonusplus_webhook_subscription__subscription_id__delete",
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Subscription Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Деактивирует совместимую подписку.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 38,
        "x-12k-lifecycle": "active"
      }
    },
    "/compat/bonusplus/webhook/subscription": {
      "post": {
        "tags": [
          "BonusPlus platform compatibility"
        ],
        "summary": "Создать webhook-подписку",
        "operationId": "post_webhook_subscription_compat_bonusplus_webhook_subscription_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusPlusWebhookCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BonusPlusWebhookResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "BonusPlusApiKey": []
          }
        ],
        "description": "Регистрирует HTTPS webhook с HMAC, retry и dead-letter доставкой.",
        "x-12k-group": "bonusplus",
        "x-12k-status": "PARTIAL",
        "x-bonusplus-number": 39,
        "x-12k-lifecycle": "active"
      }
    }
  },
  "components": {
    "schemas": {
      "AppleLogEntriesRequest": {
        "properties": {
          "logs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Logs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "logs"
        ],
        "title": "AppleLogEntriesRequest"
      },
      "ApplePushTokenRequest": {
        "properties": {
          "pushToken": {
            "type": "string",
            "maxLength": 512,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_-]+$",
            "title": "Pushtoken"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "pushToken"
        ],
        "title": "ApplePushTokenRequest"
      },
      "AppliedCouponResponse": {
        "properties": {
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "campaignRevision": {
            "type": "integer",
            "title": "Campaignrevision"
          },
          "campaignName": {
            "type": "string",
            "title": "Campaignname"
          },
          "codeMask": {
            "type": "string",
            "title": "Codemask"
          },
          "benefit": {
            "type": "string",
            "enum": [
              "PERCENT",
              "FIXED_AMOUNT"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedamount"
          },
          "minimumSubtotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minimumsubtotal"
          },
          "discountAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountamount"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "campaignId",
          "campaignRevision",
          "campaignName",
          "codeMask",
          "benefit",
          "discountPercent",
          "fixedAmount",
          "minimumSubtotal",
          "discountAmount"
        ],
        "title": "AppliedCouponResponse"
      },
      "BarcodeResponse": {
        "properties": {
          "format": {
            "type": "string",
            "const": "QR_CODE",
            "title": "Format",
            "default": "QR_CODE"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "alternateText": {
            "type": "string",
            "title": "Alternatetext"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "message",
          "alternateText"
        ],
        "title": "BarcodeResponse"
      },
      "BonusPlusAccountResponse": {
        "properties": {
          "balance": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Balance"
          },
          "tariff": {
            "type": "string",
            "title": "Tariff"
          },
          "username": {
            "type": "string",
            "title": "Username"
          },
          "companies": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Companies"
          },
          "smsPrice": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Smsprice"
          },
          "pushPrice": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Pushprice"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "balance",
          "tariff",
          "username",
          "companies",
          "smsPrice",
          "pushPrice"
        ],
        "title": "BonusPlusAccountResponse"
      },
      "BonusPlusActivityFilterRequest": {
        "properties": {
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "PersonsId": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Personsid",
            "default": []
          },
          "cardNumber": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardnumber"
          },
          "transactionType": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transactiontype"
          },
          "startRow": {
            "type": "integer",
            "maximum": 1000000.0,
            "minimum": 0.0,
            "title": "Startrow",
            "default": 0
          },
          "rowCount": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 1.0,
            "title": "Rowcount",
            "default": 100
          },
          "sort": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort"
          },
          "creationDate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BonusPlusDateTimeInterval"
              },
              {
                "type": "null"
              }
            ]
          },
          "validUntil": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BonusPlusDateTimeInterval"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BonusPlusActivityFilterRequest"
      },
      "BonusPlusActivityListResponse": {
        "properties": {
          "bonusActivities": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusActivityResponse"
            },
            "type": "array",
            "title": "Bonusactivities"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "bonusActivities",
          "total"
        ],
        "title": "BonusPlusActivityListResponse"
      },
      "BonusPlusActivityResponse": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "personId": {
            "type": "integer",
            "title": "Personid"
          },
          "purchaseId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchaseid"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          },
          "transactionType": {
            "type": "integer",
            "title": "Transactiontype"
          },
          "receiptDate": {
            "type": "string",
            "format": "date-time",
            "title": "Receiptdate"
          },
          "validUntil": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Validuntil"
          },
          "description": {
            "type": "string",
            "title": "Description"
          },
          "level": {
            "type": "integer",
            "title": "Level"
          },
          "purchaseAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Purchaseamount"
          },
          "discountSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountsum"
          },
          "bonusDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonusdebit"
          },
          "bonusCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonuscredit"
          },
          "cardName": {
            "type": "string",
            "title": "Cardname"
          },
          "storeId": {
            "type": "integer",
            "title": "Storeid"
          },
          "cashierId": {
            "type": "integer",
            "title": "Cashierid"
          },
          "phoneNumber": {
            "type": "string",
            "title": "Phonenumber"
          },
          "remainAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Remainamount"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "purchaseNumber": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchasenumber"
          },
          "transactionName": {
            "type": "string",
            "title": "Transactionname"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "personId",
          "purchaseId",
          "amount",
          "transactionType",
          "receiptDate",
          "validUntil",
          "description",
          "level",
          "purchaseAmount",
          "discountSum",
          "bonusDebit",
          "bonusCredit",
          "cardName",
          "storeId",
          "cashierId",
          "phoneNumber",
          "remainAmount",
          "cardNumber",
          "purchaseNumber",
          "transactionName"
        ],
        "title": "BonusPlusActivityResponse"
      },
      "BonusPlusBalancePatchRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Amount"
          },
          "transactionType": {
            "type": "integer",
            "title": "Transactiontype",
            "default": 0
          },
          "activatedInDays": {
            "type": "integer",
            "maximum": 3650.0,
            "minimum": 0.0,
            "title": "Activatedindays",
            "default": 0
          },
          "burnsInDays": {
            "type": "integer",
            "maximum": 3650.0,
            "minimum": 1.0,
            "title": "Burnsindays",
            "default": 365
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "amount"
        ],
        "title": "BonusPlusBalancePatchRequest"
      },
      "BonusPlusBalancePatchResponse": {
        "properties": {
          "phoneNumber": {
            "type": "string",
            "title": "Phonenumber"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          },
          "activatedInDays": {
            "type": "integer",
            "title": "Activatedindays"
          },
          "burnsInDays": {
            "type": "integer",
            "title": "Burnsindays"
          },
          "activeBonusBalance": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Activebonusbalance"
          },
          "inactiveBonusBalance": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Inactivebonusbalance"
          },
          "level": {
            "type": "integer",
            "title": "Level"
          },
          "transactionType": {
            "type": "integer",
            "title": "Transactiontype"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phoneNumber",
          "cardNumber",
          "amount",
          "activatedInDays",
          "burnsInDays",
          "activeBonusBalance",
          "inactiveBonusBalance",
          "level",
          "transactionType"
        ],
        "title": "BonusPlusBalancePatchResponse"
      },
      "BonusPlusCancelReserveRequest": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id"
        ],
        "title": "BonusPlusCancelReserveRequest"
      },
      "BonusPlusCardDictionaryItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "issuePurchasesSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Issuepurchasessum"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "bonusCreditPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonuscreditpercent"
          },
          "bonusDebitPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonusdebitpercent"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "issuePurchasesSum",
          "discountPercent",
          "bonusCreditPercent",
          "bonusDebitPercent"
        ],
        "title": "BonusPlusCardDictionaryItem"
      },
      "BonusPlusCertificateNumberResponse": {
        "properties": {
          "number": {
            "type": "string",
            "title": "Number"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "number"
        ],
        "title": "BonusPlusCertificateNumberResponse"
      },
      "BonusPlusCertificateResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "expireDate": {
            "type": "string",
            "format": "date-time",
            "title": "Expiredate"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "currentBalance": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Currentbalance"
          },
          "initialBalance": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Initialbalance"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "expireDate",
          "status",
          "currentBalance",
          "initialBalance"
        ],
        "title": "BonusPlusCertificateResponse"
      },
      "BonusPlusCreateCertificateRequest": {
        "properties": {
          "number": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Number"
          },
          "nominal": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Nominal"
          },
          "balance": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Balance"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "title": "Expirationdate"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "nominal",
          "balance",
          "expirationDate"
        ],
        "title": "BonusPlusCreateCertificateRequest"
      },
      "BonusPlusCreateCustomerRequest": {
        "properties": {
          "parentphone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Parentphone"
          },
          "mn": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Mn"
          },
          "sex": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Sex"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 254
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "desc": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Desc"
          },
          "birthDay": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Birthday"
          },
          "profileInstagram": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileinstagram"
          },
          "profileVkontakte": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profilevkontakte"
          },
          "profileOdnoklassniki": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileodnoklassniki"
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "utmSource": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Utmsource"
          },
          "relatives": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusRelative"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Relatives",
            "default": []
          },
          "significantDates": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusSignificantDate"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Significantdates",
            "default": []
          },
          "disablePromo": {
            "type": "boolean",
            "title": "Disablepromo",
            "default": false
          },
          "storeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Storeid"
          },
          "store": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Store"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid"
          },
          "registrationSourceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Registrationsourceid"
          },
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "ean": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?:[0-9]{8}|[0-9]{13})$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ean"
          },
          "regBonus": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Regbonus",
            "default": "0.00"
          },
          "card": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Card"
          },
          "fn": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Fn"
          },
          "ln": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Ln"
          },
          "confirmed": {
            "type": "boolean",
            "title": "Confirmed",
            "default": false
          },
          "noRegNotification": {
            "type": "boolean",
            "title": "Noregnotification",
            "default": false
          },
          "creditBonuses": {
            "type": "boolean",
            "title": "Creditbonuses",
            "default": true
          },
          "smsCreditBonuses": {
            "type": "boolean",
            "title": "Smscreditbonuses",
            "default": false
          },
          "verificationChallengeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Verificationchallengeid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone"
        ],
        "title": "BonusPlusCreateCustomerRequest"
      },
      "BonusPlusCustomerListRequest": {
        "properties": {
          "startRow": {
            "type": "integer",
            "maximum": 1000000.0,
            "minimum": 0.0,
            "title": "Startrow",
            "default": 0
          },
          "rowCount": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 1.0,
            "title": "Rowcount",
            "default": 100
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BonusPlusCustomerListRequest"
      },
      "BonusPlusCustomerLoginRequest": {
        "properties": {
          "login": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Login"
          },
          "password": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Password"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "login",
          "password"
        ],
        "title": "BonusPlusCustomerLoginRequest"
      },
      "BonusPlusCustomerResponse": {
        "properties": {
          "multiplicityDebitBonus": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Multiplicitydebitbonus"
          },
          "phone": {
            "type": "string",
            "title": "Phone"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "discountCardTypeId": {
            "type": "integer",
            "title": "Discountcardtypeid"
          },
          "discountCardNumber": {
            "type": "string",
            "title": "Discountcardnumber"
          },
          "discountCardName": {
            "type": "string",
            "title": "Discountcardname"
          },
          "parentphone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parentphone"
          },
          "availableBonuses": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Availablebonuses"
          },
          "notActiveBonuses": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Notactivebonuses"
          },
          "lastPurchaseDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastpurchasedate"
          },
          "firstPurchaseDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstpurchasedate"
          },
          "totalBonusCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalbonuscredit"
          },
          "totalBonusDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalbonusdebit"
          },
          "person": {
            "$ref": "#/components/schemas/BonusPlusPersonResponse"
          },
          "purchasesTotalSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Purchasestotalsum"
          },
          "purchasesSumToNextCard": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Purchasessumtonextcard"
          },
          "nextCardName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nextcardname"
          },
          "regressEnabled": {
            "type": "boolean",
            "title": "Regressenabled"
          },
          "bonusDebitDenided": {
            "type": "boolean",
            "title": "Bonusdebitdenided"
          },
          "nearestBonusesExpirationAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Nearestbonusesexpirationamount"
          },
          "avgPurchasesTotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Avgpurchasestotal"
          },
          "nearestBonusesExpirationDate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nearestbonusesexpirationdate"
          },
          "purchasesCount": {
            "type": "integer",
            "title": "Purchasescount"
          },
          "confirmed": {
            "type": "boolean",
            "title": "Confirmed"
          },
          "inviteCode": {
            "type": "string",
            "title": "Invitecode"
          },
          "registrationSourceId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registrationsourceid"
          },
          "baseDiscountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Basediscountpercent"
          },
          "baseBonusDebitPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Basebonusdebitpercent"
          },
          "baseBonusCreditPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Basebonuscreditpercent"
          },
          "telegramBotStatus": {
            "type": "integer",
            "title": "Telegrambotstatus"
          },
          "telegramBotRegistrationDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Telegrambotregistrationdate"
          },
          "maxBotStatus": {
            "type": "integer",
            "title": "Maxbotstatus"
          },
          "maxBotRegistrationDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxbotregistrationdate"
          },
          "eCardStatusID": {
            "type": "integer",
            "title": "Ecardstatusid"
          },
          "vkStatusID": {
            "type": "integer",
            "title": "Vkstatusid"
          },
          "disableAllMessages": {
            "type": "boolean",
            "title": "Disableallmessages"
          },
          "isBlocked": {
            "type": "boolean",
            "title": "Isblocked"
          },
          "archived": {
            "type": "boolean",
            "title": "Archived"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "multiplicityDebitBonus",
          "phone",
          "id",
          "discountCardTypeId",
          "discountCardNumber",
          "discountCardName",
          "parentphone",
          "availableBonuses",
          "notActiveBonuses",
          "lastPurchaseDate",
          "firstPurchaseDate",
          "totalBonusCredit",
          "totalBonusDebit",
          "person",
          "purchasesTotalSum",
          "purchasesSumToNextCard",
          "nextCardName",
          "regressEnabled",
          "bonusDebitDenided",
          "nearestBonusesExpirationAmount",
          "avgPurchasesTotal",
          "nearestBonusesExpirationDate",
          "purchasesCount",
          "confirmed",
          "inviteCode",
          "registrationSourceId",
          "baseDiscountPercent",
          "baseBonusDebitPercent",
          "baseBonusCreditPercent",
          "telegramBotStatus",
          "telegramBotRegistrationDate",
          "maxBotStatus",
          "maxBotRegistrationDate",
          "eCardStatusID",
          "vkStatusID",
          "disableAllMessages",
          "isBlocked",
          "archived"
        ],
        "title": "BonusPlusCustomerResponse"
      },
      "BonusPlusCustomerSearchRequest": {
        "properties": {
          "search": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Search"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "search"
        ],
        "title": "BonusPlusCustomerSearchRequest"
      },
      "BonusPlusCustomerStatsResponse": {
        "properties": {
          "allCount": {
            "type": "integer",
            "title": "Allcount"
          },
          "menCount": {
            "type": "integer",
            "title": "Mencount"
          },
          "womanCount": {
            "type": "integer",
            "title": "Womancount"
          },
          "othersCount": {
            "type": "integer",
            "title": "Otherscount"
          },
          "agreedToSMSCount": {
            "type": "integer",
            "title": "Agreedtosmscount"
          },
          "notAgreedToSMSCount": {
            "type": "integer",
            "title": "Notagreedtosmscount"
          },
          "disablePromoCount": {
            "type": "integer",
            "title": "Disablepromocount"
          },
          "enablePromoCount": {
            "type": "integer",
            "title": "Enablepromocount"
          },
          "useEcardCount": {
            "type": "integer",
            "title": "Useecardcount"
          },
          "useEcardMenCount": {
            "type": "integer",
            "title": "Useecardmencount"
          },
          "useEcardWomanCount": {
            "type": "integer",
            "title": "Useecardwomancount"
          },
          "useEcardOthersCount": {
            "type": "integer",
            "title": "Useecardotherscount"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "allCount",
          "menCount",
          "womanCount",
          "othersCount",
          "agreedToSMSCount",
          "notAgreedToSMSCount",
          "disablePromoCount",
          "enablePromoCount",
          "useEcardCount",
          "useEcardMenCount",
          "useEcardWomanCount",
          "useEcardOthersCount"
        ],
        "title": "BonusPlusCustomerStatsResponse"
      },
      "BonusPlusDateTimeInterval": {
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "title": "From"
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "title": "To"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "title": "BonusPlusDateTimeInterval"
      },
      "BonusPlusDictionaryItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "title": "BonusPlusDictionaryItem"
      },
      "BonusPlusDictionaryItemResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "title": "BonusPlusDictionaryItemResponse"
      },
      "BonusPlusEcardLinkResponse": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "url"
        ],
        "title": "BonusPlusEcardLinkResponse"
      },
      "BonusPlusFilterDataResponse": {
        "properties": {
          "cashiers": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Cashiers"
          },
          "cards": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusCardDictionaryItem"
            },
            "type": "array",
            "title": "Cards"
          },
          "stores": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Stores"
          },
          "sexs": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Sexs"
          },
          "productLabels": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "productLabelsNew": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Productlabelsnew"
          },
          "personsList": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Personslist"
          },
          "templateTypes": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Templatetypes"
          },
          "finOperationTypes": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Finoperationtypes"
          },
          "bonusActivityTypes": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Bonusactivitytypes"
          },
          "registrationSources": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Registrationsources"
          },
          "segments": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Segments"
          },
          "marketingActivities": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Marketingactivities"
          },
          "activeSpecialOffers": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Activespecialoffers"
          },
          "specialOfferTags": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Specialoffertags"
          },
          "segmentsTags": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Segmentstags"
          },
          "pendingTasks": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Pendingtasks"
          },
          "significantDates": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Significantdates"
          },
          "tariffGroups": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDictionaryItem"
            },
            "type": "array",
            "title": "Tariffgroups"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "cashiers",
          "cards",
          "stores",
          "sexs",
          "productLabels",
          "productLabelsNew",
          "personsList",
          "templateTypes",
          "finOperationTypes",
          "bonusActivityTypes",
          "registrationSources",
          "segments",
          "marketingActivities",
          "activeSpecialOffers",
          "specialOfferTags",
          "segmentsTags",
          "pendingTasks",
          "significantDates",
          "tariffGroups"
        ],
        "title": "BonusPlusFilterDataResponse"
      },
      "BonusPlusGiftCardLookupRequest": {
        "properties": {
          "number": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Number"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "number"
        ],
        "title": "BonusPlusGiftCardLookupRequest"
      },
      "BonusPlusGiftCardPaymentRequest": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          },
          "paymentSum": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Paymentsum"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "paymentSum"
        ],
        "title": "BonusPlusGiftCardPaymentRequest"
      },
      "BonusPlusMessagePriceRequest": {
        "properties": {
          "type": {
            "type": "integer",
            "enum": [
              0,
              1,
              2
            ],
            "title": "Type"
          },
          "text": {
            "type": "string",
            "maxLength": 100000,
            "minLength": 1,
            "title": "Text"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "type",
          "text"
        ],
        "title": "BonusPlusMessagePriceRequest"
      },
      "BonusPlusMessagePriceResponse": {
        "properties": {
          "count": {
            "type": "integer",
            "title": "Count"
          },
          "price": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Price"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "count",
          "price"
        ],
        "title": "BonusPlusMessagePriceResponse"
      },
      "BonusPlusPatchCustomerRequest": {
        "properties": {
          "parentphone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Parentphone"
          },
          "mn": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Mn"
          },
          "sex": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Sex"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 254
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "desc": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Desc"
          },
          "birthDay": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Birthday"
          },
          "profileInstagram": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileinstagram"
          },
          "profileVkontakte": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profilevkontakte"
          },
          "profileOdnoklassniki": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileodnoklassniki"
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "utmSource": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Utmsource"
          },
          "relatives": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusRelative"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Relatives",
            "default": []
          },
          "significantDates": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusSignificantDate"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Significantdates",
            "default": []
          },
          "disablePromo": {
            "type": "boolean",
            "title": "Disablepromo",
            "default": false
          },
          "storeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Storeid"
          },
          "store": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Store"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid"
          },
          "registrationSourceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Registrationsourceid"
          },
          "newPhone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Newphone"
          },
          "cardNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardnumber"
          },
          "cardPinCode": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardpincode"
          },
          "newCard": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Newcard"
          },
          "fn": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Fn"
          },
          "ln": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Ln"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BonusPlusPatchCustomerRequest"
      },
      "BonusPlusPersonResponse": {
        "properties": {
          "fn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fn"
          },
          "ln": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ln"
          },
          "mn": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mn"
          },
          "sex": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sex"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "desc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Desc"
          },
          "birthDay": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Birthday"
          },
          "profileInstagram": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileinstagram"
          },
          "profileVkontakte": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profilevkontakte"
          },
          "profileOdnoklassniki": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileodnoklassniki"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "utmSource": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Utmsource"
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "title": "Creationdate"
          },
          "lastUpdateDate": {
            "type": "string",
            "format": "date-time",
            "title": "Lastupdatedate"
          },
          "createdInStore": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Createdinstore"
          },
          "disablePromoSMS": {
            "type": "boolean",
            "title": "Disablepromosms"
          },
          "relatives": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusRelative"
            },
            "type": "array",
            "title": "Relatives"
          },
          "significantDates": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusSignificantDate"
            },
            "type": "array",
            "title": "Significantdates"
          },
          "createdInStoreId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Createdinstoreid"
          },
          "lastOperationStoreID": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastoperationstoreid"
          },
          "createdByCashierId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Createdbycashierid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "fn",
          "ln",
          "mn",
          "sex",
          "email",
          "desc",
          "birthDay",
          "profileInstagram",
          "profileVkontakte",
          "profileOdnoklassniki",
          "address",
          "utmSource",
          "creationDate",
          "lastUpdateDate",
          "createdInStore",
          "disablePromoSMS",
          "relatives",
          "significantDates",
          "createdInStoreId",
          "lastOperationStoreID",
          "createdByCashierId"
        ],
        "title": "BonusPlusPersonResponse"
      },
      "BonusPlusProductFilterRequest": {
        "properties": {
          "store": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Store"
          },
          "parent": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent"
          },
          "startRow": {
            "type": "integer",
            "maximum": 1000000.0,
            "minimum": 0.0,
            "title": "Startrow",
            "default": 0
          },
          "rowCount": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 1.0,
            "title": "Rowcount",
            "default": 100
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BonusPlusProductFilterRequest"
      },
      "BonusPlusProductImportRequest": {
        "properties": {
          "products": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusProductTinyRequest"
            },
            "type": "array",
            "maxItems": 10000,
            "minItems": 1,
            "title": "Products"
          },
          "store": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Store"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "products",
          "store"
        ],
        "title": "BonusPlusProductImportRequest"
      },
      "BonusPlusProductListResponse": {
        "properties": {
          "products": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusProductResponse"
            },
            "type": "array",
            "title": "Products"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "products",
          "total"
        ],
        "title": "BonusPlusProductListResponse"
      },
      "BonusPlusProductResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "store": {
            "type": "integer",
            "title": "Store"
          },
          "parent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent"
          },
          "group": {
            "type": "boolean",
            "title": "Group"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "price": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Price"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "store",
          "parent",
          "group",
          "name",
          "price"
        ],
        "title": "BonusPlusProductResponse"
      },
      "BonusPlusProductSearchRequest": {
        "properties": {
          "stores": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Stores",
            "default": []
          },
          "text": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Text"
          },
          "withoutParent": {
            "type": "boolean",
            "title": "Withoutparent",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "text"
        ],
        "title": "BonusPlusProductSearchRequest"
      },
      "BonusPlusProductTinyRequest": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          },
          "pid": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Pid"
          },
          "n": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "N"
          },
          "price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Price"
          },
          "costPrice": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Costprice"
          },
          "g": {
            "type": "boolean",
            "title": "G",
            "default": false
          },
          "a": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "A"
          },
          "labels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Labels",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "n",
          "price"
        ],
        "title": "BonusPlusProductTinyRequest"
      },
      "BonusPlusPutCustomerRequest": {
        "properties": {
          "parentphone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Parentphone"
          },
          "mn": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Mn"
          },
          "sex": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Sex"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 254
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "desc": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Desc"
          },
          "birthDay": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Birthday"
          },
          "profileInstagram": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileinstagram"
          },
          "profileVkontakte": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profilevkontakte"
          },
          "profileOdnoklassniki": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Profileodnoklassniki"
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "utmSource": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Utmsource"
          },
          "relatives": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusRelative"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Relatives",
            "default": []
          },
          "significantDates": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusSignificantDate"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Significantdates",
            "default": []
          },
          "disablePromo": {
            "type": "boolean",
            "title": "Disablepromo",
            "default": false
          },
          "storeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Storeid"
          },
          "store": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Store"
          },
          "cashierId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashierid"
          },
          "registrationSourceId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Registrationsourceid"
          },
          "newPhone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Newphone"
          },
          "newCardNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Newcardnumber"
          },
          "invitationCode": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Invitationcode"
          },
          "newCard": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Newcard"
          },
          "fn": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Fn"
          },
          "ln": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Ln"
          },
          "disableAllMessages": {
            "type": "boolean",
            "title": "Disableallmessages",
            "default": false
          },
          "isBlocked": {
            "type": "boolean",
            "title": "Isblocked",
            "default": false
          },
          "archived": {
            "type": "boolean",
            "title": "Archived",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BonusPlusPutCustomerRequest"
      },
      "BonusPlusReceiptDiscountResponse": {
        "properties": {
          "ext": {
            "type": "string",
            "title": "Ext"
          },
          "messages": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Messages"
          },
          "cb": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Cb"
          },
          "db": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Db"
          },
          "ds": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Ds"
          },
          "dp": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Dp"
          },
          "ids": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Ids"
          },
          "idp": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Idp"
          },
          "dbp": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Dbp"
          },
          "cbp": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Cbp"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "ext",
          "messages",
          "cb",
          "db",
          "ds",
          "dp",
          "ids",
          "idp",
          "dbp",
          "cbp"
        ],
        "title": "BonusPlusReceiptDiscountResponse"
      },
      "BonusPlusRelative": {
        "properties": {
          "birthDay": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10
              },
              {
                "type": "null"
              }
            ],
            "title": "Birthday"
          },
          "sex": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Sex"
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "BonusPlusRelative"
      },
      "BonusPlusReserveRequest": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Amount"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "amount"
        ],
        "title": "BonusPlusReserveRequest"
      },
      "BonusPlusReserveResponse": {
        "properties": {
          "phone": {
            "type": "string",
            "title": "Phone"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone",
          "id",
          "amount"
        ],
        "title": "BonusPlusReserveResponse"
      },
      "BonusPlusRetailBackRequest": {
        "properties": {
          "ext": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Ext"
          },
          "sum": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sum"
          },
          "positionId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Positionid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "ext"
        ],
        "title": "BonusPlusRetailBackRequest"
      },
      "BonusPlusRetailBackResponse": {
        "properties": {
          "returnedPurchaseId": {
            "type": "integer",
            "title": "Returnedpurchaseid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "returnedPurchaseId"
        ],
        "title": "BonusPlusRetailBackResponse"
      },
      "BonusPlusRetailCalcRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "bonusDebit": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Bonusdebit"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusRetailItemRequest"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "Items"
          },
          "level": {
            "type": "integer",
            "title": "Level",
            "default": 0
          },
          "store": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Store"
          },
          "certificate": {
            "type": "boolean",
            "title": "Certificate",
            "default": false
          },
          "coupons": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Coupons",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone",
          "bonusDebit",
          "items"
        ],
        "title": "BonusPlusRetailCalcRequest"
      },
      "BonusPlusRetailCalcResponse": {
        "properties": {
          "discount": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusReceiptDiscountResponse"
            },
            "type": "array",
            "title": "Discount"
          },
          "maxDebitBonuses": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Maxdebitbonuses"
          },
          "multiplicityDebitBonus": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Multiplicitydebitbonus"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "discount",
          "maxDebitBonuses",
          "multiplicityDebitBonus"
        ],
        "title": "BonusPlusRetailCalcResponse"
      },
      "BonusPlusRetailItemRequest": {
        "properties": {
          "sum": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Sum"
          },
          "qnt": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,16}|(?=[\\d.]{1,21}0*$)\\d{0,16}\\.\\d{0,4}0*$)"
              }
            ],
            "title": "Qnt"
          },
          "product": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Product"
          },
          "ds": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Ds",
            "default": "0.00"
          },
          "cat": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Cat"
          },
          "label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "ext": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Ext"
          },
          "price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "firstCost": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstcost"
          },
          "costPrice": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Costprice"
          },
          "sellMode": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Sellmode"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sum",
          "qnt"
        ],
        "title": "BonusPlusRetailItemRequest"
      },
      "BonusPlusRetailRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusRetailItemRequest"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "Items"
          },
          "bonusDebit": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Bonusdebit"
          },
          "verificationChallengeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Verificationchallengeid"
          },
          "externalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Externalid"
          },
          "tags": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Tags",
            "default": []
          },
          "desc": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Desc"
          },
          "date": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ],
            "title": "Date"
          },
          "store": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Store"
          },
          "coupons": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Coupons",
            "default": []
          },
          "cashier": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cashier"
          },
          "certificate": {
            "type": "boolean",
            "title": "Certificate",
            "default": false
          },
          "reserveId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Reserveid"
          },
          "giftCards": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusGiftCardPaymentRequest"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Giftcards",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone",
          "items",
          "bonusDebit"
        ],
        "title": "BonusPlusRetailRequest"
      },
      "BonusPlusRetailResponse": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "orderUid": {
            "type": "string",
            "title": "Orderuid"
          },
          "orderUrl": {
            "type": "string",
            "title": "Orderurl"
          },
          "customer": {
            "$ref": "#/components/schemas/BonusPlusCustomerResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "orderUid",
          "orderUrl",
          "customer"
        ],
        "title": "BonusPlusRetailResponse"
      },
      "BonusPlusSaleItemResponse": {
        "properties": {
          "sum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Sum"
          },
          "totalSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalsum"
          },
          "qnt": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Qnt"
          },
          "product": {
            "type": "string",
            "title": "Product"
          },
          "productName": {
            "type": "string",
            "title": "Productname"
          },
          "discount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discount"
          },
          "bonusDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonusdebit"
          },
          "bonusCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonuscredit"
          },
          "cat": {
            "type": "string",
            "title": "Cat"
          },
          "ext": {
            "type": "string",
            "title": "Ext"
          },
          "price": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Price"
          },
          "fc": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Fc"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sum",
          "totalSum",
          "qnt",
          "product",
          "productName",
          "discount",
          "bonusDebit",
          "bonusCredit",
          "cat",
          "ext",
          "price",
          "fc"
        ],
        "title": "BonusPlusSaleItemResponse"
      },
      "BonusPlusSaleResponse": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "parentId": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parentid"
          },
          "type": {
            "type": "integer",
            "title": "Type"
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "title": "Date"
          },
          "customerPhone": {
            "type": "string",
            "title": "Customerphone"
          },
          "cashierName": {
            "type": "string",
            "title": "Cashiername"
          },
          "storeName": {
            "type": "string",
            "title": "Storename"
          },
          "storeId": {
            "type": "integer",
            "title": "Storeid"
          },
          "totalSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalsum"
          },
          "positions": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusSaleItemResponse"
            },
            "type": "array",
            "title": "Positions"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "parentId",
          "type",
          "date",
          "customerPhone",
          "cashierName",
          "storeName",
          "storeId",
          "totalSum",
          "positions"
        ],
        "title": "BonusPlusSaleResponse"
      },
      "BonusPlusSendCodeRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "variables": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Variables"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone"
        ],
        "title": "BonusPlusSendCodeRequest"
      },
      "BonusPlusSendMessageRequest": {
        "properties": {
          "message": {
            "type": "string",
            "maxLength": 4096,
            "minLength": 1,
            "title": "Message"
          },
          "route": {
            "items": {
              "type": "integer",
              "enum": [
                0,
                1,
                2,
                5,
                6,
                8
              ]
            },
            "type": "array",
            "title": "Route",
            "default": [
              0
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "message"
        ],
        "title": "BonusPlusSendMessageRequest"
      },
      "BonusPlusSignificantDate": {
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "significantDateId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Significantdateid"
          },
          "significantDateType": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Significantdatetype"
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "title": "Date"
          },
          "sex": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sex"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "date"
        ],
        "title": "BonusPlusSignificantDate"
      },
      "BonusPlusTransactionFilterRequest": {
        "properties": {
          "creationDate": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusDateTimeInterval"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Creationdate",
            "default": []
          },
          "phone": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Phone",
            "default": []
          },
          "card": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Card",
            "default": []
          },
          "cashier": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Cashier",
            "default": []
          },
          "cardNumber": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Cardnumber",
            "default": []
          },
          "store": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Store",
            "default": []
          },
          "person": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Person",
            "default": []
          },
          "externalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Externalid"
          },
          "startRow": {
            "type": "integer",
            "maximum": 1000000.0,
            "minimum": 0.0,
            "title": "Startrow",
            "default": 0
          },
          "rowCount": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 1.0,
            "title": "Rowcount",
            "default": 100
          },
          "sort": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort"
          },
          "purchaseNumber": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchasenumber"
          },
          "purchaseNumbers": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Purchasenumbers",
            "default": []
          },
          "specialOffers": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Specialoffers",
            "default": []
          },
          "fromSP": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fromsp"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "BonusPlusTransactionFilterRequest"
      },
      "BonusPlusTransactionListResponse": {
        "properties": {
          "transactions": {
            "items": {
              "$ref": "#/components/schemas/BonusPlusTransactionResponse"
            },
            "type": "array",
            "title": "Transactions"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "totalPurchaseCount": {
            "type": "integer",
            "title": "Totalpurchasecount"
          },
          "totalAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalamount"
          },
          "returnTotalAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Returntotalamount"
          },
          "totalDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totaldiscount"
          },
          "totalBonusDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalbonusdebit"
          },
          "totalBonusCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Totalbonuscredit"
          },
          "showExternalPurchaseNumber": {
            "type": "boolean",
            "title": "Showexternalpurchasenumber"
          },
          "receiptCount": {
            "type": "integer",
            "title": "Receiptcount"
          },
          "receiptSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Receiptsum"
          },
          "bonusCreditSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonuscreditsum"
          },
          "bonusDebitSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonusdebitsum"
          },
          "receiptReturnCount": {
            "type": "integer",
            "title": "Receiptreturncount"
          },
          "receiptReturnSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Receiptreturnsum"
          },
          "burnBonusCount": {
            "type": "integer",
            "title": "Burnbonuscount"
          },
          "burnBonusSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Burnbonussum"
          },
          "birthdayBonusCount": {
            "type": "integer",
            "title": "Birthdaybonuscount"
          },
          "birthdayBonusSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Birthdaybonussum"
          },
          "reanimationBonusCount": {
            "type": "integer",
            "title": "Reanimationbonuscount"
          },
          "reanimationBonusSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Reanimationbonussum"
          },
          "manualCreditBonusCount": {
            "type": "integer",
            "title": "Manualcreditbonuscount"
          },
          "manualCreditBonusSum": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Manualcreditbonussum"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "transactions",
          "total",
          "totalPurchaseCount",
          "totalAmount",
          "returnTotalAmount",
          "totalDiscount",
          "totalBonusDebit",
          "totalBonusCredit",
          "showExternalPurchaseNumber",
          "receiptCount",
          "receiptSum",
          "bonusCreditSum",
          "bonusDebitSum",
          "receiptReturnCount",
          "receiptReturnSum",
          "burnBonusCount",
          "burnBonusSum",
          "birthdayBonusCount",
          "birthdayBonusSum",
          "reanimationBonusCount",
          "reanimationBonusSum",
          "manualCreditBonusCount",
          "manualCreditBonusSum"
        ],
        "title": "BonusPlusTransactionListResponse"
      },
      "BonusPlusTransactionResponse": {
        "properties": {
          "externalPurchaseNumber": {
            "type": "integer",
            "title": "Externalpurchasenumber"
          },
          "type": {
            "type": "integer",
            "title": "Type"
          },
          "externalId": {
            "type": "string",
            "title": "Externalid"
          },
          "positionId": {
            "type": "integer",
            "title": "Positionid"
          },
          "typeName": {
            "type": "string",
            "title": "Typename"
          },
          "product": {
            "type": "string",
            "title": "Product"
          },
          "productName": {
            "type": "string",
            "title": "Productname"
          },
          "remainAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Remainamount"
          },
          "benefitInfo": {
            "type": "string",
            "title": "Benefitinfo"
          },
          "productCategory": {
            "type": "string",
            "title": "Productcategory"
          },
          "quantity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Quantity"
          },
          "saleId": {
            "type": "integer",
            "title": "Saleid"
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "title": "Date"
          },
          "purchaseAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Purchaseamount"
          },
          "payment": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Payment"
          },
          "discountAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountamount"
          },
          "bonusCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonuscredit"
          },
          "bonusDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Bonusdebit"
          },
          "cardName": {
            "type": "string",
            "title": "Cardname"
          },
          "storeId": {
            "type": "integer",
            "title": "Storeid"
          },
          "storeName": {
            "type": "string",
            "title": "Storename"
          },
          "storeAddress": {
            "type": "string",
            "title": "Storeaddress"
          },
          "cashierId": {
            "type": "integer",
            "title": "Cashierid"
          },
          "cashierName": {
            "type": "string",
            "title": "Cashiername"
          },
          "phoneNumber": {
            "type": "string",
            "title": "Phonenumber"
          },
          "cardNumber": {
            "type": "string",
            "title": "Cardnumber"
          },
          "tags": {
            "type": "string",
            "title": "Tags"
          },
          "customerFirstName": {
            "type": "string",
            "title": "Customerfirstname"
          },
          "customerLastName": {
            "type": "string",
            "title": "Customerlastname"
          },
          "customerMiddleName": {
            "type": "string",
            "title": "Customermiddlename"
          },
          "calculationUID": {
            "type": "string",
            "title": "Calculationuid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "externalPurchaseNumber",
          "type",
          "externalId",
          "positionId",
          "typeName",
          "product",
          "productName",
          "remainAmount",
          "benefitInfo",
          "productCategory",
          "quantity",
          "saleId",
          "date",
          "purchaseAmount",
          "payment",
          "discountAmount",
          "bonusCredit",
          "bonusDebit",
          "cardName",
          "storeId",
          "storeName",
          "storeAddress",
          "cashierId",
          "cashierName",
          "phoneNumber",
          "cardNumber",
          "tags",
          "customerFirstName",
          "customerLastName",
          "customerMiddleName",
          "calculationUID"
        ],
        "title": "BonusPlusTransactionResponse"
      },
      "BonusPlusWebhookCreateRequest": {
        "properties": {
          "eventId": {
            "type": "string",
            "enum": [
              "ChangeCustomerBonusBalanceEvent",
              "ChangeCustomerCardNumberEvent",
              "CreateCustomerEvent",
              "CreateSaleEvent",
              "CustomerExpireBonusEvent",
              "DeleteCustomerEvent",
              "MakePurchaseBackEvent",
              "NotifyCustomerEvent",
              "UpdateCustomerEvent",
              "sale.committed",
              "return.committed",
              "consent.changed",
              "customer.balance_changed"
            ],
            "title": "Eventid"
          },
          "url": {
            "type": "string",
            "maxLength": 2048,
            "minLength": 1,
            "format": "uri",
            "title": "Url"
          },
          "httpMethod": {
            "type": "string",
            "title": "Httpmethod",
            "default": "POST"
          },
          "contentType": {
            "type": "string",
            "title": "Contenttype",
            "default": "application/json"
          },
          "authorization": {
            "type": "string",
            "maxLength": 2048,
            "title": "Authorization",
            "default": ""
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "eventId",
          "url"
        ],
        "title": "BonusPlusWebhookCreateRequest"
      },
      "BonusPlusWebhookResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "createTime": {
            "type": "string",
            "format": "date-time",
            "title": "Createtime"
          },
          "eventId": {
            "type": "string",
            "title": "Eventid"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "httpMethod": {
            "type": "string",
            "title": "Httpmethod"
          },
          "contentType": {
            "type": "string",
            "title": "Contenttype"
          },
          "authorization": {
            "type": "string",
            "title": "Authorization"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "createTime",
          "eventId",
          "url",
          "httpMethod",
          "contentType",
          "authorization"
        ],
        "title": "BonusPlusWebhookResponse"
      },
      "CardLocationResponse": {
        "properties": {
          "storeId": {
            "type": "string",
            "title": "Storeid"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "latitude": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Latitude"
          },
          "longitude": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Longitude"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "storeId",
          "name",
          "latitude",
          "longitude"
        ],
        "title": "CardLocationResponse"
      },
      "CardTypeListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CardTypeResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "CardTypeListResponse"
      },
      "CardTypeMutationRequest": {
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "pattern": "^[A-Z0-9_]+$",
            "title": "Code"
          },
          "name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name"
          },
          "branchCode": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "pattern": "^[A-Z0-9_]+$",
            "title": "Branchcode",
            "default": "MAIN"
          },
          "cashierAssignable": {
            "type": "boolean",
            "title": "Cashierassignable",
            "default": false
          },
          "assignmentMode": {
            "type": "string",
            "enum": [
              "REGISTRATION",
              "CUMULATIVE_SPEND",
              "MANUAL"
            ],
            "title": "Assignmentmode"
          },
          "spendThreshold": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Spendthreshold",
            "default": "0.00"
          },
          "priority": {
            "type": "integer",
            "maximum": 1000000.0,
            "minimum": 0.0,
            "title": "Priority",
            "default": 0
          },
          "presentation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CardTypePresentationRequest"
              },
              {
                "type": "null"
              }
            ]
          },
          "rules": {
            "$ref": "#/components/schemas/CardTypeRulesRequest"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "code",
          "name",
          "assignmentMode",
          "rules"
        ],
        "title": "CardTypeMutationRequest"
      },
      "CardTypePresentationRequest": {
        "properties": {
          "backgroundColor": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Backgroundcolor",
            "default": "#FFFFFF"
          },
          "foregroundColor": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Foregroundcolor",
            "default": "#000000"
          },
          "labelColor": {
            "type": "string",
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Labelcolor",
            "default": "#006A44"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "CardTypePresentationRequest"
      },
      "CardTypePresentationResponse": {
        "properties": {
          "backgroundColor": {
            "type": "string",
            "title": "Backgroundcolor"
          },
          "foregroundColor": {
            "type": "string",
            "title": "Foregroundcolor"
          },
          "labelColor": {
            "type": "string",
            "title": "Labelcolor"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "backgroundColor",
          "foregroundColor",
          "labelColor"
        ],
        "title": "CardTypePresentationResponse"
      },
      "CardTypeResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "code": {
            "type": "string",
            "title": "Code"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "branchCode": {
            "type": "string",
            "title": "Branchcode"
          },
          "isDefault": {
            "type": "boolean",
            "title": "Isdefault"
          },
          "cashierAssignable": {
            "type": "boolean",
            "title": "Cashierassignable"
          },
          "assignmentMode": {
            "type": "string",
            "title": "Assignmentmode"
          },
          "spendThreshold": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Spendthreshold"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "activeVersion": {
            "$ref": "#/components/schemas/CardTypeVersionResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "code",
          "name",
          "branchCode",
          "isDefault",
          "cashierAssignable",
          "assignmentMode",
          "spendThreshold",
          "priority",
          "revision",
          "activeVersion",
          "createdAt",
          "updatedAt"
        ],
        "title": "CardTypeResponse"
      },
      "CardTypeRulesRequest": {
        "properties": {
          "accrualMode": {
            "type": "string",
            "enum": [
              "NONE",
              "PERCENT",
              "SPEND_STEP"
            ],
            "title": "Accrualmode",
            "default": "PERCENT"
          },
          "rewardRate": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1.0,
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"
              }
            ],
            "title": "Rewardrate"
          },
          "rewardStepAmount": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewardstepamount",
            "default": "0.00"
          },
          "rewardStepBonus": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewardstepbonus",
            "default": "0.00"
          },
          "maxDebitPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Maxdebitpercent"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Discountpercent",
            "default": "0.00"
          },
          "minimumRewardDebit": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Minimumrewarddebit",
            "default": "0.00"
          },
          "rewardDebitMultiplicity": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewarddebitmultiplicity",
            "default": "1.00"
          },
          "rewardActivationDelayDays": {
            "type": "integer",
            "maximum": 3650.0,
            "minimum": 0.0,
            "title": "Rewardactivationdelaydays",
            "default": 0
          },
          "rewardLifetimeDays": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 36500.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardlifetimedays",
            "default": 365
          },
          "rewardExpirationMode": {
            "$ref": "#/components/schemas/RewardExpirationMode",
            "default": "AFTER_ACCRUAL"
          },
          "registrationReward": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Registrationreward",
            "default": "0.00"
          },
          "limitsEnabled": {
            "type": "boolean",
            "title": "Limitsenabled",
            "default": false
          },
          "maxRewardDebitPer24Hours": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxrewarddebitper24Hours"
          },
          "maxPurchasesPerDay": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1000000.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxpurchasesperday"
          },
          "maxPurchasesPerMonth": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10000000.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxpurchasespermonth"
          },
          "disableRewardCreditOnDebit": {
            "type": "boolean",
            "title": "Disablerewardcreditondebit",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "rewardRate",
          "maxDebitPercent"
        ],
        "title": "CardTypeRulesRequest"
      },
      "CardTypeRulesResponse": {
        "properties": {
          "accrualMode": {
            "type": "string",
            "title": "Accrualmode"
          },
          "rewardRate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardrate"
          },
          "rewardStepAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardstepamount"
          },
          "rewardStepBonus": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardstepbonus"
          },
          "maxDebitPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Maxdebitpercent"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "minimumRewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minimumrewarddebit"
          },
          "rewardDebitMultiplicity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewarddebitmultiplicity"
          },
          "rewardActivationDelayDays": {
            "type": "integer",
            "title": "Rewardactivationdelaydays"
          },
          "rewardLifetimeDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardlifetimedays"
          },
          "rewardExpirationMode": {
            "$ref": "#/components/schemas/RewardExpirationMode"
          },
          "registrationReward": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Registrationreward"
          },
          "limitsEnabled": {
            "type": "boolean",
            "title": "Limitsenabled"
          },
          "maxRewardDebitPer24Hours": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxrewarddebitper24Hours"
          },
          "maxPurchasesPerDay": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxpurchasesperday"
          },
          "maxPurchasesPerMonth": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxpurchasespermonth"
          },
          "disableRewardCreditOnDebit": {
            "type": "boolean",
            "title": "Disablerewardcreditondebit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "accrualMode",
          "rewardRate",
          "rewardStepAmount",
          "rewardStepBonus",
          "maxDebitPercent",
          "discountPercent",
          "minimumRewardDebit",
          "rewardDebitMultiplicity",
          "rewardActivationDelayDays",
          "rewardLifetimeDays",
          "rewardExpirationMode",
          "registrationReward",
          "limitsEnabled",
          "maxRewardDebitPer24Hours",
          "maxPurchasesPerDay",
          "maxPurchasesPerMonth",
          "disableRewardCreditOnDebit"
        ],
        "title": "CardTypeRulesResponse"
      },
      "CardTypeVersionResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "rules": {
            "$ref": "#/components/schemas/CardTypeRulesResponse"
          },
          "presentation": {
            "$ref": "#/components/schemas/CardTypePresentationResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "activatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Activatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "version",
          "status",
          "rules",
          "presentation",
          "createdAt",
          "activatedAt"
        ],
        "title": "CardTypeVersionResponse"
      },
      "CashierListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CashierResponse"
            },
            "type": "array",
            "title": "Data"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data",
          "pagination"
        ],
        "title": "CashierListResponse"
      },
      "CashierResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "externalId": {
            "type": "string",
            "title": "Externalid"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "displayName": {
            "type": "string",
            "title": "Displayname"
          },
          "roleExternalId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Roleexternalid"
          },
          "roleTitle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Roletitle"
          },
          "position": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          },
          "firstSeenAt": {
            "type": "string",
            "format": "date-time",
            "title": "Firstseenat"
          },
          "lastSeenAt": {
            "type": "string",
            "format": "date-time",
            "title": "Lastseenat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "externalId",
          "firstName",
          "lastName",
          "displayName",
          "roleExternalId",
          "roleTitle",
          "position",
          "firstSeenAt",
          "lastSeenAt"
        ],
        "title": "CashierResponse"
      },
      "CatalogSyncProductRequest": {
        "properties": {
          "externalId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Externalid"
          },
          "parentExternalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Parentexternalid"
          },
          "name": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Name"
          },
          "price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Price"
          },
          "costPrice": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Costprice"
          },
          "isGroup": {
            "type": "boolean",
            "title": "Isgroup",
            "default": false
          },
          "article": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Article"
          },
          "labels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Labels",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "externalId",
          "name",
          "price"
        ],
        "title": "CatalogSyncProductRequest"
      },
      "CatalogSyncRequest": {
        "properties": {
          "storeId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Storeid"
          },
          "sourceRevision": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Sourcerevision"
          },
          "allowEmpty": {
            "type": "boolean",
            "title": "Allowempty",
            "default": false
          },
          "products": {
            "items": {
              "$ref": "#/components/schemas/CatalogSyncProductRequest"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Products"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "storeId",
          "sourceRevision",
          "products"
        ],
        "title": "CatalogSyncRequest"
      },
      "CatalogSyncResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "storeId": {
            "type": "string",
            "title": "Storeid"
          },
          "storeName": {
            "type": "string",
            "title": "Storename"
          },
          "sourceSystem": {
            "type": "string",
            "title": "Sourcesystem"
          },
          "sourceRevision": {
            "type": "string",
            "title": "Sourcerevision"
          },
          "productCount": {
            "type": "integer",
            "title": "Productcount"
          },
          "groupCount": {
            "type": "integer",
            "title": "Groupcount"
          },
          "labelCount": {
            "type": "integer",
            "title": "Labelcount"
          },
          "removedProductCount": {
            "type": "integer",
            "title": "Removedproductcount"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Completedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "storeId",
          "storeName",
          "sourceSystem",
          "sourceRevision",
          "productCount",
          "groupCount",
          "labelCount",
          "removedProductCount",
          "completedAt"
        ],
        "title": "CatalogSyncResponse"
      },
      "CheckoutSessionResponse": {
        "properties": {
          "sessionId": {
            "type": "string",
            "title": "Sessionid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sessionId",
          "status"
        ],
        "title": "CheckoutSessionResponse"
      },
      "CommitSaleRequest": {
        "properties": {
          "quoteId": {
            "type": "string",
            "title": "Quoteid"
          },
          "holdId": {
            "type": "string",
            "title": "Holdid"
          },
          "externalReceiptId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Externalreceiptid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "quoteId",
          "holdId",
          "externalReceiptId"
        ],
        "title": "CommitSaleRequest"
      },
      "CompanyResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "createdAt"
        ],
        "title": "CompanyResponse"
      },
      "ConfirmVerificationRequest": {
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "title": "Code"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "code"
        ],
        "title": "ConfirmVerificationRequest"
      },
      "ConsentDocumentListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ConsentDocumentResponse"
            },
            "type": "array",
            "title": "Data"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data"
        ],
        "title": "ConsentDocumentListResponse"
      },
      "ConsentDocumentResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "purpose": {
            "type": "string",
            "title": "Purpose"
          },
          "version": {
            "type": "string",
            "title": "Version"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "bodyHash": {
            "type": "string",
            "title": "Bodyhash"
          },
          "requiresVerification": {
            "type": "boolean",
            "title": "Requiresverification"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "effectiveAt": {
            "type": "string",
            "format": "date-time",
            "title": "Effectiveat"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "purpose",
          "version",
          "title",
          "body",
          "bodyHash",
          "requiresVerification",
          "isActive",
          "effectiveAt",
          "createdAt"
        ],
        "title": "ConsentDocumentResponse"
      },
      "ConsentEvidenceResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "customerId": {
            "type": "string",
            "title": "Customerid"
          },
          "documentId": {
            "type": "string",
            "title": "Documentid"
          },
          "purpose": {
            "type": "string",
            "title": "Purpose"
          },
          "version": {
            "type": "string",
            "title": "Version"
          },
          "action": {
            "type": "string",
            "title": "Action"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "evidenceHash": {
            "type": "string",
            "title": "Evidencehash"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time",
            "title": "Occurredat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "customerId",
          "documentId",
          "purpose",
          "version",
          "action",
          "source",
          "evidenceHash",
          "occurredAt"
        ],
        "title": "ConsentEvidenceResponse"
      },
      "ConsentListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ConsentEvidenceResponse"
            },
            "type": "array",
            "title": "Data"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data"
        ],
        "title": "ConsentListResponse"
      },
      "CouponCampaignAuditListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CouponCampaignAuditResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "CouponCampaignAuditListResponse"
      },
      "CouponCampaignAuditResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "actorType": {
            "type": "string",
            "enum": [
              "PORTAL_USER",
              "API_CREDENTIAL"
            ],
            "title": "Actortype"
          },
          "actorId": {
            "type": "string",
            "title": "Actorid"
          },
          "action": {
            "type": "string",
            "enum": [
              "CREATED",
              "UPDATED"
            ],
            "title": "Action"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "before": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CouponCampaignSnapshotResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "$ref": "#/components/schemas/CouponCampaignSnapshotResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "actorType",
          "actorId",
          "action",
          "revision",
          "before",
          "after",
          "createdAt"
        ],
        "title": "CouponCampaignAuditResponse"
      },
      "CouponCampaignListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CouponCampaignResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "CouponCampaignListResponse"
      },
      "CouponCampaignMutationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive",
            "default": false
          },
          "priority": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 0.0,
            "title": "Priority",
            "default": 100
          },
          "benefit": {
            "type": "string",
            "enum": [
              "PERCENT",
              "FIXED_AMOUNT"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedAmount": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedamount"
          },
          "minimumSubtotal": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Minimumsubtotal",
            "default": "0.00"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time",
            "title": "Startsat"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time",
            "title": "Endsat"
          },
          "maxRedemptionsTotal": {
            "type": "integer",
            "maximum": 2147483647.0,
            "minimum": 1.0,
            "title": "Maxredemptionstotal"
          },
          "maxRedemptionsPerCode": {
            "type": "integer",
            "maximum": 2147483647.0,
            "minimum": 1.0,
            "title": "Maxredemptionspercode"
          },
          "maxRedemptionsPerCustomer": {
            "type": "integer",
            "maximum": 2147483647.0,
            "minimum": 1.0,
            "title": "Maxredemptionspercustomer"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "benefit",
          "startsAt",
          "endsAt",
          "maxRedemptionsTotal",
          "maxRedemptionsPerCode",
          "maxRedemptionsPerCustomer"
        ],
        "title": "CouponCampaignMutationRequest"
      },
      "CouponCampaignResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "benefit": {
            "type": "string",
            "enum": [
              "PERCENT",
              "FIXED_AMOUNT"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedamount"
          },
          "minimumSubtotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minimumsubtotal"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time",
            "title": "Startsat"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time",
            "title": "Endsat"
          },
          "maxRedemptionsTotal": {
            "type": "integer",
            "title": "Maxredemptionstotal"
          },
          "maxRedemptionsPerCode": {
            "type": "integer",
            "title": "Maxredemptionspercode"
          },
          "maxRedemptionsPerCustomer": {
            "type": "integer",
            "title": "Maxredemptionspercustomer"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "isActive",
          "priority",
          "benefit",
          "discountPercent",
          "fixedAmount",
          "minimumSubtotal",
          "startsAt",
          "endsAt",
          "maxRedemptionsTotal",
          "maxRedemptionsPerCode",
          "maxRedemptionsPerCustomer",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "title": "CouponCampaignResponse"
      },
      "CouponCampaignSnapshotResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "benefit": {
            "type": "string",
            "enum": [
              "PERCENT",
              "FIXED_AMOUNT"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedamount"
          },
          "minimumSubtotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minimumsubtotal"
          },
          "startsAt": {
            "type": "string",
            "format": "date-time",
            "title": "Startsat"
          },
          "endsAt": {
            "type": "string",
            "format": "date-time",
            "title": "Endsat"
          },
          "maxRedemptionsTotal": {
            "type": "integer",
            "title": "Maxredemptionstotal"
          },
          "maxRedemptionsPerCode": {
            "type": "integer",
            "title": "Maxredemptionspercode"
          },
          "maxRedemptionsPerCustomer": {
            "type": "integer",
            "title": "Maxredemptionspercustomer"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "isActive",
          "priority",
          "benefit",
          "discountPercent",
          "fixedAmount",
          "minimumSubtotal",
          "startsAt",
          "endsAt",
          "maxRedemptionsTotal",
          "maxRedemptionsPerCode",
          "maxRedemptionsPerCustomer",
          "revision"
        ],
        "title": "CouponCampaignSnapshotResponse"
      },
      "CouponCodeBatchRequest": {
        "properties": {
          "quantity": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 1.0,
            "title": "Quantity"
          },
          "prefix": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 8,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Prefix"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "quantity"
        ],
        "title": "CouponCodeBatchRequest"
      },
      "CouponCodeBatchResponse": {
        "properties": {
          "batchId": {
            "type": "string",
            "title": "Batchid"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "quantity": {
            "type": "integer",
            "title": "Quantity"
          },
          "prefix": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prefix"
          },
          "codes": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/IssuedCouponCodeResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Codes"
          },
          "isReplay": {
            "type": "boolean",
            "title": "Isreplay"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "batchId",
          "campaignId",
          "quantity",
          "prefix",
          "codes",
          "isReplay",
          "createdAt"
        ],
        "title": "CouponCodeBatchResponse"
      },
      "CouponCodeListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CouponCodeResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "CouponCodeListResponse"
      },
      "CouponCodeResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "batchId": {
            "type": "string",
            "title": "Batchid"
          },
          "mask": {
            "type": "string",
            "title": "Mask"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "REVOKED"
            ],
            "title": "Status"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "revokedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revokedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "batchId",
          "mask",
          "status",
          "createdAt",
          "revokedAt"
        ],
        "title": "CouponCodeResponse"
      },
      "CreateCheckoutSessionRequest": {
        "properties": {
          "customerId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 1,
            "title": "Customerid"
          },
          "sourceSystem": {
            "type": "string",
            "const": "EVOTOR",
            "title": "Sourcesystem"
          },
          "externalSessionId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Externalsessionid"
          },
          "cashier": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EvotorCashierRequest"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "customerId",
          "sourceSystem"
        ],
        "title": "CreateCheckoutSessionRequest"
      },
      "CreateConsentDocumentRequest": {
        "properties": {
          "purpose": {
            "type": "string",
            "enum": [
              "TERMS",
              "PERSONAL_DATA",
              "MARKETING",
              "E_RECEIPT"
            ],
            "title": "Purpose"
          },
          "version": {
            "type": "string",
            "maxLength": 32,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9._-]+$",
            "title": "Version"
          },
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title"
          },
          "body": {
            "type": "string",
            "maxLength": 100000,
            "minLength": 1,
            "title": "Body"
          },
          "requiresVerification": {
            "type": "boolean",
            "title": "Requiresverification",
            "default": true
          },
          "effectiveAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Effectiveat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "purpose",
          "version",
          "title",
          "body"
        ],
        "title": "CreateConsentDocumentRequest"
      },
      "CreateCredentialRequest": {
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Label"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "uniqueItems": true,
            "title": "Scopes"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "label",
          "scopes"
        ],
        "title": "CreateCredentialRequest"
      },
      "CreateCustomerRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "verificationChallengeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Verificationchallengeid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone"
        ],
        "title": "CreateCustomerRequest"
      },
      "CreateHoldRequest": {
        "properties": {
          "quoteId": {
            "type": "string",
            "title": "Quoteid"
          },
          "verificationChallengeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Verificationchallengeid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "quoteId"
        ],
        "title": "CreateHoldRequest"
      },
      "CreatePolicyRequest": {
        "properties": {
          "rewardRate": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1.0,
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,8}0*$)\\d{0,3}\\.\\d{0,4}0*$)"
              }
            ],
            "title": "Rewardrate"
          },
          "maxDebitPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Maxdebitpercent"
          },
          "pointsPerRuble": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Pointsperruble",
            "default": "1.00"
          },
          "accrualMode": {
            "type": "string",
            "enum": [
              "NONE",
              "PERCENT",
              "SPEND_STEP"
            ],
            "title": "Accrualmode",
            "default": "PERCENT"
          },
          "rewardStepAmount": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewardstepamount",
            "default": "0.00"
          },
          "rewardStepBonus": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewardstepbonus",
            "default": "0.00"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Discountpercent",
            "default": "0.00"
          },
          "minimumRewardDebit": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Minimumrewarddebit",
            "default": "0.00"
          },
          "rewardDebitMultiplicity": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewarddebitmultiplicity",
            "default": "1.00"
          },
          "rewardCreditBase": {
            "type": "string",
            "enum": [
              "GROSS",
              "PAYABLE"
            ],
            "title": "Rewardcreditbase",
            "default": "GROSS"
          },
          "rewardRoundingMode": {
            "type": "string",
            "enum": [
              "NONE",
              "MATHEMATICAL",
              "DOWN"
            ],
            "title": "Rewardroundingmode",
            "default": "NONE"
          },
          "requireRegistrationVerification": {
            "type": "boolean",
            "title": "Requireregistrationverification",
            "default": false
          },
          "requireRedemptionVerification": {
            "type": "boolean",
            "title": "Requireredemptionverification",
            "default": false
          },
          "disableRewardCreditOnDebit": {
            "type": "boolean",
            "title": "Disablerewardcreditondebit",
            "default": false
          },
          "disableInternalDiscountOnDebit": {
            "type": "boolean",
            "title": "Disableinternaldiscountondebit",
            "default": false
          },
          "disableInternalDiscountOnExternal": {
            "type": "boolean",
            "title": "Disableinternaldiscountonexternal",
            "default": false
          },
          "disableRewardCreditOnExternal": {
            "type": "boolean",
            "title": "Disablerewardcreditonexternal",
            "default": false
          },
          "disableRewardDebitOnExternal": {
            "type": "boolean",
            "title": "Disablerewarddebitonexternal",
            "default": false
          },
          "rewardActivationDelayDays": {
            "type": "integer",
            "maximum": 3650.0,
            "minimum": 0.0,
            "title": "Rewardactivationdelaydays",
            "default": 0
          },
          "rewardLifetimeDays": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 36500.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardlifetimedays",
            "default": 365
          },
          "rewardExpirationMode": {
            "$ref": "#/components/schemas/RewardExpirationMode",
            "default": "AFTER_ACCRUAL"
          },
          "cardRegressionEnabled": {
            "type": "boolean",
            "title": "Cardregressionenabled",
            "default": false
          },
          "cardRegressionDates": {
            "items": {
              "type": "string",
              "pattern": "^\\d{2}\\.\\d{2}$"
            },
            "type": "array",
            "maxItems": 366,
            "title": "Cardregressiondates"
          },
          "cardRegressionTime": {
            "type": "string",
            "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
            "title": "Cardregressiontime",
            "default": "00:00"
          },
          "cardRegressionWindowMonths": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 120.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardregressionwindowmonths"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "rewardRate",
          "maxDebitPercent"
        ],
        "title": "CreatePolicyRequest"
      },
      "CreateQuoteRequest": {
        "properties": {
          "requestedRewardDebit": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Requestedrewarddebit"
          },
          "couponCode": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 6
              },
              {
                "type": "null"
              }
            ],
            "title": "Couponcode"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/QuoteLineRequest"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "Lines"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "requestedRewardDebit",
          "lines"
        ],
        "title": "CreateQuoteRequest"
      },
      "CreateReturnRequest": {
        "properties": {
          "externalReturnId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Externalreturnid"
          },
          "lines": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ReturnLineRequest"
                },
                "type": "array",
                "maxItems": 1000,
                "minItems": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Lines"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "externalReturnId"
        ],
        "title": "CreateReturnRequest"
      },
      "CreateStoreRequest": {
        "properties": {
          "cityId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Cityid"
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "externalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Externalid"
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 90.0,
                "minimum": -90.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d{0,6}0*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 180.0,
                "minimum": -180.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d{0,6}0*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CreateStoreRequest"
      },
      "CreateTerminalRequest": {
        "properties": {
          "storeId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Storeid"
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "sourceSystem": {
            "type": "string",
            "const": "EVOTOR",
            "title": "Sourcesystem"
          },
          "externalId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Externalid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "storeId",
          "name",
          "sourceSystem",
          "externalId"
        ],
        "title": "CreateTerminalRequest"
      },
      "CreateWebhookRequest": {
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Label"
          },
          "url": {
            "type": "string",
            "maxLength": 2048,
            "minLength": 1,
            "format": "uri",
            "title": "Url"
          },
          "eventTypes": {
            "items": {
              "type": "string",
              "enum": [
                "sale.committed",
                "return.committed",
                "consent.changed",
                "customer.bonus_expiring"
              ]
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "uniqueItems": true,
            "title": "Eventtypes"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "label",
          "url",
          "eventTypes"
        ],
        "title": "CreateWebhookRequest"
      },
      "CredentialListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CredentialResponse"
            },
            "type": "array",
            "title": "Data"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CredentialListResponse"
      },
      "CredentialResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "keyPrefix": {
            "type": "string",
            "title": "Keyprefix"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "expiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresat"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "revokedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revokedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "label",
          "keyPrefix",
          "scopes",
          "expiresAt",
          "createdAt",
          "revokedAt"
        ],
        "title": "CredentialResponse"
      },
      "CustomerCardTypeAssignmentRequest": {
        "properties": {
          "cardTypeId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Cardtypeid"
          },
          "automaticProgressionEnabled": {
            "type": "boolean",
            "title": "Automaticprogressionenabled",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "cardTypeId"
        ],
        "title": "CustomerCardTypeAssignmentRequest"
      },
      "CustomerCardTypeAssignmentResponse": {
        "properties": {
          "customerId": {
            "type": "string",
            "title": "Customerid"
          },
          "membershipId": {
            "type": "string",
            "title": "Membershipid"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "automaticProgressionEnabled": {
            "type": "boolean",
            "title": "Automaticprogressionenabled"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Assignedat"
          },
          "cardType": {
            "$ref": "#/components/schemas/CardTypeResponse"
          },
          "progress": {
            "$ref": "#/components/schemas/LoyaltyProgressResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "customerId",
          "membershipId",
          "source",
          "automaticProgressionEnabled",
          "revision",
          "assignedAt",
          "cardType",
          "progress"
        ],
        "title": "CustomerCardTypeAssignmentResponse"
      },
      "CustomerDirectoryResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CustomerResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "CustomerDirectoryResponse"
      },
      "CustomerResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone": {
            "type": "string",
            "title": "Phone"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "confirmed": {
            "type": "boolean",
            "title": "Confirmed"
          },
          "membershipId": {
            "type": "string",
            "title": "Membershipid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "rewardAccount": {
            "$ref": "#/components/schemas/RewardAccountResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "phone",
          "firstName",
          "lastName",
          "confirmed",
          "membershipId",
          "createdAt",
          "rewardAccount"
        ],
        "title": "CustomerResponse"
      },
      "EvotorCashierRequest": {
        "properties": {
          "externalId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Externalid"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "roleExternalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Roleexternalid"
          },
          "roleTitle": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Roletitle"
          },
          "position": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Position"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "externalId"
        ],
        "title": "EvotorCashierRequest"
      },
      "FeedbackOperatorReplyResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "actorName": {
            "type": "string",
            "title": "Actorname"
          },
          "supportConversationId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Supportconversationid"
          },
          "deliveryChannel": {
            "anyOf": [
              {
                "type": "string",
                "const": "CUSTOMER_PORTAL"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverychannel"
          },
          "deliveryStatus": {
            "anyOf": [
              {
                "type": "string",
                "const": "DELIVERED"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliverystatus"
          },
          "deliveredAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deliveredat"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "message",
          "actorName",
          "supportConversationId",
          "deliveryChannel",
          "deliveryStatus",
          "deliveredAt",
          "createdAt"
        ],
        "title": "FeedbackOperatorReplyResponse"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HoldResponse": {
        "properties": {
          "holdId": {
            "type": "string",
            "title": "Holdid"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "holdId",
          "amount",
          "status",
          "expiresAt"
        ],
        "title": "HoldResponse"
      },
      "IssuedCouponCodeResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "code": {
            "type": "string",
            "title": "Code"
          },
          "mask": {
            "type": "string",
            "title": "Mask"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "code",
          "mask"
        ],
        "title": "IssuedCouponCodeResponse"
      },
      "IssuedCredentialResponse": {
        "properties": {
          "credential": {
            "$ref": "#/components/schemas/CredentialResponse"
          },
          "apiKey": {
            "type": "string",
            "title": "Apikey"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "credential",
          "apiKey"
        ],
        "title": "IssuedCredentialResponse"
      },
      "IssuedWebhookResponse": {
        "properties": {
          "endpoint": {
            "$ref": "#/components/schemas/WebhookEndpointResponse"
          },
          "signingSecret": {
            "type": "string",
            "title": "Signingsecret"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "endpoint",
          "signingSecret"
        ],
        "title": "IssuedWebhookResponse"
      },
      "LoyaltyProgressResponse": {
        "properties": {
          "cumulativeSpend": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Cumulativespend"
          },
          "purchaseCount": {
            "type": "integer",
            "title": "Purchasecount"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "cumulativeSpend",
          "purchaseCount",
          "updatedAt"
        ],
        "title": "LoyaltyProgressResponse"
      },
      "MembershipCardArtworkResponse": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          },
          "digest": {
            "type": "string",
            "title": "Digest"
          },
          "width": {
            "type": "integer",
            "title": "Width"
          },
          "height": {
            "type": "integer",
            "title": "Height"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "url",
          "digest",
          "width",
          "height"
        ],
        "title": "MembershipCardArtworkResponse"
      },
      "MembershipCardPresentationResponse": {
        "properties": {
          "cardTypeId": {
            "type": "string",
            "title": "Cardtypeid"
          },
          "cardTypeVersionId": {
            "type": "string",
            "title": "Cardtypeversionid"
          },
          "presentationVersion": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Presentationversion"
          },
          "backgroundColor": {
            "type": "string",
            "title": "Backgroundcolor"
          },
          "foregroundColor": {
            "type": "string",
            "title": "Foregroundcolor"
          },
          "labelColor": {
            "type": "string",
            "title": "Labelcolor"
          },
          "logo": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MembershipCardArtworkResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "background": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MembershipCardArtworkResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "cardTypeId",
          "cardTypeVersionId",
          "presentationVersion",
          "backgroundColor",
          "foregroundColor",
          "labelColor",
          "logo",
          "background"
        ],
        "title": "MembershipCardPresentationResponse"
      },
      "MembershipCardResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "serialNumber": {
            "type": "string",
            "title": "Serialnumber"
          },
          "barcode": {
            "$ref": "#/components/schemas/BarcodeResponse"
          },
          "physicalBarcode": {
            "$ref": "#/components/schemas/PhysicalBarcodeResponse"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/CardLocationResponse"
            },
            "type": "array",
            "title": "Locations"
          },
          "wallets": {
            "$ref": "#/components/schemas/WalletsResponse"
          },
          "presentation": {
            "$ref": "#/components/schemas/MembershipCardPresentationResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "serialNumber",
          "barcode",
          "physicalBarcode",
          "locations",
          "wallets",
          "presentation",
          "createdAt",
          "updatedAt"
        ],
        "title": "MembershipCardResponse"
      },
      "NthPurchaseCampaignAuditListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NthPurchaseCampaignAuditResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "NthPurchaseCampaignAuditListResponse"
      },
      "NthPurchaseCampaignAuditResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "actorType": {
            "type": "string",
            "enum": [
              "PORTAL_USER",
              "API_CREDENTIAL"
            ],
            "title": "Actortype"
          },
          "actorId": {
            "type": "string",
            "title": "Actorid"
          },
          "action": {
            "type": "string",
            "enum": [
              "CREATED",
              "UPDATED"
            ],
            "title": "Action"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "before": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NthPurchaseCampaignSnapshotResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "$ref": "#/components/schemas/NthPurchaseCampaignSnapshotResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "actorType",
          "actorId",
          "action",
          "revision",
          "before",
          "after",
          "createdAt"
        ],
        "title": "NthPurchaseCampaignAuditResponse"
      },
      "NthPurchaseCampaignListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NthPurchaseCampaignResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "NthPurchaseCampaignListResponse"
      },
      "NthPurchaseCampaignMutationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive",
            "default": true
          },
          "priority": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 0.0,
            "title": "Priority",
            "default": 100
          },
          "purchaseNumber": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 1.0,
            "title": "Purchasenumber"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Discountpercent"
          },
          "weekdays": {
            "items": {
              "type": "integer",
              "maximum": 6.0,
              "minimum": 0.0
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 1,
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "includedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Includedproductexternalids",
            "default": []
          },
          "excludedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Excludedproductexternalids",
            "default": []
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Productlabels",
            "default": []
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Storeids",
            "default": []
          },
          "cardTypeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Cardtypeids",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "purchaseNumber",
          "discountPercent",
          "weekdays",
          "localStartTime",
          "localEndTime"
        ],
        "title": "NthPurchaseCampaignMutationRequest"
      },
      "NthPurchaseCampaignResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "purchaseNumber": {
            "type": "integer",
            "title": "Purchasenumber"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "includedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Includedproductexternalids"
          },
          "excludedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Excludedproductexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "cardTypeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cardtypeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "isActive",
          "priority",
          "purchaseNumber",
          "discountPercent",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "includedProductExternalIds",
          "excludedProductExternalIds",
          "productLabels",
          "storeIds",
          "cardTypeIds",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "title": "NthPurchaseCampaignResponse"
      },
      "NthPurchaseCampaignSnapshotResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "purchaseNumber": {
            "type": "integer",
            "title": "Purchasenumber"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "includedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Includedproductexternalids"
          },
          "excludedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Excludedproductexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "cardTypeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cardtypeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "isActive",
          "priority",
          "purchaseNumber",
          "discountPercent",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "includedProductExternalIds",
          "excludedProductExternalIds",
          "productLabels",
          "storeIds",
          "cardTypeIds",
          "revision"
        ],
        "title": "NthPurchaseCampaignSnapshotResponse"
      },
      "NthUnitCampaignAuditListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NthUnitCampaignAuditResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "NthUnitCampaignAuditListResponse"
      },
      "NthUnitCampaignAuditResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "actorType": {
            "type": "string",
            "enum": [
              "PORTAL_USER",
              "API_CREDENTIAL"
            ],
            "title": "Actortype"
          },
          "actorId": {
            "type": "string",
            "title": "Actorid"
          },
          "action": {
            "type": "string",
            "enum": [
              "CREATED",
              "UPDATED"
            ],
            "title": "Action"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "before": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NthUnitCampaignSnapshotResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "$ref": "#/components/schemas/NthUnitCampaignSnapshotResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "actorType",
          "actorId",
          "action",
          "revision",
          "before",
          "after",
          "createdAt"
        ],
        "title": "NthUnitCampaignAuditResponse"
      },
      "NthUnitCampaignListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/NthUnitCampaignResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "NthUnitCampaignListResponse"
      },
      "NthUnitCampaignMutationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive",
            "default": true
          },
          "priority": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 0.0,
            "title": "Priority",
            "default": 100
          },
          "cycleSize": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 2.0,
            "title": "Cyclesize"
          },
          "discountedUnits": {
            "type": "integer",
            "maximum": 999.0,
            "minimum": 1.0,
            "title": "Discountedunits"
          },
          "benefit": {
            "type": "string",
            "enum": [
              "FREE",
              "PERCENT",
              "FIXED_PRICE"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedUnitPrice": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,15}0*$)\\d{0,12}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedunitprice"
          },
          "weekdays": {
            "items": {
              "type": "integer",
              "maximum": 6.0,
              "minimum": 0.0
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 1,
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Productexternalids",
            "default": []
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Productlabels",
            "default": []
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Storeids",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "cycleSize",
          "discountedUnits",
          "benefit",
          "weekdays",
          "localStartTime",
          "localEndTime"
        ],
        "title": "NthUnitCampaignMutationRequest"
      },
      "NthUnitCampaignResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "cycleSize": {
            "type": "integer",
            "title": "Cyclesize"
          },
          "discountedUnits": {
            "type": "integer",
            "title": "Discountedunits"
          },
          "benefit": {
            "type": "string",
            "enum": [
              "FREE",
              "PERCENT",
              "FIXED_PRICE"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedUnitPrice": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedunitprice"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "isActive",
          "priority",
          "cycleSize",
          "discountedUnits",
          "benefit",
          "discountPercent",
          "fixedUnitPrice",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "productExternalIds",
          "productLabels",
          "storeIds",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "title": "NthUnitCampaignResponse"
      },
      "NthUnitCampaignSnapshotResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "cycleSize": {
            "type": "integer",
            "title": "Cyclesize"
          },
          "discountedUnits": {
            "type": "integer",
            "title": "Discountedunits"
          },
          "benefit": {
            "type": "string",
            "enum": [
              "FREE",
              "PERCENT",
              "FIXED_PRICE"
            ],
            "title": "Benefit"
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Discountpercent"
          },
          "fixedUnitPrice": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fixedunitprice"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "isActive",
          "priority",
          "cycleSize",
          "discountedUnits",
          "benefit",
          "discountPercent",
          "fixedUnitPrice",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "productExternalIds",
          "productLabels",
          "storeIds",
          "revision"
        ],
        "title": "NthUnitCampaignSnapshotResponse"
      },
      "PaginationResponse": {
        "properties": {
          "page": {
            "type": "integer",
            "title": "Page"
          },
          "pageSize": {
            "type": "integer",
            "title": "Pagesize"
          },
          "totalItems": {
            "type": "integer",
            "title": "Totalitems"
          },
          "totalPages": {
            "type": "integer",
            "title": "Totalpages"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "totalItems",
          "totalPages"
        ],
        "title": "PaginationResponse"
      },
      "PhysicalBarcodeResponse": {
        "properties": {
          "format": {
            "type": "string",
            "enum": [
              "CODE128",
              "EAN13",
              "QR"
            ],
            "title": "Format"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "alternateText": {
            "type": "string",
            "title": "Alternatetext"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "format",
          "message",
          "alternateText"
        ],
        "title": "PhysicalBarcodeResponse"
      },
      "PlaceDirectoryCityResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "slug": {
            "type": "string",
            "title": "Slug"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "mapImageUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mapimageurl"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "stores": {
            "items": {
              "$ref": "#/components/schemas/PlaceDirectoryStoreResponse"
            },
            "type": "array",
            "title": "Stores"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "slug",
          "name",
          "mapImageUrl",
          "timezone",
          "stores"
        ],
        "title": "PlaceDirectoryCityResponse"
      },
      "PlaceDirectoryResponse": {
        "properties": {
          "cities": {
            "items": {
              "$ref": "#/components/schemas/PlaceDirectoryCityResponse"
            },
            "type": "array",
            "title": "Cities"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "cities"
        ],
        "title": "PlaceDirectoryResponse"
      },
      "PlaceDirectoryStoreResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "slug": {
            "type": "string",
            "title": "Slug"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "hours": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Hours"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "slug",
          "name",
          "address",
          "latitude",
          "longitude",
          "description",
          "hours"
        ],
        "title": "PlaceDirectoryStoreResponse"
      },
      "PlatformPlanCatalogResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PlatformPlanResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "currency": {
            "type": "string",
            "const": "RUB",
            "title": "Currency",
            "default": "RUB"
          },
          "billingMode": {
            "type": "string",
            "const": "MANUAL",
            "title": "Billingmode",
            "default": "MANUAL"
          },
          "sourceLabel": {
            "type": "string",
            "title": "Sourcelabel"
          },
          "sourceUrl": {
            "type": "string",
            "title": "Sourceurl"
          },
          "compatibilityNote": {
            "type": "string",
            "title": "Compatibilitynote"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "sourceLabel",
          "sourceUrl",
          "compatibilityNote"
        ],
        "title": "PlatformPlanCatalogResponse"
      },
      "PlatformPlanPriceResponse": {
        "properties": {
          "months": {
            "type": "integer",
            "enum": [
              1,
              6,
              12
            ],
            "title": "Months"
          },
          "firstTerminalRubles": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Firstterminalrubles"
          },
          "additionalTerminalRubles": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Additionalterminalrubles"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "months",
          "firstTerminalRubles",
          "additionalTerminalRubles"
        ],
        "title": "PlatformPlanPriceResponse"
      },
      "PlatformPlanResponse": {
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "STANDARD",
              "PROFI",
              "PROFI_PLUS"
            ],
            "title": "Code"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "summary": {
            "type": "string",
            "title": "Summary"
          },
          "prices": {
            "items": {
              "$ref": "#/components/schemas/PlatformPlanPriceResponse"
            },
            "type": "array",
            "title": "Prices"
          },
          "features": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Features"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "code",
          "name",
          "summary",
          "prices",
          "features"
        ],
        "title": "PlatformPlanResponse"
      },
      "PolicyListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PolicyResponse"
            },
            "type": "array",
            "title": "Data"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data"
        ],
        "title": "PolicyListResponse"
      },
      "PolicyResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "rewardRate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardrate"
          },
          "maxDebitPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Maxdebitpercent"
          },
          "pointsPerRuble": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Pointsperruble"
          },
          "accrualMode": {
            "type": "string",
            "title": "Accrualmode"
          },
          "rewardStepAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardstepamount"
          },
          "rewardStepBonus": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardstepbonus"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "minimumRewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minimumrewarddebit"
          },
          "rewardDebitMultiplicity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewarddebitmultiplicity"
          },
          "rewardCreditBase": {
            "type": "string",
            "title": "Rewardcreditbase"
          },
          "rewardRoundingMode": {
            "type": "string",
            "title": "Rewardroundingmode"
          },
          "requireRegistrationVerification": {
            "type": "boolean",
            "title": "Requireregistrationverification"
          },
          "requireRedemptionVerification": {
            "type": "boolean",
            "title": "Requireredemptionverification"
          },
          "disableRewardCreditOnDebit": {
            "type": "boolean",
            "title": "Disablerewardcreditondebit"
          },
          "disableInternalDiscountOnDebit": {
            "type": "boolean",
            "title": "Disableinternaldiscountondebit"
          },
          "disableInternalDiscountOnExternal": {
            "type": "boolean",
            "title": "Disableinternaldiscountonexternal"
          },
          "disableRewardCreditOnExternal": {
            "type": "boolean",
            "title": "Disablerewardcreditonexternal"
          },
          "disableRewardDebitOnExternal": {
            "type": "boolean",
            "title": "Disablerewarddebitonexternal"
          },
          "rewardActivationDelayDays": {
            "type": "integer",
            "title": "Rewardactivationdelaydays"
          },
          "rewardLifetimeDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardlifetimedays"
          },
          "rewardExpirationMode": {
            "$ref": "#/components/schemas/RewardExpirationMode"
          },
          "cardRegressionEnabled": {
            "type": "boolean",
            "title": "Cardregressionenabled"
          },
          "cardRegressionDates": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cardregressiondates"
          },
          "cardRegressionTime": {
            "type": "string",
            "title": "Cardregressiontime"
          },
          "cardRegressionWindowMonths": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardregressionwindowmonths"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "activatedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "version",
          "status",
          "rewardRate",
          "maxDebitPercent",
          "pointsPerRuble",
          "accrualMode",
          "rewardStepAmount",
          "rewardStepBonus",
          "discountPercent",
          "minimumRewardDebit",
          "rewardDebitMultiplicity",
          "rewardCreditBase",
          "rewardRoundingMode",
          "requireRegistrationVerification",
          "requireRedemptionVerification",
          "disableRewardCreditOnDebit",
          "disableInternalDiscountOnDebit",
          "disableInternalDiscountOnExternal",
          "disableRewardCreditOnExternal",
          "disableRewardDebitOnExternal",
          "rewardActivationDelayDays",
          "rewardLifetimeDays",
          "rewardExpirationMode",
          "cardRegressionEnabled",
          "cardRegressionDates",
          "cardRegressionTime",
          "cardRegressionWindowMonths",
          "createdAt",
          "activatedAt"
        ],
        "title": "PolicyResponse"
      },
      "ProductExclusionCampaignAuditListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ProductExclusionCampaignAuditResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "ProductExclusionCampaignAuditListResponse"
      },
      "ProductExclusionCampaignAuditResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "actorType": {
            "type": "string",
            "enum": [
              "PORTAL_USER",
              "API_CREDENTIAL"
            ],
            "title": "Actortype"
          },
          "actorId": {
            "type": "string",
            "title": "Actorid"
          },
          "action": {
            "type": "string",
            "enum": [
              "CREATED",
              "UPDATED"
            ],
            "title": "Action"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "before": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProductExclusionCampaignSnapshotResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "$ref": "#/components/schemas/ProductExclusionCampaignSnapshotResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "actorType",
          "actorId",
          "action",
          "revision",
          "before",
          "after",
          "createdAt"
        ],
        "title": "ProductExclusionCampaignAuditResponse"
      },
      "ProductExclusionCampaignListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ProductExclusionCampaignResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "ProductExclusionCampaignListResponse"
      },
      "ProductExclusionCampaignMutationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive",
            "default": true
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Productexternalids",
            "default": []
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Productlabels",
            "default": []
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Storeids",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "ProductExclusionCampaignMutationRequest"
      },
      "ProductExclusionCampaignResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "isActive",
          "productExternalIds",
          "productLabels",
          "storeIds",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "title": "ProductExclusionCampaignResponse"
      },
      "ProductExclusionCampaignSnapshotResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "isActive",
          "productExternalIds",
          "productLabels",
          "storeIds",
          "revision"
        ],
        "title": "ProductExclusionCampaignSnapshotResponse"
      },
      "ProgramResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "locale": {
            "type": "string",
            "title": "Locale"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "currency",
          "locale",
          "timezone",
          "createdAt"
        ],
        "title": "ProgramResponse"
      },
      "PublicConsentDocumentResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "purpose": {
            "type": "string",
            "enum": [
              "PERSONAL_DATA",
              "MARKETING"
            ],
            "title": "Purpose"
          },
          "version": {
            "type": "string",
            "title": "Version"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "bodyHash": {
            "type": "string",
            "title": "Bodyhash"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "purpose",
          "version",
          "title",
          "body",
          "bodyHash"
        ],
        "title": "PublicConsentDocumentResponse"
      },
      "PublicEcardResponse": {
        "properties": {
          "serialNumber": {
            "type": "string",
            "title": "Serialnumber"
          },
          "barcode": {
            "$ref": "#/components/schemas/BarcodeResponse"
          },
          "physicalBarcode": {
            "$ref": "#/components/schemas/PhysicalBarcodeResponse"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/CardLocationResponse"
            },
            "type": "array",
            "title": "Locations"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "serialNumber",
          "barcode",
          "physicalBarcode",
          "locations",
          "expiresAt"
        ],
        "title": "PublicEcardResponse"
      },
      "PublicFeedbackContextResponse": {
        "properties": {
          "companyName": {
            "type": "string",
            "title": "Companyname"
          },
          "receiptId": {
            "type": "string",
            "title": "Receiptid"
          },
          "rewardAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardamount"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "companyName",
          "receiptId",
          "rewardAmount",
          "expiresAt"
        ],
        "title": "PublicFeedbackContextResponse"
      },
      "PublicFeedbackOperatorReplyResponse": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "DELIVERED"
            ],
            "title": "Status"
          },
          "reply": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FeedbackOperatorReplyResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status",
          "reply"
        ],
        "title": "PublicFeedbackOperatorReplyResponse"
      },
      "PublicFeedbackSubmitRequest": {
        "properties": {
          "rating": {
            "type": "integer",
            "maximum": 5.0,
            "minimum": 1.0,
            "title": "Rating"
          },
          "nps": {
            "type": "integer",
            "maximum": 10.0,
            "minimum": 0.0,
            "title": "Nps"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "rating",
          "nps"
        ],
        "title": "PublicFeedbackSubmitRequest"
      },
      "PublicFeedbackSubmitResponse": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status"
          },
          "rewardAwarded": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardawarded"
          },
          "externalReviewUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Externalreviewurl"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status",
          "rewardAwarded",
          "externalReviewUrl"
        ],
        "title": "PublicFeedbackSubmitResponse"
      },
      "PublicLegalPageResponse": {
        "properties": {
          "slug": {
            "type": "string",
            "title": "Slug"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "documentType": {
            "type": "string",
            "enum": [
              "TERMS_OF_SERVICE",
              "PRIVACY_NOTICE",
              "PERSONAL_DATA_CONSENT",
              "MARKETING_CONSENT",
              "RETENTION_POLICY",
              "PROCESSOR_AGREEMENT",
              "OTHER"
            ],
            "title": "Documenttype"
          },
          "contentFormat": {
            "type": "string",
            "enum": [
              "TEXT",
              "PDF"
            ],
            "title": "Contentformat"
          },
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "contentSha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "title": "Contentsha256"
          },
          "effectiveFrom": {
            "type": "string",
            "format": "date-time",
            "title": "Effectivefrom"
          },
          "version": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Version"
          },
          "pdfPath": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pdfpath"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "slug",
          "title",
          "documentType",
          "contentFormat",
          "content",
          "contentSha256",
          "effectiveFrom",
          "version",
          "pdfPath"
        ],
        "title": "PublicLegalPageResponse"
      },
      "PublicRegistrationBalanceResponse": {
        "properties": {
          "available": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Available"
          },
          "pending": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Pending"
          },
          "held": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Held"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "available",
          "pending",
          "held"
        ],
        "title": "PublicRegistrationBalanceResponse"
      },
      "PublicRegistrationCardTypeResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "code": {
            "type": "string",
            "title": "Code"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "backgroundColor": {
            "type": "string",
            "title": "Backgroundcolor"
          },
          "foregroundColor": {
            "type": "string",
            "title": "Foregroundcolor"
          },
          "labelColor": {
            "type": "string",
            "title": "Labelcolor"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "code",
          "name",
          "backgroundColor",
          "foregroundColor",
          "labelColor"
        ],
        "title": "PublicRegistrationCardTypeResponse"
      },
      "PublicRegistrationConfigurationResponse": {
        "properties": {
          "companyName": {
            "type": "string",
            "title": "Companyname"
          },
          "programName": {
            "type": "string",
            "title": "Programname"
          },
          "cardType": {
            "$ref": "#/components/schemas/PublicRegistrationCardTypeResponse"
          },
          "registrationReward": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Registrationreward"
          },
          "rewardExpiresInDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardexpiresindays"
          },
          "referralApplied": {
            "type": "boolean",
            "title": "Referralapplied",
            "default": false
          },
          "fields": {
            "$ref": "#/components/schemas/RegistrationFields"
          },
          "personalDataDocument": {
            "$ref": "#/components/schemas/PublicConsentDocumentResponse"
          },
          "marketingDocument": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PublicConsentDocumentResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "companyName",
          "programName",
          "cardType",
          "registrationReward",
          "rewardExpiresInDays",
          "fields",
          "personalDataDocument",
          "marketingDocument"
        ],
        "title": "PublicRegistrationConfigurationResponse"
      },
      "PublicRegistrationEnrollRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "challengeId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Challengeid"
          },
          "code": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "title": "Code"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 254
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "birthDate": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Birthdate"
          },
          "personalDataConsent": {
            "type": "boolean",
            "const": true,
            "title": "Personaldataconsent"
          },
          "marketingConsent": {
            "type": "boolean",
            "title": "Marketingconsent",
            "default": false
          },
          "referralToken": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160,
                "minLength": 40,
                "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Referraltoken"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone",
          "challengeId",
          "code",
          "personalDataConsent"
        ],
        "title": "PublicRegistrationEnrollRequest"
      },
      "PublicRegistrationEnrollResponse": {
        "properties": {
          "customerId": {
            "type": "string",
            "title": "Customerid"
          },
          "membershipId": {
            "type": "string",
            "title": "Membershipid"
          },
          "isNewCustomer": {
            "type": "boolean",
            "title": "Isnewcustomer"
          },
          "phoneMasked": {
            "type": "string",
            "title": "Phonemasked"
          },
          "balance": {
            "$ref": "#/components/schemas/PublicRegistrationBalanceResponse"
          },
          "card": {
            "$ref": "#/components/schemas/MembershipCardResponse"
          },
          "eCardUrl": {
            "type": "string",
            "title": "Ecardurl"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "customerId",
          "membershipId",
          "isNewCustomer",
          "phoneMasked",
          "balance",
          "card",
          "eCardUrl"
        ],
        "title": "PublicRegistrationEnrollResponse"
      },
      "PublicRegistrationVerificationRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "referralToken": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160,
                "minLength": 40,
                "pattern": "^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Referraltoken"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone"
        ],
        "title": "PublicRegistrationVerificationRequest"
      },
      "PublicRegistrationVerificationResponse": {
        "properties": {
          "challengeId": {
            "type": "string",
            "title": "Challengeid"
          },
          "phoneMasked": {
            "type": "string",
            "title": "Phonemasked"
          },
          "status": {
            "type": "string",
            "const": "PENDING",
            "title": "Status"
          },
          "attemptsRemaining": {
            "type": "integer",
            "title": "Attemptsremaining"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "resendAfter": {
            "type": "string",
            "format": "date-time",
            "title": "Resendafter"
          },
          "debugCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Debugcode"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "challengeId",
          "phoneMasked",
          "status",
          "attemptsRemaining",
          "expiresAt",
          "resendAfter"
        ],
        "title": "PublicRegistrationVerificationResponse"
      },
      "QuoteLineRequest": {
        "properties": {
          "lineId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Lineid"
          },
          "productExternalId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Productexternalid"
          },
          "quantity": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,16}|(?=[\\d.]{1,21}0*$)\\d{0,16}\\.\\d{0,4}0*$)"
              }
            ],
            "title": "Quantity"
          },
          "unitPrice": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Unitprice"
          },
          "externalDiscount": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Externaldiscount",
            "default": "0.00"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "lineId",
          "quantity",
          "unitPrice"
        ],
        "title": "QuoteLineRequest"
      },
      "QuoteLineResponse": {
        "properties": {
          "lineId": {
            "type": "string",
            "title": "Lineid"
          },
          "loyaltyEligible": {
            "type": "boolean",
            "title": "Loyaltyeligible"
          },
          "subtotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Subtotal"
          },
          "externalDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Externaldiscount"
          },
          "internalDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Internaldiscount"
          },
          "rewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewarddebit"
          },
          "loyaltyDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Loyaltydiscount"
          },
          "total": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Total"
          },
          "rewardCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardcredit"
          },
          "promotionId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionid"
          },
          "promotionRevision": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionrevision"
          },
          "promotionName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionname"
          },
          "promotionDiscountPercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotiondiscountpercent"
          },
          "promotionMechanic": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionmechanic"
          },
          "promotionBenefit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionbenefit"
          },
          "promotionDiscountAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotiondiscountamount"
          },
          "promotionCycleSize": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotioncyclesize"
          },
          "promotionDiscountedUnits": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotiondiscountedunits"
          },
          "promotionQualifyingUnits": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionqualifyingunits"
          },
          "promotionAwardedUnits": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionawardedunits"
          },
          "promotionFixedUnitPrice": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionfixedunitprice"
          },
          "promotionPurchaseNumber": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promotionpurchasenumber"
          },
          "rewardCampaignId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignid"
          },
          "rewardCampaignRevision": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignrevision"
          },
          "rewardCampaignName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignname"
          },
          "rewardCampaignRatePercent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignratepercent"
          },
          "rewardCampaignStrategy": {
            "anyOf": [
              {
                "type": "string",
                "const": "MAXIMUM"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignstrategy"
          },
          "rewardCampaignActivationDelayDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignactivationdelaydays"
          },
          "rewardCampaignExpirationDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignexpirationdays"
          },
          "rewardCampaignMinimumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignminimumreceiptamount"
          },
          "rewardCampaignMaximumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignmaximumreceiptamount"
          },
          "rewardCampaignQualifyingReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardcampaignqualifyingreceiptamount"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "lineId",
          "loyaltyEligible",
          "subtotal",
          "externalDiscount",
          "internalDiscount",
          "rewardDebit",
          "loyaltyDiscount",
          "total",
          "rewardCredit",
          "promotionId",
          "promotionRevision",
          "promotionName",
          "promotionDiscountPercent",
          "promotionMechanic",
          "promotionBenefit",
          "promotionDiscountAmount",
          "promotionCycleSize",
          "promotionDiscountedUnits",
          "promotionQualifyingUnits",
          "promotionAwardedUnits",
          "promotionFixedUnitPrice",
          "promotionPurchaseNumber",
          "rewardCampaignId",
          "rewardCampaignRevision",
          "rewardCampaignName",
          "rewardCampaignRatePercent",
          "rewardCampaignStrategy",
          "rewardCampaignActivationDelayDays",
          "rewardCampaignExpirationDays",
          "rewardCampaignMinimumReceiptAmount",
          "rewardCampaignMaximumReceiptAmount",
          "rewardCampaignQualifyingReceiptAmount"
        ],
        "title": "QuoteLineResponse"
      },
      "QuoteResponse": {
        "properties": {
          "quoteId": {
            "type": "string",
            "title": "Quoteid"
          },
          "policyVersionId": {
            "type": "string",
            "title": "Policyversionid"
          },
          "cardTypeVersionId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardtypeversionid"
          },
          "cardTypeCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardtypecode"
          },
          "cardTypeName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cardtypename"
          },
          "inputHash": {
            "type": "string",
            "title": "Inputhash"
          },
          "subtotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Subtotal"
          },
          "externalDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Externaldiscount"
          },
          "internalDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Internaldiscount"
          },
          "maximumRewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Maximumrewarddebit"
          },
          "rewardDebitMultiplicity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewarddebitmultiplicity"
          },
          "rewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewarddebit"
          },
          "loyaltyDiscount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Loyaltydiscount"
          },
          "total": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Total"
          },
          "rewardCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardcredit"
          },
          "purchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Purchaseordinal"
          },
          "benefitsBlocked": {
            "type": "boolean",
            "title": "Benefitsblocked"
          },
          "limitReason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Limitreason"
          },
          "rewardDebitLimitRemaining": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewarddebitlimitremaining"
          },
          "coupon": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AppliedCouponResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/QuoteLineResponse"
            },
            "type": "array",
            "title": "Lines"
          },
          "rewardCampaignResults": {
            "items": {
              "$ref": "#/components/schemas/RewardCampaignResultResponse"
            },
            "type": "array",
            "title": "Rewardcampaignresults"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "quoteId",
          "policyVersionId",
          "cardTypeVersionId",
          "cardTypeCode",
          "cardTypeName",
          "inputHash",
          "subtotal",
          "externalDiscount",
          "internalDiscount",
          "maximumRewardDebit",
          "rewardDebitMultiplicity",
          "rewardDebit",
          "loyaltyDiscount",
          "total",
          "rewardCredit",
          "purchaseOrdinal",
          "benefitsBlocked",
          "limitReason",
          "rewardDebitLimitRemaining",
          "coupon",
          "expiresAt",
          "lines",
          "rewardCampaignResults"
        ],
        "title": "QuoteResponse"
      },
      "RecordConsentRequest": {
        "properties": {
          "documentId": {
            "type": "string",
            "maxLength": 36,
            "minLength": 36,
            "title": "Documentid"
          },
          "verificationChallengeId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Verificationchallengeid"
          },
          "action": {
            "type": "string",
            "enum": [
              "GRANTED",
              "WITHDRAWN"
            ],
            "title": "Action"
          },
          "source": {
            "type": "string",
            "enum": [
              "POS",
              "WEB",
              "MOBILE",
              "API"
            ],
            "title": "Source"
          },
          "evidence": {
            "additionalProperties": true,
            "type": "object",
            "title": "Evidence"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "documentId",
          "action",
          "source"
        ],
        "title": "RecordConsentRequest"
      },
      "ReferralInviteCreateRequest": {
        "properties": {
          "inviterCustomerId": {
            "type": "string",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
            "title": "Invitercustomerid"
          },
          "registrationLinkId": {
            "type": "string",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
            "title": "Registrationlinkid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "inviterCustomerId",
          "registrationLinkId"
        ],
        "title": "ReferralInviteCreateRequest"
      },
      "ReferralInvitePageResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ReferralInviteResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "ReferralInvitePageResponse"
      },
      "ReferralInviteResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "inviterCustomerId": {
            "type": "string",
            "title": "Invitercustomerid"
          },
          "inviterName": {
            "type": "string",
            "title": "Invitername"
          },
          "inviterPhoneMasked": {
            "type": "string",
            "title": "Inviterphonemasked"
          },
          "registrationLinkId": {
            "type": "string",
            "title": "Registrationlinkid"
          },
          "registrationLinkName": {
            "type": "string",
            "title": "Registrationlinkname"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "REVOKED"
            ],
            "title": "Status"
          },
          "tokenVersion": {
            "type": "integer",
            "title": "Tokenversion"
          },
          "inviteUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Inviteurl"
          },
          "registrationCount": {
            "type": "integer",
            "title": "Registrationcount"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "rotatedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rotatedat"
          },
          "revokedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revokedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "inviterCustomerId",
          "inviterName",
          "inviterPhoneMasked",
          "registrationLinkId",
          "registrationLinkName",
          "status",
          "tokenVersion",
          "inviteUrl",
          "registrationCount",
          "createdAt",
          "rotatedAt",
          "revokedAt"
        ],
        "title": "ReferralInviteResponse"
      },
      "ReferralLevelResponse": {
        "properties": {
          "level": {
            "type": "integer",
            "title": "Level"
          },
          "kind": {
            "type": "string",
            "enum": [
              "FIXED_POINTS",
              "PERCENT_OF_PURCHASE_REWARD"
            ],
            "title": "Kind"
          },
          "value": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Value"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "level",
          "kind",
          "value"
        ],
        "title": "ReferralLevelResponse"
      },
      "ReferralProgramResponse": {
        "properties": {
          "configured": {
            "type": "boolean",
            "title": "Configured"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "PAUSED"
            ],
            "title": "Status"
          },
          "levels": {
            "items": {
              "$ref": "#/components/schemas/ReferralLevelResponse"
            },
            "type": "array",
            "title": "Levels"
          },
          "referredRegistrationReward": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Referredregistrationreward"
          },
          "rewardExpiresInDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rewardexpiresindays"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "configured",
          "status",
          "levels",
          "referredRegistrationReward",
          "rewardExpiresInDays",
          "revision"
        ],
        "title": "ReferralProgramResponse"
      },
      "RegistrationFields": {
        "properties": {
          "firstName": {
            "type": "string",
            "enum": [
              "HIDDEN",
              "OPTIONAL",
              "REQUIRED"
            ],
            "title": "Firstname",
            "default": "OPTIONAL"
          },
          "lastName": {
            "type": "string",
            "enum": [
              "HIDDEN",
              "OPTIONAL",
              "REQUIRED"
            ],
            "title": "Lastname",
            "default": "OPTIONAL"
          },
          "email": {
            "type": "string",
            "enum": [
              "HIDDEN",
              "OPTIONAL",
              "REQUIRED"
            ],
            "title": "Email",
            "default": "OPTIONAL"
          },
          "birthDate": {
            "type": "string",
            "enum": [
              "HIDDEN",
              "OPTIONAL",
              "REQUIRED"
            ],
            "title": "Birthdate",
            "default": "OPTIONAL"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "RegistrationFields"
      },
      "ReleaseHoldRequest": {
        "properties": {
          "holdId": {
            "type": "string",
            "title": "Holdid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "holdId"
        ],
        "title": "ReleaseHoldRequest"
      },
      "RequestVerificationRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          },
          "purpose": {
            "type": "string",
            "enum": [
              "ENROLLMENT",
              "CONSENT",
              "CHECKOUT"
            ],
            "title": "Purpose"
          },
          "channel": {
            "type": "string",
            "const": "SMS",
            "title": "Channel"
          },
          "checkoutSessionId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Checkoutsessionid"
          },
          "quoteId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 36,
                "minLength": 36
              },
              {
                "type": "null"
              }
            ],
            "title": "Quoteid"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone",
          "purpose",
          "channel"
        ],
        "title": "RequestVerificationRequest"
      },
      "ResolveCardRequest": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 128,
            "minLength": 32,
            "pattern": "^card_live_[A-Za-z0-9_-]+$",
            "title": "Token"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "token"
        ],
        "title": "ResolveCardRequest"
      },
      "ResolvedCardResponse": {
        "properties": {
          "cardId": {
            "type": "string",
            "title": "Cardid"
          },
          "customerId": {
            "type": "string",
            "title": "Customerid"
          },
          "membershipId": {
            "type": "string",
            "title": "Membershipid"
          },
          "phone": {
            "type": "string",
            "title": "Phone"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Firstname"
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastname"
          },
          "rewardAccount": {
            "$ref": "#/components/schemas/RewardAccountResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "cardId",
          "customerId",
          "membershipId",
          "phone",
          "firstName",
          "lastName",
          "rewardAccount"
        ],
        "title": "ResolvedCardResponse"
      },
      "ReturnLineRequest": {
        "properties": {
          "lineId": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Lineid"
          },
          "quantity": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,16}|(?=[\\d.]{1,21}0*$)\\d{0,16}\\.\\d{0,4}0*$)"
              }
            ],
            "title": "Quantity"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "lineId",
          "quantity"
        ],
        "title": "ReturnLineRequest"
      },
      "ReturnLineResponse": {
        "properties": {
          "lineId": {
            "type": "string",
            "title": "Lineid"
          },
          "quantity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Quantity"
          },
          "returnedTotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Returnedtotal"
          },
          "restoredRewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Restoredrewarddebit"
          },
          "reversedRewardCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Reversedrewardcredit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "lineId",
          "quantity",
          "returnedTotal",
          "restoredRewardDebit",
          "reversedRewardCredit"
        ],
        "title": "ReturnLineResponse"
      },
      "ReturnResponse": {
        "properties": {
          "returnId": {
            "type": "string",
            "title": "Returnid"
          },
          "returnedSubtotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Returnedsubtotal"
          },
          "returnedTotal": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Returnedtotal"
          },
          "restoredRewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Restoredrewarddebit"
          },
          "reversedRewardCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Reversedrewardcredit"
          },
          "restoredCertificateTender": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Restoredcertificatetender"
          },
          "saleStatus": {
            "type": "string",
            "title": "Salestatus"
          },
          "lines": {
            "items": {
              "$ref": "#/components/schemas/ReturnLineResponse"
            },
            "type": "array",
            "title": "Lines"
          },
          "rewardAccount": {
            "$ref": "#/components/schemas/RewardAccountResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "returnId",
          "returnedSubtotal",
          "returnedTotal",
          "restoredRewardDebit",
          "reversedRewardCredit",
          "restoredCertificateTender",
          "saleStatus",
          "lines",
          "rewardAccount"
        ],
        "title": "ReturnResponse"
      },
      "RevokeCouponCodeRequest": {
        "properties": {
          "reason": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Reason"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "reason"
        ],
        "title": "RevokeCouponCodeRequest"
      },
      "RewardAccountResponse": {
        "properties": {
          "accountId": {
            "type": "string",
            "title": "Accountid"
          },
          "available": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Available"
          },
          "pending": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Pending"
          },
          "held": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Held"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "accountId",
          "available",
          "pending",
          "held"
        ],
        "title": "RewardAccountResponse"
      },
      "RewardAccrualCampaignAuditListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RewardAccrualCampaignAuditResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "RewardAccrualCampaignAuditListResponse"
      },
      "RewardAccrualCampaignAuditResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "actorType": {
            "type": "string",
            "enum": [
              "PORTAL_USER",
              "API_CREDENTIAL"
            ],
            "title": "Actortype"
          },
          "actorId": {
            "type": "string",
            "title": "Actorid"
          },
          "action": {
            "type": "string",
            "enum": [
              "CREATED",
              "UPDATED"
            ],
            "title": "Action"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "before": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RewardAccrualCampaignSnapshotResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "$ref": "#/components/schemas/RewardAccrualCampaignSnapshotResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "actorType",
          "actorId",
          "action",
          "revision",
          "before",
          "after",
          "createdAt"
        ],
        "title": "RewardAccrualCampaignAuditResponse"
      },
      "RewardAccrualCampaignListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RewardAccrualCampaignResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "RewardAccrualCampaignListResponse"
      },
      "RewardAccrualCampaignMutationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive",
            "default": true
          },
          "priority": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 0.0,
            "title": "Priority",
            "default": 100
          },
          "rewardRatePercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Rewardratepercent"
          },
          "strategy": {
            "type": "string",
            "const": "MAXIMUM",
            "title": "Strategy",
            "default": "MAXIMUM"
          },
          "activationDelayDays": {
            "type": "integer",
            "maximum": 3650.0,
            "minimum": 0.0,
            "title": "Activationdelaydays",
            "default": 0
          },
          "expirationDays": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 36500.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Expirationdays"
          },
          "minimumReceiptAmount": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumreceiptamount"
          },
          "maximumReceiptAmount": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumreceiptamount"
          },
          "minimumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1000.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumpurchaseordinal"
          },
          "maximumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 1000.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumpurchaseordinal"
          },
          "resultChainCode": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
            "title": "Resultchaincode",
            "default": "DEFAULT"
          },
          "resultGroupCode": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
            "title": "Resultgroupcode",
            "default": "DEFAULT"
          },
          "resultOrder": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 0.0,
            "title": "Resultorder",
            "default": 0
          },
          "weekdays": {
            "items": {
              "type": "integer",
              "maximum": 6.0,
              "minimum": 0.0
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 1,
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "includedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Includedproductexternalids",
            "default": []
          },
          "excludedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Excludedproductexternalids",
            "default": []
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Productlabels",
            "default": []
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Storeids",
            "default": []
          },
          "cardTypeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Cardtypeids",
            "default": []
          },
          "customerListIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Customerlistids",
            "default": []
          },
          "customerIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Customerids",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "rewardRatePercent",
          "weekdays",
          "localStartTime",
          "localEndTime"
        ],
        "title": "RewardAccrualCampaignMutationRequest"
      },
      "RewardAccrualCampaignResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "rewardRatePercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardratepercent"
          },
          "strategy": {
            "type": "string",
            "const": "MAXIMUM",
            "title": "Strategy"
          },
          "activationDelayDays": {
            "type": "integer",
            "title": "Activationdelaydays"
          },
          "expirationDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expirationdays"
          },
          "minimumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumreceiptamount"
          },
          "maximumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumreceiptamount"
          },
          "minimumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumpurchaseordinal"
          },
          "maximumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumpurchaseordinal"
          },
          "resultChainCode": {
            "type": "string",
            "title": "Resultchaincode"
          },
          "resultGroupCode": {
            "type": "string",
            "title": "Resultgroupcode"
          },
          "resultOrder": {
            "type": "integer",
            "title": "Resultorder"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "includedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Includedproductexternalids"
          },
          "excludedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Excludedproductexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "cardTypeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cardtypeids"
          },
          "customerListIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Customerlistids"
          },
          "customerIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Customerids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "isActive",
          "priority",
          "rewardRatePercent",
          "strategy",
          "activationDelayDays",
          "expirationDays",
          "minimumReceiptAmount",
          "maximumReceiptAmount",
          "minimumPurchaseOrdinal",
          "maximumPurchaseOrdinal",
          "resultChainCode",
          "resultGroupCode",
          "resultOrder",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "includedProductExternalIds",
          "excludedProductExternalIds",
          "productLabels",
          "storeIds",
          "cardTypeIds",
          "customerListIds",
          "customerIds",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "title": "RewardAccrualCampaignResponse"
      },
      "RewardAccrualCampaignSnapshotResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "rewardRatePercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardratepercent"
          },
          "strategy": {
            "type": "string",
            "const": "MAXIMUM",
            "title": "Strategy"
          },
          "activationDelayDays": {
            "type": "integer",
            "title": "Activationdelaydays"
          },
          "expirationDays": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expirationdays"
          },
          "minimumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumreceiptamount"
          },
          "maximumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumreceiptamount"
          },
          "minimumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumpurchaseordinal"
          },
          "maximumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumpurchaseordinal"
          },
          "resultChainCode": {
            "type": "string",
            "title": "Resultchaincode"
          },
          "resultGroupCode": {
            "type": "string",
            "title": "Resultgroupcode"
          },
          "resultOrder": {
            "type": "integer",
            "title": "Resultorder"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "includedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Includedproductexternalids"
          },
          "excludedProductExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Excludedproductexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "cardTypeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cardtypeids"
          },
          "customerListIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Customerlistids"
          },
          "customerIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Customerids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "isActive",
          "priority",
          "rewardRatePercent",
          "strategy",
          "activationDelayDays",
          "expirationDays",
          "minimumReceiptAmount",
          "maximumReceiptAmount",
          "minimumPurchaseOrdinal",
          "maximumPurchaseOrdinal",
          "resultChainCode",
          "resultGroupCode",
          "resultOrder",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "includedProductExternalIds",
          "excludedProductExternalIds",
          "productLabels",
          "storeIds",
          "cardTypeIds",
          "customerListIds",
          "customerIds",
          "revision"
        ],
        "title": "RewardAccrualCampaignSnapshotResponse"
      },
      "RewardActivityPageResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/RewardActivityResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "RewardActivityPageResponse"
      },
      "RewardActivityResponse": {
        "properties": {
          "transactionId": {
            "type": "string",
            "title": "Transactionid"
          },
          "operationType": {
            "type": "string",
            "title": "Operationtype"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          },
          "reason": {
            "type": "string",
            "title": "Reason"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "transactionId",
          "operationType",
          "amount",
          "reason",
          "createdAt"
        ],
        "title": "RewardActivityResponse"
      },
      "RewardAdjustmentRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,18}|(?=[\\d.]{1,21}0*$)\\d{0,18}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Amount"
          },
          "reason": {
            "type": "string",
            "maxLength": 500,
            "minLength": 3,
            "title": "Reason"
          },
          "activateAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activateat"
          },
          "expiresInDays": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 3650.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Expiresindays"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "amount",
          "reason"
        ],
        "title": "RewardAdjustmentRequest"
      },
      "RewardAdjustmentResponse": {
        "properties": {
          "transactionId": {
            "type": "string",
            "title": "Transactionid"
          },
          "accountId": {
            "type": "string",
            "title": "Accountid"
          },
          "available": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Available"
          },
          "pending": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Pending"
          },
          "held": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Held"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "transactionId",
          "accountId",
          "available",
          "pending",
          "held"
        ],
        "title": "RewardAdjustmentResponse"
      },
      "RewardCampaignResultResponse": {
        "properties": {
          "lineId": {
            "type": "string",
            "title": "Lineid"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "campaignRevision": {
            "type": "integer",
            "title": "Campaignrevision"
          },
          "campaignName": {
            "type": "string",
            "title": "Campaignname"
          },
          "configuredRatePercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Configuredratepercent"
          },
          "appliedRatePercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Appliedratepercent"
          },
          "resultChainCode": {
            "type": "string",
            "title": "Resultchaincode"
          },
          "resultGroupCode": {
            "type": "string",
            "title": "Resultgroupcode"
          },
          "resultOrder": {
            "type": "integer",
            "title": "Resultorder"
          },
          "minimumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumpurchaseordinal"
          },
          "maximumPurchaseOrdinal": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumpurchaseordinal"
          },
          "purchaseOrdinal": {
            "type": "integer",
            "title": "Purchaseordinal"
          },
          "minimumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimumreceiptamount"
          },
          "maximumReceiptAmount": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maximumreceiptamount"
          },
          "qualifyingReceiptAmount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Qualifyingreceiptamount"
          },
          "rewardCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardcredit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "lineId",
          "campaignId",
          "campaignRevision",
          "campaignName",
          "configuredRatePercent",
          "appliedRatePercent",
          "resultChainCode",
          "resultGroupCode",
          "resultOrder",
          "minimumPurchaseOrdinal",
          "maximumPurchaseOrdinal",
          "purchaseOrdinal",
          "minimumReceiptAmount",
          "maximumReceiptAmount",
          "qualifyingReceiptAmount",
          "rewardCredit"
        ],
        "title": "RewardCampaignResultResponse"
      },
      "RewardExpirationMode": {
        "type": "string",
        "enum": [
          "NEVER",
          "AFTER_ACCRUAL",
          "AFTER_LAST_PURCHASE"
        ]
      },
      "SaleLookupResponse": {
        "properties": {
          "saleId": {
            "type": "string",
            "title": "Saleid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "saleId",
          "status"
        ],
        "title": "SaleLookupResponse"
      },
      "SaleResponse": {
        "properties": {
          "saleId": {
            "type": "string",
            "title": "Saleid"
          },
          "rewardDebit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewarddebit"
          },
          "rewardCredit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rewardcredit"
          },
          "rewardAccount": {
            "$ref": "#/components/schemas/RewardAccountResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "saleId",
          "rewardDebit",
          "rewardCredit",
          "rewardAccount"
        ],
        "title": "SaleResponse"
      },
      "ScheduledDiscountCampaignAuditListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ScheduledDiscountCampaignAuditResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "ScheduledDiscountCampaignAuditListResponse"
      },
      "ScheduledDiscountCampaignAuditResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "campaignId": {
            "type": "string",
            "title": "Campaignid"
          },
          "actorType": {
            "type": "string",
            "enum": [
              "PORTAL_USER",
              "API_CREDENTIAL"
            ],
            "title": "Actortype"
          },
          "actorId": {
            "type": "string",
            "title": "Actorid"
          },
          "action": {
            "type": "string",
            "enum": [
              "CREATED",
              "UPDATED"
            ],
            "title": "Action"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "before": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ScheduledDiscountCampaignSnapshotResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "after": {
            "$ref": "#/components/schemas/ScheduledDiscountCampaignSnapshotResponse"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "campaignId",
          "actorType",
          "actorId",
          "action",
          "revision",
          "before",
          "after",
          "createdAt"
        ],
        "title": "ScheduledDiscountCampaignAuditResponse"
      },
      "ScheduledDiscountCampaignListResponse": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ScheduledDiscountCampaignResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "offset": {
            "type": "integer",
            "title": "Offset"
          },
          "limit": {
            "type": "integer",
            "title": "Limit"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "items",
          "total",
          "offset",
          "limit"
        ],
        "title": "ScheduledDiscountCampaignListResponse"
      },
      "ScheduledDiscountCampaignMutationRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive",
            "default": true
          },
          "priority": {
            "type": "integer",
            "maximum": 1000.0,
            "minimum": 0.0,
            "title": "Priority",
            "default": 100
          },
          "discountPercent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"
              }
            ],
            "title": "Discountpercent"
          },
          "weekdays": {
            "items": {
              "type": "integer",
              "maximum": 6.0,
              "minimum": 0.0
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 1,
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 10000,
            "title": "Productexternalids",
            "default": []
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Productlabels",
            "default": []
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "title": "Storeids",
            "default": []
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "discountPercent",
          "weekdays",
          "localStartTime",
          "localEndTime"
        ],
        "title": "ScheduledDiscountCampaignMutationRequest"
      },
      "ScheduledDiscountCampaignResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "isActive",
          "priority",
          "discountPercent",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "productExternalIds",
          "productLabels",
          "storeIds",
          "revision",
          "createdAt",
          "updatedAt"
        ],
        "title": "ScheduledDiscountCampaignResponse"
      },
      "ScheduledDiscountCampaignSnapshotResponse": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "priority": {
            "type": "integer",
            "title": "Priority"
          },
          "discountPercent": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discountpercent"
          },
          "weekdays": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Weekdays"
          },
          "localStartTime": {
            "type": "string",
            "format": "time",
            "title": "Localstarttime"
          },
          "localEndTime": {
            "type": "string",
            "format": "time",
            "title": "Localendtime"
          },
          "startsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Startson"
          },
          "endsOn": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Endson"
          },
          "productExternalIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productexternalids"
          },
          "productLabels": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Productlabels"
          },
          "storeIds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Storeids"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "isActive",
          "priority",
          "discountPercent",
          "weekdays",
          "localStartTime",
          "localEndTime",
          "startsOn",
          "endsOn",
          "productExternalIds",
          "productLabels",
          "storeIds",
          "revision"
        ],
        "title": "ScheduledDiscountCampaignSnapshotResponse"
      },
      "StoreListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/StoreResponse"
            },
            "type": "array",
            "title": "Data"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data",
          "pagination"
        ],
        "title": "StoreListResponse"
      },
      "StoreResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "cityId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cityid"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "externalId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Externalid"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "cityId",
          "name",
          "externalId",
          "address",
          "latitude",
          "longitude",
          "timezone",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "title": "StoreResponse"
      },
      "SubscriptionResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "planCode": {
            "type": "string",
            "title": "Plancode"
          },
          "terminalLimit": {
            "type": "integer",
            "title": "Terminallimit"
          },
          "currentPeriodEndsAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currentperiodendsat"
          },
          "graceEndsAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Graceendsat"
          },
          "billingExempt": {
            "type": "boolean",
            "title": "Billingexempt"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "status",
          "planCode",
          "terminalLimit",
          "currentPeriodEndsAt",
          "graceEndsAt",
          "billingExempt",
          "createdAt",
          "updatedAt"
        ],
        "title": "SubscriptionResponse"
      },
      "TerminalListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TerminalResponse"
            },
            "type": "array",
            "title": "Data"
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data",
          "pagination"
        ],
        "title": "TerminalListResponse"
      },
      "TerminalResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "storeId": {
            "type": "string",
            "title": "Storeid"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "sourceSystem": {
            "type": "string",
            "title": "Sourcesystem"
          },
          "externalId": {
            "type": "string",
            "title": "Externalid"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "lastSeenAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lastseenat"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "storeId",
          "name",
          "sourceSystem",
          "externalId",
          "status",
          "lastSeenAt",
          "createdAt",
          "updatedAt"
        ],
        "title": "TerminalResponse"
      },
      "TrustedTelegramContactRequest": {
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 32,
            "minLength": 10,
            "title": "Phone"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone"
        ],
        "title": "TrustedTelegramContactRequest"
      },
      "UpdateTerminalRequest": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status"
        ],
        "title": "UpdateTerminalRequest"
      },
      "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"
      },
      "VerificationResponse": {
        "properties": {
          "challengeId": {
            "type": "string",
            "title": "Challengeid"
          },
          "phoneMasked": {
            "type": "string",
            "title": "Phonemasked"
          },
          "purpose": {
            "type": "string",
            "title": "Purpose"
          },
          "channel": {
            "type": "string",
            "title": "Channel"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "attemptsRemaining": {
            "type": "integer",
            "title": "Attemptsremaining"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "title": "Expiresat"
          },
          "resendAfter": {
            "type": "string",
            "format": "date-time",
            "title": "Resendafter"
          },
          "verifiedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verifiedat"
          },
          "debugCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Debugcode"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "challengeId",
          "phoneMasked",
          "purpose",
          "channel",
          "status",
          "attemptsRemaining",
          "expiresAt",
          "resendAfter",
          "verifiedAt"
        ],
        "title": "VerificationResponse"
      },
      "WalletPlatformResponse": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "NOT_CONFIGURED",
              "AVAILABLE"
            ],
            "title": "Status"
          },
          "addUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Addurl"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status",
          "addUrl"
        ],
        "title": "WalletPlatformResponse"
      },
      "WalletsResponse": {
        "properties": {
          "apple": {
            "$ref": "#/components/schemas/WalletPlatformResponse"
          },
          "google": {
            "$ref": "#/components/schemas/WalletPlatformResponse"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "apple",
          "google"
        ],
        "title": "WalletsResponse"
      },
      "WebhookEndpointResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "eventTypes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Eventtypes"
          },
          "isActive": {
            "type": "boolean",
            "title": "Isactive"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Createdat"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Updatedat"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "label",
          "url",
          "eventTypes",
          "isActive",
          "createdAt",
          "updatedAt"
        ],
        "title": "WebhookEndpointResponse"
      },
      "WebhookListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WebhookEndpointResponse"
            },
            "type": "array",
            "title": "Data"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "data"
        ],
        "title": "WebhookListResponse"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "scheme": "bearer"
      },
      "BonusPlusApiKey": {
        "type": "apiKey",
        "description": "BonusPlus-compatible `Authorization: ApiKey <base64-api-key>` header.",
        "in": "header",
        "name": "Authorization"
      }
    }
  },
  "servers": [
    {
      "url": "https://api.landlancer.online"
    }
  ]
}
