{
  "openapi": "3.0.0",
  "info": {
    "title": "BIO.RE API",
    "description": "Creator monetization platform",
    "version": "1.0",
    "contact": {}
  },
  "paths": {
    "/api/v1/metrics": {
      "get": {
        "operationId": "MetricsController_getMetrics",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "Metrics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/metrics/"
      }
    },
    "/api/v1/health": {
      "get": {
        "operationId": "HealthController_health",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "Health"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/health/"
      }
    },
    "/api/v1/ready": {
      "get": {
        "operationId": "HealthController_ready",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "Health"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/ready/"
      }
    },
    "/api/v1/public/config/mobile": {
      "get": {
        "operationId": "PublicConfigController_getMobileConfig",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Mobile config bundle returned"
          }
        },
        "summary": "Mobile app config bundle (versions, toggles, maintenance)",
        "tags": [
          "Public Config"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/config/"
      }
    },
    "/api/v1/public/config/platform": {
      "get": {
        "operationId": "PublicConfigController_getPlatformConfig",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Platform config returned"
          }
        },
        "summary": "Public platform info (name, locales, registration, maintenance, limits)",
        "tags": [
          "Public Config"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/config/"
      }
    },
    "/api/v1/public/config/site-settings": {
      "get": {
        "operationId": "PublicConfigController_getSiteSettings",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Site settings returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_SiteSettingsResponseDto"
                }
              }
            }
          }
        },
        "summary": "Public site settings (identity, links, navigation, SEO, tracking, username rules)",
        "tags": [
          "Public Config"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/config/"
      }
    },
    "/api/v1/public/config/features": {
      "get": {
        "operationId": "PublicConfigController_getFeatures",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Feature flags returned"
          }
        },
        "summary": "Client-visible feature flags, kill switch states, and captcha config",
        "tags": [
          "Public Config"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/config/"
      }
    },
    "/api/v1/auth/register": {
      "post": {
        "operationId": "AuthController_register",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Account created, verification email sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_RegisterResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Email or username already taken",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Register new account",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/verify-email": {
      "post": {
        "operationId": "AuthController_verifyEmail",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmailDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email verified successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or expired token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Verify email with token",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/resend-verification": {
      "post": {
        "operationId": "AuthController_resendVerification",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResendVerificationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verification email sent (if account exists)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Resend email verification link",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "operationId": "AuthController_login",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JWT access + refresh tokens (or requiresTwoFactor with tempToken)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LoginResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Login with email + password",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/login/2fa": {
      "post": {
        "operationId": "AuthController_loginTwoFactor",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginTwoFactorDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JWT access + refresh tokens after 2FA verification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LoginResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Invalid 2FA code or expired challenge",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Complete login with 2FA code (AUTH-P16)",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/refresh": {
      "post": {
        "operationId": "AuthController_refresh",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "New access + refresh tokens",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LoginResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or expired refresh token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Refresh access token",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "operationId": "AuthController_logout",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Logged out successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          }
        },
        "summary": "Logout and revoke refresh token",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/forgot-password": {
      "post": {
        "operationId": "AuthController_forgotPassword",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password reset email sent if account exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Request password reset email",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/reset-password": {
      "post": {
        "operationId": "AuthController_resetPassword",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password reset successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or expired token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Reset password with token",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/send-otp": {
      "post": {
        "description": "Creates a Challenge record and dispatches an SMS code. Use returned challengeId for /verify-otp + /resend-otp + /challenge/:id. For verify-phone-fan the endpoint is public (signup before account exists); other purposes still accept a public call but should be paired with a session in the calling flow.",
        "operationId": "AuthController_sendOtp",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendOtpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OTP dispatched (SMS) and challenge persisted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ChallengeDispatchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error or rate-limit exhausted for this phone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Initiate phone OTP send",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/verify-otp": {
      "post": {
        "description": "Verifies the 6-digit code against the Challenge.codeHash. On success, the Challenge is marked as used. For login-2fa purpose the endpoint also issues an access token; other purposes return success only — the calling flow uses the verified Challenge to gate its own state change.",
        "operationId": "AuthController_verifyOtp",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyOtpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OTP verified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_VerifyOtpResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Invalid code, expired challenge, or attempt cap exhausted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Verify a phone OTP code",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/resend-otp": {
      "post": {
        "description": "Generates a fresh code, resets attempts, increments resendCount, and dispatches a new SMS. Caps: auth.otp_max_resends per challenge + auth.otp_resend_cooldown_seconds between resends.",
        "operationId": "AuthController_resendOtp",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResendOtpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OTP re-dispatched",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ChallengeDispatchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Resend cap reached or cooldown not elapsed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Challenge not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Resend OTP for an active challenge",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/challenge/{id}": {
      "get": {
        "description": "Returns masked phone (last 4 digits) + expiry + remaining attempts for an active challenge. Does NOT return the code. Public endpoint — challenge ownership is implicit in the unguessable challenge id.",
        "operationId": "AuthController_getChallenge",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Challenge metadata returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ChallengeMetadataResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Challenge not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Fetch challenge metadata for UI display",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/reactivate/validate": {
      "get": {
        "description": "Accepts an opaque token from an email link, returns the associated account status (paused | pending-deletion | expired | deleted). Used by the validate landing page to render appropriate UI before the user clicks \"Reactivate\".",
        "operationId": "AuthController_reactivateValidate",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Reactivation token from email link",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Token validation result returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ReactivateValidateResponseDto"
                }
              }
            }
          }
        },
        "summary": "Validate a reactivation token without performing reactivation",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/oauth/login": {
      "post": {
        "operationId": "OAuthController_login",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthLoginDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JWT access + refresh tokens",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_OAuthLoginResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error or provider disabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Token verification failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Email already exists — response includes hasPassword + hasOAuth",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Login or register via OAuth provider (Google, Apple, X)",
        "tags": [
          "OAuth"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/oauth/providers": {
      "get": {
        "operationId": "OAuthController_providers",
        "parameters": [],
        "responses": {
          "200": {
            "description": "List of enabled OAuth providers",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_OAuthProvidersResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "List available OAuth login providers",
        "tags": [
          "OAuth"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/referral/click/{code}": {
      "post": {
        "operationId": "ReferralController_trackClick",
        "parameters": [
          {
            "name": "code",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Click tracked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TrackClickResponseDto"
                }
              }
            }
          }
        },
        "summary": "Track referral click",
        "tags": [
          "Referrals"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/referral/"
      }
    },
    "/api/v1/webhooks/stripe": {
      "post": {
        "operationId": "StripeWebhookController_handleStripeWebhook",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Webhook received and queued"
          },
          "400": {
            "description": "Missing signature or invalid payload"
          },
          "503": {
            "description": "Service temporarily unavailable"
          }
        },
        "summary": "Stripe webhook receiver",
        "tags": [
          "Stripe Webhook"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/webhooks/"
      }
    },
    "/api/v1/bio/embed/{username}": {
      "get": {
        "operationId": "BioAnalyticsController_getEmbedBioPage",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Embeddable bio page returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicBioPageResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Embedding not enabled for this bio page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Bio page not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get embeddable bio page data (for iframe embed)",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/bio/"
      }
    },
    "/api/v1/bio/templates": {
      "get": {
        "operationId": "BioAnalyticsController_listTemplates",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Templates returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_BioTemplateListItemDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "List available bio page templates",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/bio/"
      }
    },
    "/api/v1/bio/{username}": {
      "get": {
        "operationId": "BioAnalyticsController_getPublicBioPage",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Bio page returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicBioPageResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Bio page not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get public bio page by username",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/bio/"
      }
    },
    "/api/v1/bio/{bioPageId}/view": {
      "post": {
        "operationId": "BioAnalyticsController_trackView",
        "parameters": [
          {
            "name": "bioPageId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackViewDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "View tracked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TrackResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Track bio page view",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/bio/"
      }
    },
    "/api/v1/bio/{bioPageId}/click": {
      "post": {
        "operationId": "BioAnalyticsController_trackClick",
        "parameters": [
          {
            "name": "bioPageId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackClickDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Click tracked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TrackResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Track bio link click",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/bio/"
      }
    },
    "/api/v1/webhooks/kyc/{provider}": {
      "post": {
        "operationId": "KycWebhookController_handleWebhook",
        "parameters": [
          {
            "name": "provider",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KycWebhookDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "Webhooks — KYC"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/webhooks/"
      }
    },
    "/api/v1/notifications/webpush/subscribe": {
      "post": {
        "operationId": "WebPushController_subscribe",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebPushSubscribeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Subscription created"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "summary": "Subscribe to web push notifications",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/webpush/unsubscribe": {
      "post": {
        "operationId": "WebPushController_unsubscribe",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebPushUnsubscribeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unsubscribed"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "summary": "Unsubscribe from web push notifications",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/webpush/subscriptions": {
      "get": {
        "operationId": "WebPushController_listSubscriptions",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Subscriptions returned"
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "summary": "List active push subscriptions",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/dmca": {
      "post": {
        "operationId": "DMCAPublicController_submit",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitDMCADto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "DMCA notice submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_DMCADetailDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Submit DMCA notice (public)",
        "tags": [
          "DMCA"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/dmca/"
      }
    },
    "/api/v1/dmca/{id}/counter-notice": {
      "post": {
        "operationId": "DMCAPublicController_submitCounter",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitCounterNoticeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Counter-notice accepted; restoration window scheduled"
          },
          "400": {
            "description": "Validation error or invalid DMCA state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "DMCA case not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Submit DMCA counter-notice (17 U.S.C. § 512(g)(3))",
        "tags": [
          "DMCA"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/dmca/"
      }
    },
    "/api/v1/reports": {
      "post": {
        "operationId": "ReportController_submitReport",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitReportDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Report submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_SubmitReportResultDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error or self-report attempt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized — login required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Target user not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate — pending report already exists for this target",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded — max 5 reports per hour",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "503": {
            "description": "Content reports are currently disabled (KILL_CONTENT_REPORTS)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Submit a report against another user or their content",
        "tags": [
          "Reports"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/reports/"
      }
    },
    "/api/v1/ops/health": {
      "get": {
        "operationId": "OpsController_health",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Service healthy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthStatusDto"
                }
              }
            }
          }
        },
        "summary": "Health check",
        "tags": [
          "Engineering Ops"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/ops/"
      }
    },
    "/api/v1/ops/ready": {
      "get": {
        "operationId": "OpsController_ready",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Service ready",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadinessDto"
                }
              }
            }
          }
        },
        "summary": "Readiness check",
        "tags": [
          "Engineering Ops"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/ops/"
      }
    },
    "/api/v1/analytics/session": {
      "post": {
        "operationId": "AnalyticsController_createSession",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSessionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_SessionCreatedDto"
                }
              }
            }
          }
        },
        "summary": "Create analytics session",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/analytics/"
      }
    },
    "/api/v1/analytics/pageview": {
      "post": {
        "operationId": "AnalyticsController_recordPageView",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordPageViewDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Page view recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PageViewCreatedDto"
                }
              }
            }
          }
        },
        "summary": "Record page view",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/analytics/"
      }
    },
    "/api/v1/analytics/session/{id}/heartbeat": {
      "patch": {
        "operationId": "AnalyticsController_sessionHeartbeat",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Heartbeat recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_HeartbeatResultDto"
                }
              }
            }
          }
        },
        "summary": "Session heartbeat",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/analytics/"
      }
    },
    "/api/v1/analytics/pageview/{id}/leave": {
      "patch": {
        "operationId": "AnalyticsController_pageLeave",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PageLeaveDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Page leave recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PageLeaveResultDto"
                }
              }
            }
          }
        },
        "summary": "Record page leave (duration + scroll)",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/analytics/"
      }
    },
    "/api/v1/discover/search": {
      "get": {
        "operationId": "DiscoverController_search",
        "parameters": [
          {
            "name": "query",
            "required": true,
            "in": "query",
            "description": "Search query",
            "schema": {
              "minLength": 2,
              "maxLength": 200,
              "example": "fitness",
              "type": "string"
            }
          },
          {
            "name": "platform",
            "required": false,
            "in": "query",
            "description": "Filter by platform",
            "schema": {
              "example": "instagram",
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Cursor for cursor-based pagination",
            "schema": {
              "example": "eyJpZCI6ImNsdTEyMyJ9",
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of results to return",
            "schema": {
              "minimum": 1,
              "maximum": 50,
              "example": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Search results returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CursorPaginatedCreatorsDto"
                }
              }
            }
          }
        },
        "summary": "Search creators",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      }
    },
    "/api/v1/discover/trending": {
      "get": {
        "operationId": "DiscoverController_trending",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of trending creators to return",
            "schema": {
              "minimum": 1,
              "maximum": 50,
              "example": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Trending creators returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorListDto"
                }
              }
            }
          }
        },
        "summary": "Get trending creators",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      }
    },
    "/api/v1/discover/featured": {
      "get": {
        "operationId": "DiscoverController_featured",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Featured creators returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorListDto"
                }
              }
            }
          }
        },
        "summary": "Get featured creators",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      }
    },
    "/api/v1/discover/category/{platform}": {
      "get": {
        "operationId": "DiscoverController_byCategory",
        "parameters": [
          {
            "name": "platform",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "description": "Filter by category",
            "schema": {
              "example": "fitness",
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Sort order",
            "schema": {
              "example": "trending",
              "type": "string"
            }
          },
          {
            "name": "dmType",
            "required": false,
            "in": "query",
            "description": "Filter by DM type",
            "schema": {
              "example": "FREE",
              "type": "string",
              "enum": [
                "FREE",
                "SINGLE_PAY",
                "PER_MESSAGE"
              ]
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Cursor for cursor-based pagination",
            "schema": {
              "example": "eyJpZCI6ImNsdTQ1NiJ9",
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of results to return",
            "schema": {
              "minimum": 1,
              "maximum": 50,
              "example": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Creators by category returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CursorPaginatedCreatorsDto"
                }
              }
            }
          }
        },
        "summary": "Get creators by category",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      }
    },
    "/api/v1/consent/cookies/policy": {
      "get": {
        "operationId": "CookieConsentController_getPolicy",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Cookie policy returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CookiePolicyDto"
                }
              }
            }
          }
        },
        "summary": "Get cookie consent policy",
        "tags": [
          "Cookie Consent"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/consent/"
      }
    },
    "/api/v1/consent/cookies/status": {
      "get": {
        "operationId": "CookieConsentController_getStatus",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Consent status returned"
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get current cookie consent status (works for both authenticated and anonymous users)",
        "tags": [
          "Cookie Consent"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/consent/"
      }
    },
    "/api/v1/consent/cookies": {
      "post": {
        "operationId": "CookieConsentController_saveConsent",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CookieConsentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Consent saved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ConsentSavedDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Save cookie consent preferences (works for both authenticated and anonymous users)",
        "tags": [
          "Cookie Consent"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/consent/"
      }
    },
    "/api/v1/public/pages": {
      "get": {
        "operationId": "PublicContentController_listPages",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Published CMS page list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_PublicCmsPageListItemDto"
                }
              }
            }
          }
        },
        "summary": "List published CMS pages (slug + title + locale + publishedAt)",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/pages/"
      }
    },
    "/api/v1/public/pages/{slug}": {
      "get": {
        "operationId": "PublicContentController_getPage",
        "parameters": [
          {
            "name": "slug",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "required": false,
            "in": "query",
            "description": "Locale code (default: en)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published CMS page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicCmsPageDto"
                }
              }
            }
          },
          "404": {
            "description": "Page not found or not published",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get published CMS page by slug",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/pages/"
      }
    },
    "/api/v1/public/blog": {
      "get": {
        "operationId": "PublicContentController_listBlogPosts",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (default: 1)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Items per page (default: 20, max: 50)",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "description": "Filter by category slug",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published blog posts list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicBlogListDataDto"
                }
              }
            }
          }
        },
        "summary": "List published blog posts",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/blog/"
      }
    },
    "/api/v1/public/blog/feed": {
      "get": {
        "operationId": "PublicContentController_getBlogRssFeed",
        "parameters": [],
        "responses": {
          "200": {
            "description": "RSS 2.0 XML feed"
          }
        },
        "summary": "RSS 2.0 feed of published blog posts",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/blog/"
      }
    },
    "/api/v1/public/blog/feed.atom": {
      "get": {
        "operationId": "PublicContentController_getBlogAtomFeed",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Atom XML feed"
          }
        },
        "summary": "Atom feed of published blog posts",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/blog/"
      }
    },
    "/api/v1/public/blog/{slug}": {
      "get": {
        "operationId": "PublicContentController_getBlogPost",
        "parameters": [
          {
            "name": "slug",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published blog post",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicBlogPostDto"
                }
              }
            }
          },
          "404": {
            "description": "Blog post not found or not published",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get published blog post by slug",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/blog/"
      }
    },
    "/api/v1/public/announcements": {
      "get": {
        "operationId": "PublicContentController_getActiveAnnouncements",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Active announcements",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_PublicAnnouncementDto"
                }
              }
            }
          }
        },
        "summary": "Get active announcements",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/announcements/"
      }
    },
    "/api/v1/public/help/categories": {
      "get": {
        "operationId": "PublicContentController_listPublishedHelpCategories",
        "parameters": [
          {
            "name": "locale",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published help categories",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_PublicHelpCategoryDto"
                }
              }
            }
          }
        },
        "summary": "List published help categories with article counts",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/help/"
      }
    },
    "/api/v1/public/help/articles": {
      "get": {
        "operationId": "PublicContentController_listPublishedHelpArticles",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "description": "Filter by category slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search in title/content/excerpt",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "featured",
            "required": false,
            "in": "query",
            "description": "Only featured articles",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published help articles list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicHelpArticleListDataDto"
                }
              }
            }
          }
        },
        "summary": "List published help articles (search, filter, featured)",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/help/"
      }
    },
    "/api/v1/public/help/articles/{slug}": {
      "get": {
        "operationId": "PublicContentController_getHelpArticle",
        "parameters": [
          {
            "name": "slug",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Published help article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicHelpArticleDto"
                }
              }
            }
          },
          "404": {
            "description": "Article not found or not published",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get published help article by slug",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/help/"
      }
    },
    "/api/v1/public/faq": {
      "get": {
        "operationId": "PublicContentController_listPublishedFaq",
        "parameters": [
          {
            "name": "locale",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "FAQ categories with items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_PublicFaqGroupDto"
                }
              }
            }
          }
        },
        "summary": "Get all published FAQ groups with items",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/faq/"
      }
    },
    "/api/v1/public/contact": {
      "post": {
        "operationId": "PublicContentController_submitContact",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitContactDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact form submitted successfully"
          }
        },
        "summary": "Submit a public contact form inquiry",
        "tags": [
          "Public Content"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/contact/"
      }
    },
    "/api/v1/legal/privacy": {
      "get": {
        "operationId": "LegalController_getPrivacyPolicy",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Privacy policy returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LegalDocumentDto"
                }
              }
            }
          }
        },
        "summary": "Get privacy policy",
        "tags": [
          "Legal"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/legal/"
      }
    },
    "/api/v1/legal/terms": {
      "get": {
        "operationId": "LegalController_getTermsOfService",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Terms of service returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LegalDocumentDto"
                }
              }
            }
          }
        },
        "summary": "Get terms of service",
        "tags": [
          "Legal"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/legal/"
      }
    },
    "/api/v1/themes": {
      "get": {
        "operationId": "ThemePresetPublicController_listPublished",
        "parameters": [
          {
            "name": "target",
            "required": false,
            "in": "query",
            "description": "Theme target (CLIENT or ADMIN)",
            "schema": {
              "enum": [
                "CLIENT",
                "ADMIN"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Array of published themes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PublicThemeListResponseDto"
                }
              }
            }
          }
        },
        "summary": "List published theme presets (for creator theme selection)",
        "tags": [
          "Themes"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/themes/"
      }
    },
    "/api/v1/themes/active": {
      "get": {
        "operationId": "ThemePresetPublicController_getActive",
        "parameters": [
          {
            "name": "target",
            "required": true,
            "in": "query",
            "description": "Theme target (CLIENT or ADMIN)",
            "schema": {
              "enum": [
                "CLIENT",
                "ADMIN"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Active theme preset or null",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ActiveThemeResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get active theme preset for target",
        "tags": [
          "Themes"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/themes/"
      }
    },
    "/api/v1/platform/stats": {
      "get": {
        "operationId": "PlatformController_getStats",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Platform statistics returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PlatformStatsDto"
                }
              }
            }
          }
        },
        "summary": "Public platform statistics (cached 1 hour)",
        "tags": [
          "Platform"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/platform/"
      }
    },
    "/api/v1/locales": {
      "get": {
        "operationId": "PublicI18nController_getLocales",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Array of active languages + version map",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_LocaleListResponseDto"
                }
              }
            }
          }
        },
        "summary": "List active languages with translation versions",
        "tags": [
          "i18n (Public)"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/locales/"
      }
    },
    "/api/v1/translations/{locale}": {
      "get": {
        "operationId": "PublicI18nController_getBundle",
        "parameters": [
          {
            "name": "locale",
            "required": true,
            "in": "path",
            "description": "ISO 639-1 locale code",
            "schema": {
              "example": "en",
              "type": "string"
            }
          },
          {
            "name": "if-none-match",
            "in": "header",
            "description": "ETag from previous response for conditional GET (304 on match)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "v",
            "required": false,
            "in": "query",
            "description": "Version number — if matches current version, returns immutable cached response",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Full translation bundle — dynamic Record<string, unknown>",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not modified (ETag match)"
          }
        },
        "summary": "Get full translation bundle for locale",
        "tags": [
          "i18n (Public)"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/translations/"
      }
    },
    "/api/v1/translations/{locale}/{namespace}": {
      "get": {
        "operationId": "PublicI18nController_getNamespaceBundle",
        "parameters": [
          {
            "name": "locale",
            "required": true,
            "in": "path",
            "description": "ISO 639-1 locale code",
            "schema": {
              "example": "en",
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "required": true,
            "in": "path",
            "description": "Translation namespace",
            "schema": {
              "example": "auth",
              "type": "string"
            }
          },
          {
            "name": "if-none-match",
            "in": "header",
            "description": "ETag from previous response for conditional GET (304 on match)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "v",
            "required": false,
            "in": "query",
            "description": "Version number — if matches current version, returns immutable cached response",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Namespace translation bundle — dynamic Record<string, unknown>",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not modified (ETag match)"
          }
        },
        "summary": "Get translation bundle for specific namespace",
        "tags": [
          "i18n (Public)"
        ],
        "x-biore-scope": "public",
        "x-biore-admin-managed": true,
        "x-biore-source-hint": "apps/api-core/src/modules/translations/"
      }
    },
    "/api/v1/auth/change-password": {
      "post": {
        "operationId": "AuthController_changePassword",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password changed, all sessions invalidated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error or same password",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Invalid current password or not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Change password for authenticated user",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/sessions": {
      "get": {
        "operationId": "AuthController_getSessions",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Active sessions returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_SessionListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List active sessions for current user",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/sessions/{id}": {
      "delete": {
        "operationId": "AuthController_revokeSession",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session revoked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Cannot revoke current session",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Revoke a specific session",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/sessions/revoke-all": {
      "post": {
        "operationId": "AuthController_revokeAllSessions",
        "parameters": [],
        "responses": {
          "200": {
            "description": "All other sessions revoked"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Revoke all sessions except the current one",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "operationId": "AuthController_me",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Current user identity returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UserIdentityResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Not authenticated or token expired",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get current authenticated user identity",
        "tags": [
          "Authentication"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/oauth/link": {
      "post": {
        "operationId": "OAuthController_link",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OAuthLinkDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Provider linked successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Provider already linked or disabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized or token verification failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Provider account linked to another user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Link OAuth provider to current account",
        "tags": [
          "OAuth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/oauth/unlink/{provider}": {
      "delete": {
        "operationId": "OAuthController_unlink",
        "parameters": [
          {
            "name": "provider",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Provider unlinked successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Provider not linked or only auth method",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Unlink OAuth provider from current account",
        "tags": [
          "OAuth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/2fa/setup": {
      "post": {
        "operationId": "TwoFactorController_generateSetup",
        "parameters": [],
        "responses": {
          "201": {
            "description": "2FA setup generated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TwoFactorSetupResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Generate 2FA setup (QR code + secret)",
        "tags": [
          "Two-Factor Auth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/2fa/setup-init": {
      "post": {
        "description": "Returns the same secret + QR + otpauthUrl as POST /auth/2fa/setup. Recovery codes are NOT pre-issued — they are returned by POST /auth/2fa/verify after the user proves they can read TOTP from their authenticator. The recoveryCodes:null shape is a forward-compat field so the frontend type stays stable across endpoints.",
        "operationId": "TwoFactorController_setupInit",
        "parameters": [],
        "responses": {
          "200": {
            "description": "2FA setup initiated (recovery codes deferred to /verify)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TwoFactorSetupInitResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "2FA already enabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Initiate 2FA TOTP setup (alias of /setup with explicit recoveryCodes:null contract)",
        "tags": [
          "Two-Factor Auth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/2fa/verify": {
      "post": {
        "operationId": "TwoFactorController_verifyAndActivate",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyTotpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "2FA activated with recovery codes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_BackupCodesResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid TOTP code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Verify TOTP code and activate 2FA",
        "tags": [
          "Two-Factor Auth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/2fa/disable": {
      "post": {
        "operationId": "TwoFactorController_disable",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisableTwoFactorDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "2FA disabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Disable 2FA",
        "tags": [
          "Two-Factor Auth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/2fa/backup-codes/regenerate": {
      "post": {
        "operationId": "TwoFactorController_regenerateBackupCodes",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyTotpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "New backup codes generated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_BackupCodesResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid TOTP code or 2FA not enabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Regenerate backup codes (requires valid TOTP code)",
        "tags": [
          "Two-Factor Auth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/auth/2fa/status": {
      "get": {
        "operationId": "TwoFactorController_isEnabled",
        "parameters": [],
        "responses": {
          "200": {
            "description": "2FA status returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TwoFactorStatusResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Check if 2FA is enabled",
        "tags": [
          "Two-Factor Auth"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/auth/"
      }
    },
    "/api/v1/referral/link": {
      "get": {
        "operationId": "ReferralController_getLink",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Referral link returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ReferralLinkCodeResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get referral link",
        "tags": [
          "Referrals"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/referral/"
      }
    },
    "/api/v1/referral/dashboard": {
      "get": {
        "operationId": "ReferralController_getDashboard",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Dashboard returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ReferralDashboardResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get referral dashboard",
        "tags": [
          "Referrals"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/referral/"
      }
    },
    "/api/v1/referral/coupon/apply": {
      "post": {
        "operationId": "ReferralController_applyCoupon",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyCouponDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Coupon applied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ApplyCouponResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or expired coupon",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Apply a coupon",
        "tags": [
          "Referrals"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/referral/"
      }
    },
    "/api/v1/wallet/packages": {
      "get": {
        "operationId": "WalletController_getPackages",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Package options and limits",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_WalletPackagesResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get available wallet load packages and limits",
        "tags": [
          "Wallet"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/wallet/"
      }
    },
    "/api/v1/wallet/balance": {
      "get": {
        "operationId": "WalletController_getBalance",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Wallet balance returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_WalletBalanceResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get wallet balance",
        "tags": [
          "Wallet"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/wallet/"
      }
    },
    "/api/v1/wallet/load": {
      "post": {
        "operationId": "WalletController_loadWallet",
        "parameters": [
          {
            "name": "idempotency-key",
            "required": true,
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletLoadDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Stripe checkout session created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_WalletLoadSessionResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid amount or validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests — velocity limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create wallet load session via Stripe",
        "tags": [
          "Wallet"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/wallet/"
      }
    },
    "/api/v1/wallet/activity": {
      "get": {
        "operationId": "WalletController_getActivity",
        "parameters": [
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Filter by transaction type",
            "schema": {
              "enum": [
                "CREDIT",
                "DEBIT",
                "EXPIRY",
                "CHARGEBACK"
              ],
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (1-based)",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Items per page",
            "schema": {
              "example": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated activity feed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedApiResponse_WalletActivityItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get wallet activity feed",
        "tags": [
          "Wallet"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/wallet/"
      }
    },
    "/api/v1/creators/upgrade": {
      "post": {
        "operationId": "CreatorController_upgradeToCreator",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardingDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "User upgraded to creator",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UpgradeToCreatorResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "User is already a creator",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "503": {
            "description": "Creator upgrades are currently disabled (KILL_CREATOR_UPGRADE)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Upgrade user to creator",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/profile": {
      "get": {
        "operationId": "CreatorController_getProfile",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Creator profile returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorProfileResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get creator profile",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/social/connect": {
      "post": {
        "operationId": "CreatorController_connectSocial",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectSocialDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Social account connected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error or OAuth verification failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Connect social account via OAuth verification",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/social/disconnect": {
      "post": {
        "operationId": "CreatorController_disconnectSocial",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisconnectSocialDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Social account disconnected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Social account not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Disconnect social account",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/social": {
      "get": {
        "operationId": "CreatorController_getSocialAccounts",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Social accounts returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_SocialAccountItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get connected social accounts",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/dashboard": {
      "get": {
        "operationId": "CreatorController_getDashboard",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Dashboard data returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_DashboardResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get creator dashboard summary (earnings, level, wallet)",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/dashboard/checklist": {
      "get": {
        "operationId": "CreatorController_getChecklist",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Checklist returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ChecklistResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get creator setup checklist with completion status",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/dashboard/activity": {
      "get": {
        "operationId": "CreatorController_getActivity",
        "parameters": [
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Activity items returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ActivityResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get recent activity feed (messages, payouts, followers)",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/{creatorId}/bio": {
      "get": {
        "operationId": "CreatorController_getBioPage",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Bio page returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_BioPageResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Bio page not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get bio page",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      },
      "patch": {
        "operationId": "CreatorController_updateBioPage",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBioPageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bio page updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Bio page not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update bio page",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/{creatorId}/links": {
      "post": {
        "operationId": "CreatorController_addLink",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBioLinkDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Link added",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_AddLinkResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Add a bio link",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/links/{linkId}": {
      "patch": {
        "operationId": "CreatorController_updateLink",
        "parameters": [
          {
            "name": "linkId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBioLinkDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Link updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this link",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Link not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update a bio link",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      },
      "delete": {
        "operationId": "CreatorController_deleteLink",
        "parameters": [
          {
            "name": "linkId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Link deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this link",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Link not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a bio link",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/{creatorId}/links/reorder": {
      "post": {
        "operationId": "CreatorController_reorderLinks",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderLinksDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Links reordered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reorder bio links",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/{creatorId}/dm-config": {
      "get": {
        "operationId": "CreatorController_getDMConfig",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "DM config returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_DMConfigResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get DM configuration",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      },
      "patch": {
        "operationId": "CreatorController_setDMConfig",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DMConfigDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "DM config updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update DM configuration",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/{creatorId}/vacation": {
      "get": {
        "operationId": "CreatorController_getVacation",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Vacation status returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_VacationStatusResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get vacation status",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      },
      "patch": {
        "operationId": "CreatorController_setVacation",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetVacationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Vacation mode updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this creator profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Set vacation mode",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/payout-settings": {
      "get": {
        "operationId": "CreatorController_getPayoutSettings",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Payout settings returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PayoutSettingsResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get payout settings (bank details, Stripe status, available methods)",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/bank-details": {
      "patch": {
        "operationId": "CreatorController_updateBankDetails",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBankDetailsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bank details updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update bank details for bank transfer payouts",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/kyc/start": {
      "post": {
        "operationId": "CreatorController_startKyc",
        "parameters": [],
        "responses": {
          "201": {
            "description": "KYC session started, redirect URL returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_KycStartResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "KYC already approved or in progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "503": {
            "description": "KYC verification is currently disabled (KILL_KYC)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Start KYC verification process",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/kyc/status": {
      "get": {
        "operationId": "CreatorController_getKycStatus",
        "parameters": [],
        "responses": {
          "200": {
            "description": "KYC status returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorKycStatusDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get KYC verification status",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/subscribe/confirm": {
      "get": {
        "operationId": "CreatorController_confirmSubscription",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Subscription confirmed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Invalid or expired confirmation token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Confirm email subscription via token from confirmation email",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/subscribe/resend": {
      "post": {
        "operationId": "CreatorController_resendSubscriptionConfirmation",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResendConfirmationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Confirmation email resent if subscriber exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Resend confirmation email to unconfirmed subscriber",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/unsubscribe": {
      "get": {
        "operationId": "CreatorController_unsubscribe",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Unsubscribed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Subscription not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Unsubscribe from bio page email list",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/{bioPageId}/subscribe": {
      "post": {
        "operationId": "CreatorController_subscribe",
        "parameters": [
          {
            "name": "bioPageId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscribeToBioDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Subscription initiated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Email collection not enabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Already subscribed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Subscribe to bio page email list",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/subscribers": {
      "get": {
        "operationId": "CreatorController_getSubscribers",
        "parameters": [
          {
            "name": "page",
            "required": true,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Subscribers returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_SubscribersResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Bio page not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get email subscribers for your bio page",
        "tags": [
          "Creator"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/bio/{bioPageId}/analytics": {
      "get": {
        "operationId": "BioAnalyticsController_getAnalytics",
        "parameters": [
          {
            "name": "bioPageId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Analytics returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorAnalyticsDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this bio page",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Bio page not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get bio page analytics",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/bio/"
      }
    },
    "/api/v1/creators/stripe-connect/initiate": {
      "post": {
        "operationId": "StripeConnectController_initiate",
        "parameters": [],
        "responses": {
          "201": {
            "description": "Stripe Connect link returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_StripeConnectInitiateResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Initiate Stripe Connect onboarding",
        "tags": [
          "Creator — Stripe Connect"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/stripe-connect/status": {
      "get": {
        "operationId": "StripeConnectController_status",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Connect status returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_StripeConnectStatusResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get Stripe Connect status",
        "tags": [
          "Creator — Stripe Connect"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/stripe-connect/refresh-link": {
      "post": {
        "operationId": "StripeConnectController_refreshLink",
        "parameters": [],
        "responses": {
          "200": {
            "description": "New link returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_StripeConnectRefreshLinkResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Refresh Stripe Connect onboarding link",
        "tags": [
          "Creator — Stripe Connect"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/stripe-connect/dashboard-link": {
      "post": {
        "operationId": "StripeConnectController_dashboardLink",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Dashboard link returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_StripeConnectDashboardLinkResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get Stripe Express dashboard link",
        "tags": [
          "Creator — Stripe Connect"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/notifications": {
      "get": {
        "operationId": "UserNotificationController_list",
        "parameters": [
          {
            "name": "read",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated notifications returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedApiResponse_NotificationItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List user notifications",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/unread-count": {
      "get": {
        "operationId": "UserNotificationController_unreadCount",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Unread count returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UnreadNotificationCountResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get unread notification count",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/{id}/read": {
      "patch": {
        "operationId": "UserNotificationController_markRead",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Notification marked as read",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Notification not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark notification as read",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/read-all": {
      "post": {
        "operationId": "UserNotificationController_markAllRead",
        "parameters": [],
        "responses": {
          "200": {
            "description": "All notifications marked as read",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MarkAllReadResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark all notifications as read",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/preferences": {
      "get": {
        "operationId": "UserNotificationController_getPreferences",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Preferences returned (merged with system defaults)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_NotificationPreferenceItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get notification preferences",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/preferences/{eventKey}": {
      "patch": {
        "operationId": "UserNotificationController_updatePreference",
        "parameters": [
          {
            "name": "eventKey",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Preference updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Event key not found in system defaults",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update notification preference for an event",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/clear-read": {
      "delete": {
        "operationId": "UserNotificationController_clearReadNotifications",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Read notifications cleared",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ClearReadResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete all read notifications",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/{id}": {
      "delete": {
        "operationId": "UserNotificationController_deleteNotification",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Notification deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Notification not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a notification",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/notifications/unsubscribe": {
      "get": {
        "operationId": "UserNotificationController_unsubscribe",
        "parameters": [
          {
            "name": "email",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Unsubscribed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UnsubscribeResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Unsubscribe from email notifications via signed link",
        "tags": [
          "Notifications"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/notifications/"
      }
    },
    "/api/v1/upload/presign": {
      "post": {
        "description": "Returns a presigned PUT URL for direct client-to-R2 upload.\n\n**Upload constraints (configurable via admin panel):**\n| Type | Allowed MIME Types | Max Size |\n|------|--------------------|----------|\n| avatar | image/jpeg, image/png, image/webp | 5 MB |\n| media | image/jpeg, image/png, image/webp, image/gif, video/mp4 | 50 MB |\n| document | application/pdf, image/jpeg, image/png | 10 MB |\n\nPresigned URL expires in 300 seconds (5 minutes) by default.\nConfig keys: `upload.max_avatar_size_mb`, `upload.max_media_size_mb`, `upload.max_document_size_mb`, `upload.presign_expiry_seconds`",
        "operationId": "UploadController_getPresignedUrl",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUploadDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Presigned URL generated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PresignedUrlResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid upload type or content type not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get presigned upload URL",
        "tags": [
          "File Upload"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/upload/"
      }
    },
    "/api/v1/payouts/request": {
      "post": {
        "operationId": "PayoutController_requestPayout",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestPayoutDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Payout request created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_RequestPayoutResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error or insufficient balance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests — velocity limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Request a payout",
        "tags": [
          "Payouts"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/payouts/"
      }
    },
    "/api/v1/payouts/report": {
      "get": {
        "operationId": "PayoutController_getReport",
        "parameters": [
          {
            "name": "month",
            "required": false,
            "in": "query",
            "description": "Month in YYYY-MM format",
            "schema": {
              "example": "2026-03",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payout report returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PayoutReportResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get payout report",
        "tags": [
          "Payouts"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/payouts/"
      }
    },
    "/api/v1/messages": {
      "post": {
        "operationId": "MessageController_sendMessage",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Message sent successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_SendMessageResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, duplicate, or empty content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Blocked by creator",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests — rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Send a message to a creator",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      },
      "get": {
        "operationId": "MessageController_listMessages",
        "parameters": [
          {
            "name": "role",
            "required": false,
            "in": "query",
            "description": "View as fan (sent) or creator (received)",
            "schema": {
              "enum": [
                "fan",
                "creator"
              ],
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "required": false,
            "in": "query",
            "description": "Filter by chat session ID (UUID)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (1-based)",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Items per page (max 100)",
            "schema": {
              "example": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated message list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedApiResponse_MessageInboxItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not a participant in the requested session",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List messages (inbox/sent)",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/search": {
      "get": {
        "operationId": "MessageController_searchMessages",
        "parameters": [
          {
            "name": "query",
            "required": true,
            "in": "query",
            "description": "Search query string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (1-based)",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Items per page (max 100)",
            "schema": {
              "example": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated search results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedApiResponse_MessageSearchItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Search messages by content",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/conversations": {
      "get": {
        "operationId": "MessageController_getConversations",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated conversation list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ConversationListResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get conversation list with last message and unread count",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/unread-count": {
      "get": {
        "operationId": "MessageController_getUnreadCount",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Unread count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UnreadCountResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get total unread message count",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/{id}": {
      "get": {
        "operationId": "MessageController_getMessage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Message detail returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_MessageDetailClientDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not your message",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Message not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get message detail",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/{id}/reply": {
      "post": {
        "operationId": "MessageController_replyToMessage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplyMessageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reply sent successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid message status for reply",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the receiver — only the creator can reply",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Message not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reply to a message (creator only)",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/{id}/reject": {
      "post": {
        "operationId": "MessageController_rejectMessage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectMessageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message rejected and refunded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid message status for rejection",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the receiver — only the creator can reject",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Message not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reject a message (creator only, triggers refund)",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/messages/{id}/rate": {
      "post": {
        "operationId": "MessageController_rateMessage",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RateMessageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rating submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid rating or message status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Only the sender can rate",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Message not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Rate a completed message (fan/sender only)",
        "tags": [
          "Messages"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/messages/"
      }
    },
    "/api/v1/analytics/track": {
      "post": {
        "operationId": "AnalyticsController_track",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackEventDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event tracked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TrackingResultDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Track analytics event",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/analytics/"
      }
    },
    "/api/v1/analytics/session/{id}/identify": {
      "patch": {
        "operationId": "AnalyticsController_identifySession",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User identified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_IdentifySessionResultDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Link userId to session after login",
        "tags": [
          "Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/analytics/"
      }
    },
    "/api/v1/creators/analytics/overview": {
      "get": {
        "operationId": "CreatorAnalyticsController_overview",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Overview returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorAnalyticsOverviewDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator analytics overview",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/traffic": {
      "get": {
        "operationId": "CreatorAnalyticsController_traffic",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Traffic sources returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorTrafficDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator traffic sources",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/geo": {
      "get": {
        "operationId": "CreatorAnalyticsController_geo",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Geo distribution returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorGeoDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator visitor countries",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/devices": {
      "get": {
        "operationId": "CreatorAnalyticsController_devices",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Device breakdown returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorDevicesDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator visitor devices",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/trend": {
      "get": {
        "operationId": "CreatorAnalyticsController_trend",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Daily trend returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorTrendDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator daily view/click trend",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/sessions": {
      "get": {
        "operationId": "CreatorAnalyticsController_sessions",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session metrics returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorSessionsDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator session metrics",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/links": {
      "get": {
        "operationId": "CreatorAnalyticsController_links",
        "parameters": [
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Link performance returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorLinksDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Creator link performance",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/creators/analytics/export": {
      "get": {
        "operationId": "CreatorAnalyticsController_exportAnalytics",
        "parameters": [
          {
            "name": "type",
            "required": true,
            "in": "query",
            "schema": {
              "enum": [
                "overview",
                "traffic",
                "links"
              ],
              "type": "string"
            }
          },
          {
            "name": "days",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "CSV file — attachment: biore-analytics-{type}-{date}.csv"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Creator profile not found",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Export creator analytics as CSV",
        "tags": [
          "Creator Analytics"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/creators/"
      }
    },
    "/api/v1/discover/history/{creatorId}": {
      "post": {
        "operationId": "DiscoverHistoryController_recordView",
        "parameters": [
          {
            "name": "creatorId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "View recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_RecordViewResultDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Record creator profile view",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      }
    },
    "/api/v1/discover/history": {
      "get": {
        "operationId": "DiscoverHistoryController_getHistory",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of recent views to return",
            "schema": {
              "minimum": 1,
              "maximum": 50,
              "example": 10,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Recently viewed returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreatorListDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get recently viewed creators",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      },
      "delete": {
        "operationId": "DiscoverHistoryController_clearHistory",
        "parameters": [],
        "responses": {
          "200": {
            "description": "History cleared",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Clear recently viewed history",
        "tags": [
          "Discover"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/discover/"
      }
    },
    "/api/v1/users/profile": {
      "get": {
        "operationId": "UserController_getProfile",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Profile returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UserProfileDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get user profile",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      },
      "patch": {
        "operationId": "UserController_updateProfile",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProfileDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Profile updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UpdatedProfileDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update user profile",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/avatar": {
      "patch": {
        "operationId": "UserController_setAvatar",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetAvatarDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Avatar set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_AvatarUrlResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Set user avatar",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/avatar/remove": {
      "post": {
        "operationId": "UserController_removeAvatar",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Avatar removed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Remove user avatar",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/intent": {
      "patch": {
        "operationId": "UserController_setIntent",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetIntentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Intent set successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Intent already set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Set user intent (one-time, post-registration)",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/username": {
      "patch": {
        "operationId": "UserController_changeUsername",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeUsernameDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Username changed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Username already taken",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Change username",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/check-username": {
      "get": {
        "operationId": "UserController_checkUsername",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Availability result returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UsernameAvailabilityDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Check username availability (public — used on registration form)",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/change-email": {
      "post": {
        "operationId": "UserController_changeEmail",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeEmailDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verification email sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_EmailChangeMessageDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid email or wrong password",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Email already in use",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Request email change (sends verification to new email)",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/settings": {
      "get": {
        "operationId": "UserController_getSettings",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Settings returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UserSettingsDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get user settings",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      },
      "patch": {
        "operationId": "UserController_updateSettings",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSettingsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Settings updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UserSettingsDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update user settings",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/deactivate": {
      "post": {
        "operationId": "UserController_deactivateAccount",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Account deactivated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Account not active",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Deactivate account",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/reactivate": {
      "post": {
        "description": "Two auth modes: (1) authenticated session — Bearer or biore_session cookie, body {} — reactivates the JWT user. (2) token-bearer — X-Reactivate-Token header OR { token } in body, no JWT required. If both header and body token are present, the header wins. If neither token nor JWT is present, returns 401.",
        "operationId": "UserController_reactivateAccount",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReactivateTokenBearerDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Account reactivated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Account not deactivated or token invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Missing JWT and missing/invalid token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          },
          {
            "bearer": []
          }
        ],
        "summary": "Reactivate account (auth-session OR token-bearer)",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/delete": {
      "post": {
        "operationId": "UserController_requestDeletion",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestDeletionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deletion scheduled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_DeletionScheduledDto"
                }
              }
            }
          },
          "400": {
            "description": "Wrong password",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Deletion already scheduled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Request account deletion",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/export": {
      "post": {
        "operationId": "UserController_requestExport",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Export request queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ExportRequestedDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Export already in progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Request data export (GDPR)",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/consent": {
      "post": {
        "operationId": "UserController_recordConsent",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordConsentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Consent recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_ConsentRecordedDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Record user consent",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      },
      "get": {
        "operationId": "UserController_getConsentHistory",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Consent history returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArrayApiResponse_ConsentHistoryItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get consent history",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/appeals": {
      "post": {
        "operationId": "UserController_submitAppeal",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitAppealDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Appeal submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_AppealSubmittedDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid appeal type or already has pending appeal",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Submit an appeal (max 3 per day)",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/block/{userId}": {
      "post": {
        "operationId": "UserController_blockUser",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User blocked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Cannot block yourself",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "User already blocked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Block a user",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      },
      "delete": {
        "operationId": "UserController_unblockUser",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User unblocked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "User not blocked",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Unblock a user",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/blocked": {
      "get": {
        "operationId": "UserController_getBlockedUsers",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Blocked users list returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_BlockedUsersResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get blocked users list",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/users/attribution": {
      "get": {
        "operationId": "UserController_getAttribution",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Attribution data returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_UserAttributionDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get user attribution",
        "tags": [
          "User"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/users/"
      }
    },
    "/api/v1/gdpr/export": {
      "post": {
        "operationId": "GdprController_requestExport",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Export request created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_GdprExportRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Export already pending or processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded — max 3 per day",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Request data export (GDPR Art. 15) — max 3 per day",
        "tags": [
          "GDPR"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/gdpr/"
      }
    },
    "/api/v1/gdpr/export/{id}/status": {
      "get": {
        "operationId": "GdprController_getExportStatus",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Export status returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_GdprExportStatusDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — not your request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Export request not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Check export request status",
        "tags": [
          "GDPR"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/gdpr/"
      }
    },
    "/api/v1/gdpr/export/{id}/download": {
      "get": {
        "operationId": "GdprController_downloadExport",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download URL returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_GdprExportDownloadDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden — not your request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Export not found or file not ready",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Download export file (only when COMPLETED)",
        "tags": [
          "GDPR"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/gdpr/"
      }
    },
    "/api/v1/gdpr/delete": {
      "post": {
        "operationId": "GdprController_requestDeletion",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Deletion request created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_GdprDeletionRequestDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "409": {
            "description": "Deletion already pending",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded — max 1 per day",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Request account deletion (GDPR Art. 17) — max 1 per day",
        "tags": [
          "GDPR"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/gdpr/"
      },
      "delete": {
        "operationId": "GdprController_cancelDeletion",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Deletion request cancelled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "No pending deletion request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Cancel pending deletion request",
        "tags": [
          "GDPR"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/gdpr/"
      }
    },
    "/api/v1/presence/{userId}/last-seen": {
      "get": {
        "operationId": "PresenceController_getLastSeen",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Presence snapshot returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_PresenceLastSeenDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests — rate limited",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get a user's last-seen timestamp and current online status",
        "tags": [
          "Presence"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/presence/"
      }
    },
    "/api/v1/tickets": {
      "get": {
        "operationId": "TicketController_list",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number (1-based)",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Items per page (max 100)",
            "schema": {
              "example": 20,
              "type": "number"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Filter by ticket status",
            "schema": {
              "enum": [
                "OPEN",
                "ASSIGNED",
                "IN_PROGRESS",
                "WAITING_USER",
                "WAITING_INTERNAL",
                "RESOLVED",
                "CLOSED"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated ticket list — { items, total, page, limit, totalPages }",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedApiResponse_TicketListItemDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List my tickets",
        "tags": [
          "Support"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/tickets/"
      },
      "post": {
        "operationId": "TicketController_create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTicketDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Ticket created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_CreateTicketResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create support ticket",
        "tags": [
          "Support"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/tickets/"
      }
    },
    "/api/v1/tickets/{ticketId}": {
      "get": {
        "operationId": "TicketController_get",
        "parameters": [
          {
            "name": "ticketId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ticket returned",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse_TicketDetailDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Ticket not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get ticket detail",
        "tags": [
          "Support"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/tickets/"
      }
    },
    "/api/v1/tickets/{ticketId}/reply": {
      "post": {
        "operationId": "TicketController_reply",
        "parameters": [
          {
            "name": "ticketId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReplyTicketDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reply sent",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this ticket",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Ticket not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reply to ticket",
        "tags": [
          "Support"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/tickets/"
      }
    },
    "/api/v1/tickets/{ticketId}/reopen": {
      "post": {
        "operationId": "TicketController_reopen",
        "parameters": [
          {
            "name": "ticketId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ticket reopened",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessOnlyResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "403": {
            "description": "Not the owner of this ticket",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Ticket not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reopen ticket",
        "tags": [
          "Support"
        ],
        "x-biore-scope": "user",
        "x-biore-admin-managed": false,
        "x-biore-source-hint": "apps/api-core/src/modules/tickets/"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http"
      }
    },
    "schemas": {
      "ConfigDomainDto": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "example": "auth"
          },
          "categoryCount": {
            "type": "number",
            "example": 6
          },
          "keyCount": {
            "type": "number",
            "example": 19
          }
        },
        "required": [
          "domain",
          "categoryCount",
          "keyCount"
        ]
      },
      "ArrayApiResponse_ConfigDomainDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigDomainDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ValidationErrorDetail": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "email must be an email",
            "description": "Validation error message"
          }
        },
        "required": [
          "message"
        ]
      },
      "ErrorPayload": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "AUTH_UNAUTHORIZED",
            "description": "Machine-readable error code"
          },
          "message": {
            "type": "string",
            "example": "Invalid credentials",
            "description": "Human-readable error message (do NOT display to users — use i18nKey)"
          },
          "i18nKey": {
            "type": "string",
            "example": "auth.login.invalid_credentials",
            "description": "i18n translation key for frontend display"
          },
          "i18nVars": {
            "type": "object",
            "description": "Variables for i18n interpolation",
            "example": {
              "field": "email"
            },
            "additionalProperties": true
          },
          "details": {
            "description": "Validation error details (only for 400 VALIDATION_ERROR)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationErrorDetail"
            }
          },
          "correlationId": {
            "type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "description": "Request correlation ID for debugging"
          }
        },
        "required": [
          "code",
          "message"
        ]
      },
      "ErrorResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": false
          },
          "error": {
            "$ref": "#/components/schemas/ErrorPayload"
          }
        },
        "required": [
          "success",
          "error"
        ]
      },
      "ConfigDomainDetailDto": {
        "type": "object",
        "properties": {}
      },
      "ApiResponse_ConfigDomainDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ConfigDomainDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ConfigEntryDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "admin_ops.expired_message_batch_size"
          },
          "value": {
            "type": "string",
            "example": "100"
          },
          "type": {
            "type": "string",
            "example": "number"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Number of expired messages processed per cron run"
          }
        },
        "required": [
          "key",
          "value",
          "type"
        ]
      },
      "ArrayApiResponse_ConfigEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigEntryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_ConfigEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ConfigEntryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ConfigEffectiveDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "auth.session.access_token_expiry_minutes"
          },
          "defaultValue": {
            "type": "string",
            "example": "15"
          },
          "activeValue": {
            "type": "string",
            "nullable": true,
            "example": "30"
          },
          "effectiveValue": {
            "type": "string",
            "example": "30"
          },
          "source": {
            "type": "string",
            "enum": [
              "default",
              "admin",
              "legacy"
            ],
            "example": "admin"
          },
          "definition": {
            "type": "object",
            "nullable": true,
            "description": "Full ConfigDefinition or null for legacy keys"
          }
        },
        "required": [
          "key",
          "defaultValue",
          "effectiveValue",
          "source"
        ]
      },
      "ApiResponse_ConfigEffectiveDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ConfigEffectiveDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetConfigDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Config value to set"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the change (audit trail)"
          }
        },
        "required": [
          "value"
        ]
      },
      "SuccessOnlyResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true,
            "description": "Operation succeeded"
          }
        },
        "required": [
          "success"
        ]
      },
      "SetScopedConfigDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Config value to set"
          },
          "scopeType": {
            "type": "string",
            "description": "Scope type (e.g. global, platform, region)"
          },
          "scopeKey": {
            "type": "string",
            "description": "Scope key (e.g. ios, android, eu)"
          },
          "priority": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "Priority for scope resolution (0-1000, higher wins)",
            "example": 100
          },
          "reason": {
            "type": "string",
            "description": "Reason for the change (audit trail)"
          }
        },
        "required": [
          "value",
          "scopeType"
        ]
      },
      "ConfigHistoryEntryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "oldValue": {
            "type": "string",
            "nullable": true,
            "example": "15"
          },
          "newValue": {
            "type": "string",
            "example": "30"
          },
          "scopeType": {
            "type": "string",
            "example": "global",
            "description": "Scope type (new system only)"
          },
          "scopeKey": {
            "type": "string",
            "nullable": true
          },
          "changedBy": {
            "type": "string",
            "format": "uuid"
          },
          "changeReason": {
            "type": "string",
            "nullable": true,
            "example": "Increased for security"
          },
          "action": {
            "type": "string",
            "example": "SET",
            "description": "SET, ROLLBACK, or RESET_TO_DEFAULT"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "newValue",
          "scopeType",
          "changedBy",
          "action",
          "createdAt"
        ]
      },
      "ArrayApiResponse_ConfigHistoryEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigHistoryEntryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RollbackConfigDto": {
        "type": "object",
        "properties": {
          "auditLogId": {
            "type": "string",
            "description": "Audit log entry ID to rollback to"
          }
        },
        "required": [
          "auditLogId"
        ]
      },
      "ConfigAuditLogDefinitionEmbedDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "auth.session.access_token_expiry_minutes"
          },
          "domain": {
            "type": "string",
            "example": "auth"
          },
          "category": {
            "type": "string",
            "example": "session"
          },
          "displayName": {
            "type": "string",
            "example": "Access Token Expiry"
          }
        },
        "required": [
          "key",
          "domain",
          "category",
          "displayName"
        ]
      },
      "ConfigAuditLogEntryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "definitionId": {
            "type": "string",
            "format": "uuid"
          },
          "oldValue": {
            "type": "string",
            "nullable": true
          },
          "newValue": {
            "type": "string",
            "example": "30"
          },
          "scopeType": {
            "type": "string",
            "example": "global"
          },
          "scopeKey": {
            "type": "string",
            "nullable": true
          },
          "changedBy": {
            "type": "string",
            "format": "uuid"
          },
          "changeReason": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "example": "SET"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "definition": {
            "$ref": "#/components/schemas/ConfigAuditLogDefinitionEmbedDto"
          }
        },
        "required": [
          "id",
          "definitionId",
          "newValue",
          "scopeType",
          "changedBy",
          "action",
          "createdAt",
          "definition"
        ]
      },
      "PaginatedData_ConfigAuditLogEntryDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigAuditLogEntryDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_ConfigAuditLogEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_ConfigAuditLogEntryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FeatureFlagDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string",
            "example": "auto_payout.enabled"
          },
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Auto-scheduled weekly payouts"
          },
          "updatedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "key",
          "enabled",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_FeatureFlagDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeatureFlagDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateFlagDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Unique feature flag key"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description"
          },
          "defaultValue": {
            "type": "boolean",
            "description": "Default enabled state (defaults to false)"
          }
        },
        "required": [
          "key"
        ]
      },
      "ApiResponse_FeatureFlagDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/FeatureFlagDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ToggleFlagDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether the feature flag should be enabled"
          }
        },
        "required": [
          "enabled"
        ]
      },
      "KillSwitchDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "KILL_PAYMENT"
          },
          "system": {
            "type": "string",
            "example": "PAYMENT"
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "key",
          "system",
          "active",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_KillSwitchDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KillSwitchDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ToggleKillSwitchDto": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Whether the kill switch should be active"
          }
        },
        "required": [
          "active"
        ]
      },
      "SecretEntryDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "STRIPE_SECRET_KEY"
          },
          "provider": {
            "type": "string",
            "nullable": true,
            "example": "stripe"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Stripe API secret key"
          },
          "hasValue": {
            "type": "boolean",
            "example": true
          },
          "rotatedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "key",
          "hasValue",
          "createdAt"
        ]
      },
      "ArrayApiResponse_SecretEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecretEntryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "InitiateRotationDto": {
        "type": "object",
        "properties": {
          "secretKey": {
            "type": "string",
            "description": "The secret key to rotate"
          },
          "newValue": {
            "type": "string",
            "description": "The new value for the secret"
          }
        },
        "required": [
          "secretKey",
          "newValue"
        ]
      },
      "RotationStatusDto": {
        "type": "object",
        "properties": {
          "secretKey": {
            "type": "string",
            "example": "JWT_SECRET"
          },
          "hasRotation": {
            "type": "boolean",
            "example": false
          },
          "currentKeySet": {
            "type": "boolean",
            "example": true
          },
          "rotatedKeySet": {
            "type": "boolean",
            "example": false
          }
        },
        "required": [
          "secretKey",
          "hasRotation",
          "currentKeySet",
          "rotatedKeySet"
        ]
      },
      "ApiResponse_RotationStatusDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RotationStatusDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CompleteRotationDto": {
        "type": "object",
        "properties": {
          "secretKey": {
            "type": "string",
            "description": "The secret key to complete rotation for"
          }
        },
        "required": [
          "secretKey"
        ]
      },
      "TranslationOverrideDto": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string",
            "example": "common"
          },
          "key": {
            "type": "string",
            "example": "welcome_message"
          },
          "locale": {
            "type": "string",
            "example": "tr"
          },
          "value": {
            "type": "string",
            "example": "Hosgeldiniz!"
          }
        },
        "required": [
          "namespace",
          "key",
          "locale",
          "value"
        ]
      },
      "ArrayApiResponse_TranslationOverrideDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationOverrideDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetTranslationOverrideDto": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string",
            "description": "i18n namespace (e.g. common, auth)"
          },
          "key": {
            "type": "string",
            "description": "Translation key within the namespace"
          },
          "locale": {
            "type": "string",
            "description": "Locale code (e.g. en, tr)"
          },
          "value": {
            "type": "string",
            "description": "Override translation value"
          }
        },
        "required": [
          "namespace",
          "key",
          "locale",
          "value"
        ]
      },
      "RateLimitOverrideDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "ip"
          },
          "identifier": {
            "type": "string",
            "example": "192.168.1.1"
          },
          "limit": {
            "type": "number",
            "example": 1000
          },
          "windowMs": {
            "type": "number",
            "example": 60000
          },
          "reason": {
            "type": "string",
            "nullable": true,
            "example": "VIP user rate limit increase"
          },
          "expiresAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "type",
          "identifier",
          "limit",
          "windowMs",
          "createdAt"
        ]
      },
      "ArrayApiResponse_RateLimitOverrideDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RateLimitOverrideDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateRateLimitOverrideDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Rate limit type (e.g. ip, user, endpoint)"
          },
          "identifier": {
            "type": "string",
            "description": "Identifier for the override (e.g. IP address, user ID, route path)"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "description": "Maximum number of requests allowed in the window"
          },
          "windowMs": {
            "type": "number",
            "minimum": 1000,
            "description": "Time window in milliseconds"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the override (audit trail)"
          },
          "expiresAt": {
            "type": "string",
            "description": "Expiration date (ISO 8601). Override auto-expires after this."
          }
        },
        "required": [
          "type",
          "identifier",
          "limit",
          "windowMs"
        ]
      },
      "ApiResponse_RateLimitOverrideDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RateLimitOverrideDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "IPWhitelistEntryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ipAddress": {
            "type": "string",
            "example": "203.0.113.50"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Office VPN"
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "ipAddress",
          "active",
          "createdAt"
        ]
      },
      "ArrayApiResponse_IPWhitelistEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IPWhitelistEntryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateIPWhitelistDto": {
        "type": "object",
        "properties": {
          "ipAddress": {
            "type": "string",
            "description": "IP address to whitelist (IPv4 or IPv6)"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description for this IP entry"
          }
        },
        "required": [
          "ipAddress"
        ]
      },
      "ApiResponse_IPWhitelistEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/IPWhitelistEntryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SiteSettingsIdentityDto": {
        "type": "object",
        "properties": {
          "siteName": {
            "type": "string",
            "example": "BIO.RE"
          },
          "tagline": {
            "type": "string",
            "example": "Creator economy, simplified."
          },
          "logoUrl": {
            "type": "string",
            "example": "https://cdn.bio.re/logo.png",
            "description": "Logo URL (empty string when admin has not configured)"
          },
          "faviconUrl": {
            "type": "string",
            "example": "https://cdn.bio.re/favicon.ico",
            "description": "Favicon URL (empty string when admin has not configured)"
          },
          "copyrightHolder": {
            "type": "string",
            "example": "BIO.RE"
          },
          "contactEmail": {
            "type": "string",
            "example": "hello@bio.re"
          }
        },
        "required": [
          "siteName",
          "tagline",
          "logoUrl",
          "faviconUrl",
          "copyrightHolder",
          "contactEmail"
        ]
      },
      "SiteSettingsLinksDto": {
        "type": "object",
        "properties": {
          "termsUrl": {
            "type": "string",
            "example": "/terms",
            "description": "Terms of Service URL (path or absolute)"
          },
          "privacyUrl": {
            "type": "string",
            "example": "/privacy",
            "description": "Privacy Policy URL (path or absolute)"
          },
          "socialTwitter": {
            "type": "string",
            "example": "https://twitter.com/biore",
            "description": "Twitter/X profile URL (empty string when not configured)"
          },
          "socialInstagram": {
            "type": "string",
            "example": "https://instagram.com/biore",
            "description": "Instagram profile URL (empty string when not configured)"
          },
          "socialDiscord": {
            "type": "string",
            "example": "https://discord.gg/biore",
            "description": "Discord invite URL (empty string when not configured)"
          }
        },
        "required": [
          "termsUrl",
          "privacyUrl",
          "socialTwitter",
          "socialInstagram",
          "socialDiscord"
        ]
      },
      "TopnavItemDto": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "i18n key or literal label",
            "example": "nav.discover"
          },
          "href": {
            "type": "string",
            "description": "Target route (relative or absolute)",
            "example": "/discover"
          },
          "external": {
            "type": "boolean",
            "description": "true for external link (opens new tab)",
            "example": false
          }
        },
        "required": [
          "label",
          "href"
        ]
      },
      "FooterLinkDto": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Link label (i18n key or literal)",
            "example": "footer.terms"
          },
          "href": {
            "type": "string",
            "description": "Target route",
            "example": "/terms"
          },
          "external": {
            "type": "boolean",
            "description": "true for external link",
            "example": false
          }
        },
        "required": [
          "label",
          "href"
        ]
      },
      "FooterColumnDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Column title (i18n key or literal)",
            "example": "footer.product"
          },
          "links": {
            "description": "Links inside this column",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FooterLinkDto"
            }
          }
        },
        "required": [
          "title",
          "links"
        ]
      },
      "SocialLinkDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "description": "Platform slug matching frontend brand-icons.catalog.json",
            "example": "instagram"
          },
          "url": {
            "type": "string",
            "description": "Public profile URL",
            "example": "https://instagram.com/biore"
          }
        },
        "required": [
          "platform",
          "url"
        ]
      },
      "SiteSettingsNavigationDto": {
        "type": "object",
        "properties": {
          "topnavItems": {
            "description": "TopNav menu items (admin-managed)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopnavItemDto"
            }
          },
          "footerColumns": {
            "description": "Footer columns (admin-managed)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FooterColumnDto"
            }
          },
          "socials": {
            "description": "Social links (admin-managed)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SocialLinkDto"
            }
          }
        },
        "required": [
          "topnavItems",
          "footerColumns",
          "socials"
        ]
      },
      "SiteSettingsUsernameRulesDto": {
        "type": "object",
        "properties": {
          "minLength": {
            "type": "number",
            "example": 3,
            "description": "Minimum username length (used by register form Zod schema)"
          },
          "maxLength": {
            "type": "number",
            "example": 30,
            "description": "Maximum username length (used by register form Zod schema)"
          }
        },
        "required": [
          "minLength",
          "maxLength"
        ]
      },
      "SiteSettingsSeoDto": {
        "type": "object",
        "properties": {
          "defaultTitle": {
            "type": "string",
            "example": "BIO.RE — Creator Economy"
          },
          "defaultDescription": {
            "type": "string",
            "example": "The modern creator economy platform."
          },
          "defaultOgImage": {
            "type": "string",
            "example": "https://cdn.bio.re/og-default.png",
            "description": "Default Open Graph image (empty string when not configured)"
          },
          "canonicalBaseUrl": {
            "type": "string",
            "example": "https://bio.re"
          }
        },
        "required": [
          "defaultTitle",
          "defaultDescription",
          "defaultOgImage",
          "canonicalBaseUrl"
        ]
      },
      "SiteSettingsTrackingDto": {
        "type": "object",
        "properties": {
          "gtmId": {
            "type": "string",
            "example": "GTM-XXXXXXX",
            "description": "Google Tag Manager container ID (empty string when not configured)"
          },
          "ga4MeasurementId": {
            "type": "string",
            "example": "G-XXXXXXXXXX",
            "description": "Google Analytics 4 measurement ID (empty string when not configured)"
          },
          "fbPixelId": {
            "type": "string",
            "example": "1234567890",
            "description": "Facebook Pixel ID (empty string when not configured)"
          },
          "cookieConsentEnabled": {
            "type": "boolean",
            "example": true,
            "description": "Whether the global cookie consent banner should render"
          }
        },
        "required": [
          "gtmId",
          "ga4MeasurementId",
          "fbPixelId",
          "cookieConsentEnabled"
        ]
      },
      "SiteSettingsResponseDto": {
        "type": "object",
        "properties": {
          "identity": {
            "$ref": "#/components/schemas/SiteSettingsIdentityDto"
          },
          "links": {
            "$ref": "#/components/schemas/SiteSettingsLinksDto"
          },
          "navigation": {
            "$ref": "#/components/schemas/SiteSettingsNavigationDto"
          },
          "usernameRules": {
            "$ref": "#/components/schemas/SiteSettingsUsernameRulesDto"
          },
          "seo": {
            "$ref": "#/components/schemas/SiteSettingsSeoDto"
          },
          "tracking": {
            "$ref": "#/components/schemas/SiteSettingsTrackingDto"
          }
        },
        "required": [
          "identity",
          "links",
          "navigation",
          "usernameRules",
          "seo",
          "tracking"
        ]
      },
      "ApiResponse_SiteSettingsResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SiteSettingsResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ConfigBatchResponseDto": {
        "type": "object",
        "properties": {
          "configs": {
            "type": "object",
            "additionalProperties": {
              "nullable": true,
              "type": "string"
            },
            "description": "Key-value map of config values",
            "example": {
              "app.name": "BIO.RE",
              "feature.x": null
            }
          }
        },
        "required": [
          "configs"
        ]
      },
      "ConfigSingleResponseDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "app.name"
          },
          "value": {
            "type": "string",
            "nullable": true,
            "example": "BIO.RE"
          }
        },
        "required": [
          "key"
        ]
      },
      "ProviderDetailDto": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "example": "stripe"
          },
          "displayName": {
            "type": "string",
            "example": "Stripe"
          },
          "category": {
            "type": "string",
            "example": "payment"
          },
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "mode": {
            "type": "string",
            "enum": [
              "DISABLED",
              "PENDING_SETUP",
              "TEST",
              "LIVE",
              "DEGRADED",
              "SUSPENDED"
            ],
            "example": "LIVE"
          },
          "fallbackProvider": {
            "type": "string",
            "nullable": true,
            "example": "sendgrid"
          },
          "fallbackMode": {
            "type": "string",
            "example": "manual"
          },
          "lastHealthCheck": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "lastHealthOk": {
            "type": "boolean",
            "nullable": true
          }
        },
        "required": [
          "provider",
          "displayName",
          "category",
          "enabled",
          "mode",
          "fallbackMode"
        ]
      },
      "ApiResponse_ProviderDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ProviderDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetProviderSecretDto": {
        "type": "object",
        "properties": {}
      },
      "DeleteProviderSecretDto": {
        "type": "object",
        "properties": {}
      },
      "SetProviderModeDto": {
        "type": "object",
        "properties": {}
      },
      "SuspendProviderDto": {
        "type": "object",
        "properties": {}
      },
      "ProviderFieldResponseDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "stripe.secret_key"
          },
          "label": {
            "type": "string",
            "example": "Secret Key"
          },
          "type": {
            "type": "string",
            "example": "secret",
            "enum": [
              "string",
              "secret",
              "text",
              "number",
              "boolean",
              "select",
              "url",
              "email",
              "json"
            ]
          },
          "required": {
            "type": "boolean",
            "example": true
          },
          "sensitive": {
            "type": "boolean",
            "example": true
          },
          "exposure": {
            "type": "string",
            "example": "masked",
            "enum": [
              "full",
              "masked",
              "truncated",
              "hidden"
            ]
          },
          "group": {
            "type": "string",
            "example": "auth",
            "enum": [
              "auth",
              "config",
              "webhook",
              "endpoint"
            ]
          },
          "implementation": {
            "type": "string",
            "example": "implemented_and_used",
            "enum": [
              "implemented_and_used",
              "implemented_optional",
              "not_implemented"
            ]
          },
          "placeholder": {
            "type": "string",
            "example": "sk_live_..."
          },
          "helpText": {
            "type": "string",
            "example": "Required for API authentication"
          },
          "validation": {
            "type": "object",
            "properties": {
              "pattern": {
                "type": "string",
                "example": "^sk_(live|test)_"
              },
              "min": {
                "type": "number",
                "example": 0
              },
              "max": {
                "type": "number",
                "example": 1
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "example": [
                  "sandbox",
                  "production"
                ]
              }
            }
          },
          "isSet": {
            "type": "boolean",
            "example": true
          },
          "maskedValue": {
            "type": "string",
            "nullable": true,
            "example": "sk_li...key"
          },
          "displayValue": {
            "type": "string",
            "nullable": true,
            "example": "pk_live_abc123"
          },
          "truncatedValue": {
            "type": "string",
            "nullable": true,
            "example": "https://ap..."
          }
        },
        "required": [
          "key",
          "label",
          "type",
          "required",
          "sensitive",
          "exposure",
          "group",
          "implementation",
          "isSet"
        ]
      },
      "ProviderCompletenessDto": {
        "type": "object",
        "properties": {
          "filledCount": {
            "type": "number",
            "example": 3,
            "description": "Number of required+implemented fields that are filled"
          },
          "totalRequired": {
            "type": "number",
            "example": 4,
            "description": "Total required+implemented fields"
          },
          "percentage": {
            "type": "number",
            "example": 0.75,
            "description": "filledCount / totalRequired"
          }
        },
        "required": [
          "filledCount",
          "totalRequired",
          "percentage"
        ]
      },
      "ProviderSchemaResponseDto": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "example": "stripe"
          },
          "displayName": {
            "type": "string",
            "example": "Stripe"
          },
          "category": {
            "type": "string",
            "example": "payment"
          },
          "mode": {
            "type": "string",
            "example": "READY_FOR_TEST",
            "enum": [
              "DISABLED",
              "PENDING_SETUP",
              "READY_FOR_TEST",
              "TESTED_OK",
              "LIVE",
              "DEGRADED",
              "SUSPENDED"
            ]
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProviderFieldResponseDto"
            }
          },
          "completeness": {
            "$ref": "#/components/schemas/ProviderCompletenessDto"
          }
        },
        "required": [
          "provider",
          "displayName",
          "category",
          "mode",
          "fields",
          "completeness"
        ]
      },
      "ApiResponse_ProviderSchemaResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ProviderSchemaResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetProviderFieldDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "example": "sk_live_abc123..."
          }
        },
        "required": [
          "value"
        ]
      },
      "FieldKeyValueDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "stripe.secret_key"
          },
          "value": {
            "type": "string",
            "example": "sk_live_abc123..."
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "SetProviderFieldsDto": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldKeyValueDto"
            }
          }
        },
        "required": [
          "fields"
        ]
      },
      "ProviderTestCheckDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "api_reachable"
          },
          "ok": {
            "type": "boolean",
            "example": true
          },
          "message": {
            "type": "string",
            "example": "Connection successful"
          }
        },
        "required": [
          "name",
          "ok"
        ]
      },
      "ProviderTestResultDto": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "example": true
          },
          "latencyMs": {
            "type": "number",
            "example": 142
          },
          "checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProviderTestCheckDto"
            }
          }
        },
        "required": [
          "ok",
          "latencyMs",
          "checks"
        ]
      },
      "ApiResponse_ProviderTestResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ProviderTestResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AdminLoginDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "admin@bio.re"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "example": "SecureP@ss123"
          }
        },
        "required": [
          "email",
          "password"
        ]
      },
      "AdminLoginResponseDto": {
        "type": "object",
        "properties": {
          "twoFactorRequired": {
            "type": "boolean",
            "example": false,
            "description": "True when 2FA is required before full session is established"
          },
          "roles": {
            "example": [
              "SuperAdmin"
            ],
            "description": "Granted roles (only when twoFactorRequired=false)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sessionId": {
            "type": "string",
            "format": "uuid",
            "description": "Session ID (only when twoFactorRequired=false)"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Session expiry (only when twoFactorRequired=false)"
          }
        },
        "required": [
          "twoFactorRequired"
        ]
      },
      "Verify2faDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6,
            "pattern": "^\\d{6}$",
            "description": "6-digit TOTP code",
            "example": "123456"
          }
        },
        "required": [
          "code"
        ]
      },
      "AdminMeDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "roles": {
            "example": [
              "SuperAdmin"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "permissions": {
            "example": [
              "auth:self",
              "user:read"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isSuperAdmin": {
            "type": "boolean",
            "example": true
          },
          "email": {
            "type": "string",
            "example": "admin@bio.re"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "Admin User"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "lastLoginAt": {
            "type": "string",
            "format": "date-time"
          },
          "twoFactorEnabled": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "userId",
          "sessionId",
          "roles",
          "permissions",
          "isSuperAdmin",
          "email",
          "createdAt",
          "lastLoginAt",
          "twoFactorEnabled"
        ]
      },
      "ApiResponse_AdminMeDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AdminMeDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChangePasswordDto": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "minLength": 1,
            "description": "Current password for verification"
          },
          "newPassword": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$",
            "description": "New password (min 8, max 128 chars)"
          }
        },
        "required": [
          "currentPassword",
          "newPassword"
        ]
      },
      "AdminSessionItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isCurrent": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "id",
          "createdAt",
          "isCurrent"
        ]
      },
      "ArrayApiResponse_AdminSessionItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminSessionItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "Admin2faStatusDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "enabledAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "enabled"
        ]
      },
      "ApiResponse_Admin2faStatusDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/Admin2faStatusDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "Admin2faSetupResponseDto": {
        "type": "object",
        "properties": {
          "secret": {
            "type": "string",
            "example": "JBSWY3DPEHPK3PXP",
            "description": "TOTP secret (base32)"
          },
          "qrCodeDataUrl": {
            "type": "string",
            "description": "Data URL of QR code image for scanning"
          },
          "otpauthUrl": {
            "type": "string",
            "description": "otpauth:// URL for manual entry in authenticator app"
          }
        },
        "required": [
          "secret",
          "qrCodeDataUrl",
          "otpauthUrl"
        ]
      },
      "ApiResponse_Admin2faSetupResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/Admin2faSetupResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "Admin2faVerifySetupResponseDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "backupCodes": {
            "example": [
              "ABC123",
              "DEF456"
            ],
            "description": "One-time backup codes — store securely, shown only once",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "enabled",
          "backupCodes"
        ]
      },
      "Admin2faDisableResponseDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "example": false,
            "description": "Current 2FA enabled state (always false after disable)"
          }
        },
        "required": [
          "enabled"
        ]
      },
      "AdminCsrfTokenDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "example": "a1b2c3d4e5f6..."
          }
        },
        "required": [
          "token"
        ]
      },
      "ApiResponse_AdminCsrfTokenDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AdminCsrfTokenDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RoleEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "SuperAdmin"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "StaffListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "admin@bio.re"
          },
          "displayName": {
            "type": "string",
            "example": "John Admin"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoleEmbedDto"
            }
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status",
          "createdAt",
          "roles"
        ]
      },
      "PaginatedData_StaffListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_StaffListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_StaffListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RoleFullDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "SuperAdmin"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Full system access"
          },
          "isSystem": {
            "type": "boolean",
            "example": false,
            "description": "System roles cannot be modified or deleted"
          },
          "permissionCount": {
            "type": "number",
            "example": 12,
            "description": "Number of permissions assigned to this role"
          },
          "userCount": {
            "type": "number",
            "example": 3,
            "description": "Number of users assigned to this role"
          }
        },
        "required": [
          "id",
          "name",
          "isSystem",
          "permissionCount",
          "userCount"
        ]
      },
      "PermissionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "module": {
            "type": "string",
            "example": "user"
          },
          "action": {
            "type": "string",
            "example": "read"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "View user list and details"
          }
        },
        "required": [
          "id",
          "module",
          "action"
        ]
      },
      "CreateRoleDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 50,
            "description": "Role name"
          },
          "description": {
            "type": "string",
            "maxLength": 200,
            "description": "Role description"
          },
          "permissions": {
            "description": "Permission strings (e.g. \"user:read\")",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "permissions"
        ]
      },
      "CreatedRoleDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Moderator"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Can moderate user content"
          },
          "permissionCount": {
            "type": "number",
            "example": 5,
            "description": "Number of permissions assigned to this role"
          }
        },
        "required": [
          "id",
          "name",
          "permissionCount"
        ]
      },
      "UpdateRoleDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 50,
            "description": "Role name"
          },
          "description": {
            "type": "string",
            "maxLength": 200,
            "description": "Role description"
          },
          "permissions": {
            "description": "Permission strings (e.g. \"user:read\")",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdatedRoleDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Moderator"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "InviteAdminDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "newadmin@bio.re"
          },
          "name": {
            "type": "string",
            "example": "John Doe"
          },
          "roleId": {
            "type": "string",
            "format": "uuid",
            "description": "Role UUID — defaults to Viewer role if omitted"
          }
        },
        "required": [
          "email",
          "name"
        ]
      },
      "InviteAdminResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "newadmin@bio.re"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "New Admin"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          }
        },
        "required": [
          "id",
          "email",
          "status"
        ]
      },
      "StaffRoleDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "SuperAdmin"
          },
          "assignedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "assignedAt"
        ]
      },
      "StaffDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "admin@bio.re"
          },
          "displayName": {
            "type": "string",
            "example": "John Admin"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StaffRoleDetailDto"
            }
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status",
          "createdAt",
          "updatedAt",
          "roles"
        ]
      },
      "AssignRoleDto": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "format": "uuid",
            "description": "Role UUID to assign"
          }
        },
        "required": [
          "roleId"
        ]
      },
      "RoleAssignmentDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "roleId": {
            "type": "string",
            "format": "uuid"
          },
          "assignedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "roleId",
          "createdAt"
        ]
      },
      "ActivityLogItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "adminId": {
            "type": "string",
            "format": "uuid"
          },
          "action": {
            "type": "string"
          },
          "module": {
            "type": "string"
          },
          "entityType": {
            "type": "string",
            "nullable": true
          },
          "entityId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "details": {
            "type": "object",
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "adminId",
          "action",
          "module",
          "createdAt"
        ]
      },
      "PaginatedData_ActivityLogItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityLogItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_ActivityLogItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_ActivityLogItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AuditLogItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "adminId": {
            "type": "string",
            "format": "uuid"
          },
          "adminName": {
            "type": "string"
          },
          "adminEmail": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "module": {
            "type": "string"
          },
          "entityType": {
            "type": "string",
            "nullable": true
          },
          "entityId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "details": {
            "type": "object",
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "adminId",
          "adminName",
          "adminEmail",
          "action",
          "module",
          "createdAt"
        ]
      },
      "PaginatedData_AuditLogItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditLogItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_AuditLogItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_AuditLogItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_AuditLogItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AuditLogItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReservedUsernameDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "username",
          "createdAt"
        ]
      },
      "ArrayApiResponse_ReservedUsernameDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReservedUsernameDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateReservedUsernameDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "admin",
            "description": "Username to reserve"
          },
          "reason": {
            "type": "string",
            "description": "Reason for reserving this username"
          }
        },
        "required": [
          "username"
        ]
      },
      "DisposableEmailDomainDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "domain": {
            "type": "string"
          },
          "addedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "domain",
          "createdAt"
        ]
      },
      "ArrayApiResponse_DisposableEmailDomainDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisposableEmailDomainDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateDisposableDomainDto": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$",
            "example": "tempmail.com",
            "description": "Disposable email domain (lowercase, no protocol, no path)"
          }
        },
        "required": [
          "domain"
        ]
      },
      "AdminOAuthProviderRowDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "platform": {
            "type": "string"
          },
          "clientIdKey": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "loginEnabled": {
            "type": "boolean"
          },
          "verifyEnabled": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "platform",
          "clientIdKey",
          "enabled",
          "loginEnabled",
          "verifyEnabled",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_AdminOAuthProviderRowDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdminOAuthProviderRowDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateOAuthProviderDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable or disable the provider entirely"
          },
          "loginEnabled": {
            "type": "boolean",
            "description": "Enable or disable login via this provider"
          },
          "verifyEnabled": {
            "type": "boolean",
            "description": "Enable or disable verification via this provider"
          }
        }
      },
      "SidebarBadgesDto": {
        "type": "object",
        "properties": {
          "pendingKyc": {
            "type": "number",
            "example": 3,
            "description": "KYC reviews pending decision"
          },
          "unassignedTickets": {
            "type": "number",
            "example": 5,
            "description": "Support tickets OPEN and unassigned"
          },
          "slaBreaches": {
            "type": "number",
            "example": 2,
            "description": "Tickets that breached SLA response time"
          },
          "unresolvedFraud": {
            "type": "number",
            "example": 1,
            "description": "Unresolved fraud flags"
          },
          "quarantinedMessages": {
            "type": "number",
            "example": 4,
            "description": "Messages in quarantine"
          }
        },
        "required": [
          "pendingKyc",
          "unassignedTickets",
          "slaBreaches",
          "unresolvedFraud",
          "quarantinedMessages"
        ]
      },
      "ApiResponse_SidebarBadgesDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SidebarBadgesDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RegisterDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "creator@bio.re"
          },
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[a-z0-9._-]+$",
            "example": "johndoe"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$",
            "example": "SecureP@ss123"
          },
          "acceptedTerms": {
            "type": "boolean",
            "description": "Must accept Terms of Service",
            "example": true
          },
          "acceptedPrivacy": {
            "type": "boolean",
            "description": "Must accept Privacy Policy",
            "example": true
          },
          "displayName": {
            "type": "string",
            "maxLength": 100,
            "example": "My Display Name",
            "description": "Optional display name"
          },
          "intent": {
            "type": "string",
            "maxLength": 20,
            "example": "creator",
            "description": "User intent: creator or fan"
          },
          "captchaToken": {
            "type": "string",
            "description": "Captcha token from active provider (Turnstile | reCAPTCHA — admin selects via external.captcha.active_provider)"
          },
          "turnstileToken": {
            "type": "string",
            "deprecated": true,
            "description": "Deprecated alias for captchaToken — accepted for 1 sprint backwards-compat"
          },
          "referralCode": {
            "type": "string",
            "example": "REF-abc123"
          },
          "locale": {
            "type": "string",
            "example": "en",
            "description": "Preferred locale (validated against platform config)"
          },
          "utmSource": {
            "type": "string",
            "maxLength": 100
          },
          "utmMedium": {
            "type": "string",
            "maxLength": 100
          },
          "utmCampaign": {
            "type": "string",
            "maxLength": 100
          },
          "utmTerm": {
            "type": "string",
            "maxLength": 100
          },
          "utmContent": {
            "type": "string",
            "maxLength": 100
          },
          "firstReferrerUrl": {
            "type": "string",
            "maxLength": 2048
          },
          "firstLandingPage": {
            "type": "string",
            "maxLength": 2048
          }
        },
        "required": [
          "email",
          "password",
          "acceptedTerms",
          "acceptedPrivacy"
        ]
      },
      "RegisterResponseDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "format": "uuid"
          },
          "message": {
            "type": "string",
            "example": "Registration successful. Please check your email to verify your account."
          }
        },
        "required": [
          "userId",
          "message"
        ]
      },
      "ApiResponse_RegisterResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RegisterResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "VerifyEmailDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "format": "uuid",
            "description": "Email verification token (UUID format)"
          }
        },
        "required": [
          "token"
        ]
      },
      "ResendVerificationDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "creator@bio.re"
          }
        },
        "required": [
          "email"
        ]
      },
      "MessageResponseDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Operation completed successfully"
          }
        },
        "required": [
          "message"
        ]
      },
      "ApiResponse_MessageResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/MessageResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LoginDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "creator@bio.re"
          },
          "password": {
            "type": "string",
            "example": "SecureP@ss123"
          },
          "captchaToken": {
            "type": "string",
            "description": "Captcha token from active provider (Turnstile | reCAPTCHA — admin selects via external.captcha.active_provider)"
          },
          "turnstileToken": {
            "type": "string",
            "deprecated": true,
            "description": "Deprecated alias for captchaToken — accepted for 1 sprint backwards-compat"
          }
        },
        "required": [
          "email",
          "password"
        ]
      },
      "LoginResponseDto": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "example": "eyJhbGciOiJIUzI1NiIs...",
            "description": "JWT access token (absent when requiresTwoFactor=true)"
          },
          "expiresIn": {
            "type": "number",
            "example": 900,
            "description": "Access token expiry in seconds (absent when requiresTwoFactor=true)"
          },
          "requiresTwoFactor": {
            "type": "boolean",
            "example": true,
            "description": "True if 2FA verification needed — use tempToken to complete"
          },
          "tempToken": {
            "type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "description": "Temporary token for 2FA flow (present only when requiresTwoFactor=true)"
          }
        }
      },
      "ApiResponse_LoginResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LoginResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LoginTwoFactorDto": {
        "type": "object",
        "properties": {
          "tempToken": {
            "type": "string",
            "format": "uuid",
            "description": "Temporary token from login response"
          },
          "code": {
            "type": "string",
            "example": "123456",
            "description": "6-digit TOTP code or backup code"
          }
        },
        "required": [
          "tempToken",
          "code"
        ]
      },
      "RefreshDto": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string",
            "description": "Refresh token (optional — prefer httpOnly cookie)"
          }
        }
      },
      "LogoutDto": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string",
            "description": "Refresh token (optional — prefer httpOnly cookie)"
          }
        }
      },
      "ForgotPasswordDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "creator@bio.re"
          }
        },
        "required": [
          "email"
        ]
      },
      "ResetPasswordDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "newPassword": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$"
          }
        },
        "required": [
          "token",
          "newPassword"
        ]
      },
      "SessionItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "format": "uuid"
          },
          "device": {
            "type": "string",
            "nullable": true,
            "example": "Chrome on macOS"
          },
          "ipMasked": {
            "type": "string",
            "nullable": true,
            "example": "192.168.1.***"
          },
          "location": {
            "type": "string",
            "nullable": true,
            "example": null,
            "description": "Reserved for future GeoIP integration"
          },
          "isCurrent": {
            "type": "boolean",
            "example": false,
            "description": "True if this is the current active session"
          },
          "createdAt": {
            "type": "string",
            "example": "2026-04-20T10:30:00.000Z",
            "format": "date-time"
          },
          "lastActiveAt": {
            "type": "string",
            "example": "2026-04-20T10:30:00.000Z",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "isCurrent",
          "createdAt",
          "lastActiveAt"
        ]
      },
      "SessionListResponseDto": {
        "type": "object",
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionItemDto"
            }
          }
        },
        "required": [
          "sessions"
        ]
      },
      "ApiResponse_SessionListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionListResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UserIdentityResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "creator@bio.re"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "status": {
            "type": "string",
            "example": "ACTIVE",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "emailVerified": {
            "type": "boolean",
            "example": true
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "intent": {
            "type": "string",
            "nullable": true,
            "example": "creator"
          },
          "twoFactorEnabled": {
            "type": "boolean",
            "example": false
          },
          "isCreator": {
            "type": "boolean",
            "example": true,
            "description": "True if user has a creator profile"
          }
        },
        "required": [
          "id",
          "email",
          "status",
          "emailVerified",
          "twoFactorEnabled",
          "isCreator"
        ]
      },
      "ApiResponse_UserIdentityResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UserIdentityResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SendOtpDto": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "maxLength": 20,
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "example": "+15551234567",
            "description": "E.164 phone number (8–15 digits, plus prefix required)"
          },
          "purpose": {
            "type": "string",
            "enum": [
              "verify-phone-fan",
              "verify-phone-profile",
              "2fa-setup",
              "login-2fa"
            ],
            "example": "verify-phone-fan"
          }
        },
        "required": [
          "phone",
          "purpose"
        ]
      },
      "ChallengeDispatchResponseDto": {
        "type": "object",
        "properties": {
          "challengeId": {
            "type": "string",
            "format": "uuid",
            "description": "Challenge id — pass to /verify-otp + /resend-otp + /challenge/:id"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO8601 expiry — typically createdAt + auth.otp_ttl_minutes"
          },
          "attemptsRemaining": {
            "type": "number",
            "example": 5,
            "description": "Verify attempts remaining for this challenge (auth.otp_max_attempts − attempts)"
          },
          "resendCount": {
            "type": "number",
            "example": 0,
            "description": "Resend dispatches issued so far (omitted on initial /send-otp)"
          }
        },
        "required": [
          "challengeId",
          "expiresAt",
          "attemptsRemaining"
        ]
      },
      "ApiResponse_ChallengeDispatchResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ChallengeDispatchResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "VerifyOtpDto": {
        "type": "object",
        "properties": {
          "challengeId": {
            "type": "string",
            "format": "uuid",
            "description": "Challenge id returned by POST /auth/send-otp"
          },
          "code": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6,
            "pattern": "^\\d{6}$",
            "example": "123456",
            "description": "6-digit numeric OTP code"
          }
        },
        "required": [
          "challengeId",
          "code"
        ]
      },
      "VerifyOtpResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "accessToken": {
            "type": "string",
            "example": "eyJhbGciOiJIUzI1NiIs...",
            "description": "Reserved — currently always undefined. Will carry a JWT once the SMS-OTP login bridge ships."
          },
          "expiresIn": {
            "type": "number",
            "example": 900,
            "description": "Reserved — currently always undefined. Mirrors /auth/login.expiresIn semantics when present."
          }
        },
        "required": [
          "success"
        ]
      },
      "ApiResponse_VerifyOtpResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/VerifyOtpResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ResendOtpDto": {
        "type": "object",
        "properties": {
          "challengeId": {
            "type": "string",
            "format": "uuid",
            "description": "Challenge id from POST /auth/send-otp"
          }
        },
        "required": [
          "challengeId"
        ]
      },
      "ChallengeMetadataResponseDto": {
        "type": "object",
        "properties": {
          "challengeId": {
            "type": "string",
            "format": "uuid"
          },
          "purpose": {
            "type": "string",
            "enum": [
              "verify-phone-fan",
              "verify-phone-profile",
              "2fa-setup",
              "login-2fa"
            ],
            "example": "verify-phone-fan"
          },
          "phoneMask": {
            "type": "string",
            "example": "+90 ••• ••• ••12",
            "description": "Masked phone (last 4 digits visible)"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "attemptsRemaining": {
            "type": "number",
            "example": 5
          },
          "resendAvailableAt": {
            "type": "string",
            "format": "date-time",
            "description": "Earliest time another resend may be dispatched"
          }
        },
        "required": [
          "challengeId",
          "purpose",
          "expiresAt",
          "attemptsRemaining"
        ]
      },
      "ApiResponse_ChallengeMetadataResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ChallengeMetadataResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReactivateValidateResponseDto": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean",
            "example": true,
            "description": "False if token is malformed, unknown, used, or expired"
          },
          "status": {
            "type": "string",
            "enum": [
              "paused",
              "pending-deletion",
              "expired",
              "deleted"
            ],
            "example": "paused"
          },
          "userMaskEmail": {
            "type": "string",
            "example": "u***@b***.re",
            "description": "Masked email (single-letter prefix per maskEmail helper) for the account associated with the token"
          },
          "deletionDate": {
            "type": "string",
            "format": "date-time",
            "description": "When the account is scheduled for hard deletion (only for pending-deletion status)"
          }
        },
        "required": [
          "valid",
          "status"
        ]
      },
      "ApiResponse_ReactivateValidateResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReactivateValidateResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "OAuthLoginDto": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "google",
              "apple",
              "x"
            ],
            "example": "google"
          },
          "idToken": {
            "type": "string",
            "maxLength": 5000,
            "description": "ID token from Google or Apple (alternative to code)"
          },
          "code": {
            "type": "string",
            "maxLength": 2000,
            "description": "Authorization code from any OAuth provider"
          },
          "codeVerifier": {
            "type": "string",
            "maxLength": 256,
            "description": "PKCE code verifier (required for X)"
          },
          "referralCode": {
            "type": "string",
            "example": "REF-abc123"
          }
        },
        "required": [
          "provider"
        ]
      },
      "OAuthLoginResponseDto": {
        "type": "object",
        "properties": {
          "accessToken": {
            "type": "string",
            "example": "eyJhbGciOiJIUzI1NiIs...",
            "description": "JWT access token"
          },
          "expiresIn": {
            "type": "number",
            "example": 900,
            "description": "Access token expiry in seconds"
          },
          "isNewUser": {
            "type": "boolean",
            "example": false,
            "description": "True if this was a new registration (not existing login)"
          }
        },
        "required": [
          "accessToken",
          "expiresIn",
          "isNewUser"
        ]
      },
      "ApiResponse_OAuthLoginResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/OAuthLoginResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "OAuthLinkDto": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "google",
              "apple",
              "x"
            ],
            "example": "google"
          },
          "idToken": {
            "type": "string",
            "maxLength": 5000,
            "description": "ID token from Google or Apple (alternative to code)"
          },
          "code": {
            "type": "string",
            "maxLength": 2000,
            "description": "Authorization code from any OAuth provider"
          },
          "codeVerifier": {
            "type": "string",
            "maxLength": 256,
            "description": "PKCE code verifier (required for X)"
          }
        },
        "required": [
          "provider"
        ]
      },
      "OAuthProviderDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "example": "google",
            "enum": [
              "google",
              "apple",
              "x"
            ]
          },
          "clientId": {
            "type": "string",
            "example": "123456789-abc.apps.googleusercontent.com",
            "description": "OAuth client ID for frontend SDK"
          },
          "redirectUri": {
            "type": "string",
            "example": "https://bio.re/auth/callback/google",
            "description": "Redirect URI (if configured)"
          }
        },
        "required": [
          "platform",
          "clientId"
        ]
      },
      "OAuthProvidersResponseDto": {
        "type": "object",
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OAuthProviderDto"
            }
          }
        },
        "required": [
          "providers"
        ]
      },
      "ApiResponse_OAuthProvidersResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/OAuthProvidersResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TwoFactorSetupResponseDto": {
        "type": "object",
        "properties": {
          "secret": {
            "type": "string",
            "example": "JBSWY3DPEHPK3PXP",
            "description": "TOTP secret (base32 encoded)"
          },
          "qrCodeDataUrl": {
            "type": "string",
            "description": "QR code as data URL (data:image/png;base64,...)"
          },
          "otpauthUrl": {
            "type": "string",
            "example": "otpauth://totp/BIO.RE:creator@bio.re?secret=JBSWY3DPEHPK3PXP&issuer=BIO.RE",
            "description": "OTP auth URL for manual entry"
          }
        },
        "required": [
          "secret",
          "qrCodeDataUrl",
          "otpauthUrl"
        ]
      },
      "ApiResponse_TwoFactorSetupResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TwoFactorSetupResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TwoFactorSetupInitResponseDto": {
        "type": "object",
        "properties": {
          "secret": {
            "type": "string",
            "example": "JBSWY3DPEHPK3PXP",
            "description": "TOTP secret (base32) for manual entry"
          },
          "qrCodeUrl": {
            "type": "string",
            "description": "QR code as data URL (data:image/png;base64,…) — render in <img>"
          },
          "otpauthUrl": {
            "type": "string",
            "example": "otpauth://totp/BIO.RE:creator@bio.re?secret=JBSWY3DPEHPK3PXP&issuer=BIO.RE",
            "description": "OTP-Auth URL for native authenticator deep-links"
          },
          "recoveryCodes": {
            "nullable": true,
            "description": "Always null on /setup-init. Recovery codes are issued by /auth/2fa/verify after TOTP proof.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "secret",
          "qrCodeUrl",
          "otpauthUrl"
        ]
      },
      "ApiResponse_TwoFactorSetupInitResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TwoFactorSetupInitResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "VerifyTotpDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6,
            "example": "123456",
            "description": "6-digit TOTP code"
          }
        },
        "required": [
          "code"
        ]
      },
      "BackupCodesResponseDto": {
        "type": "object",
        "properties": {
          "backupCodes": {
            "example": [
              "ABC12345",
              "DEF67890"
            ],
            "description": "One-time backup codes (show once, never stored in plaintext)",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "backupCodes"
        ]
      },
      "ApiResponse_BackupCodesResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BackupCodesResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "DisableTwoFactorDto": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "minLength": 8,
            "description": "Current account password for verification"
          }
        },
        "required": [
          "password"
        ]
      },
      "TwoFactorStatusResponseDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "example": false,
            "description": "Whether 2FA is currently enabled"
          }
        },
        "required": [
          "enabled"
        ]
      },
      "ApiResponse_TwoFactorStatusResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TwoFactorStatusResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReferralLinkCodeResponseDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "alice123",
            "description": "Referral code"
          },
          "link": {
            "type": "string",
            "example": "bio.re/ref/alice123",
            "description": "Full referral link URL"
          }
        },
        "required": [
          "code",
          "link"
        ]
      },
      "ApiResponse_ReferralLinkCodeResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReferralLinkCodeResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TrackClickResponseDto": {
        "type": "object",
        "properties": {
          "tracked": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "tracked"
        ]
      },
      "ApiResponse_TrackClickResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TrackClickResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReferralDashboardLinkDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string",
            "example": "alice123"
          },
          "clicks": {
            "type": "number",
            "example": 0
          },
          "signups": {
            "type": "number",
            "example": 0
          },
          "conversions": {
            "type": "number",
            "example": 0
          },
          "totalEarnings": {
            "type": "string",
            "example": "0",
            "description": "Decimal as string"
          },
          "active": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "id",
          "code",
          "clicks",
          "signups",
          "conversions",
          "totalEarnings",
          "active"
        ]
      },
      "ReferralDashboardRewardItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "triggerType": {
            "type": "string",
            "enum": [
              "REGISTRATION",
              "FIRST_PAYMENT",
              "RECURRING_PAYMENT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "5.00",
            "description": "Decimal as string"
          },
          "clawedBack": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "triggerType",
          "amount",
          "clawedBack",
          "createdAt"
        ]
      },
      "ReferralDashboardResponseDto": {
        "type": "object",
        "properties": {
          "link": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReferralDashboardLinkDto"
              }
            ]
          },
          "rewards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferralDashboardRewardItemDto"
            }
          },
          "totalEarnings": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string"
          }
        },
        "required": [
          "rewards",
          "totalEarnings"
        ]
      },
      "ApiResponse_ReferralDashboardResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReferralDashboardResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApplyCouponDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Coupon code",
            "example": "WELCOME20"
          },
          "transactionAmount": {
            "type": "number",
            "minimum": 1,
            "description": "Transaction amount in dollars to apply coupon against",
            "example": 10
          },
          "appliesTo": {
            "type": "string",
            "description": "What the coupon applies to",
            "example": "message"
          }
        },
        "required": [
          "code",
          "transactionAmount",
          "appliesTo"
        ]
      },
      "ApplyCouponResponseDto": {
        "type": "object",
        "properties": {
          "discount": {
            "type": "number",
            "example": 10,
            "description": "Discount value (percentage or fixed amount)"
          }
        },
        "required": [
          "discount"
        ]
      },
      "ApiResponse_ApplyCouponResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ApplyCouponResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateCouponDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Coupon code (unique, uppercase recommended)",
            "example": "SUMMER50"
          },
          "type": {
            "type": "string",
            "description": "Coupon type",
            "enum": [
              "FIXED",
              "PERCENTAGE"
            ],
            "example": "PERCENTAGE"
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000,
            "description": "Discount value (percentage 0-100 or fixed amount in dollars)",
            "example": 20
          },
          "appliesTo": {
            "type": "string",
            "description": "What the coupon applies to",
            "example": "message"
          },
          "maxUses": {
            "type": "number",
            "description": "Maximum number of total uses",
            "example": 1000
          },
          "perUserLimit": {
            "type": "number",
            "description": "Maximum uses per user",
            "example": 1
          },
          "minPurchase": {
            "type": "number",
            "description": "Minimum purchase amount in dollars",
            "example": 5
          },
          "targeting": {
            "type": "string",
            "description": "Targeting criteria (JSON string)",
            "example": "{\"level\":\"GOLD\"}"
          },
          "startsAt": {
            "type": "string",
            "description": "Coupon start date (ISO 8601)",
            "example": "2026-06-01T00:00:00Z"
          },
          "endsAt": {
            "type": "string",
            "description": "Coupon end date (ISO 8601)",
            "example": "2026-08-31T23:59:59Z"
          }
        },
        "required": [
          "code",
          "type",
          "value"
        ]
      },
      "CouponCreatedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "ApiResponse_CouponCreatedResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CouponCreatedResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CouponDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string",
            "example": "WELCOME10"
          },
          "type": {
            "type": "string",
            "enum": [
              "FIXED",
              "PERCENTAGE"
            ]
          },
          "value": {
            "type": "string",
            "example": "10.00",
            "description": "Decimal as string"
          },
          "appliesTo": {
            "type": "string",
            "example": "BOTH",
            "description": "WALLET_TOPUP | MESSAGE | BOTH"
          },
          "maxUses": {
            "type": "number",
            "nullable": true
          },
          "perUserLimit": {
            "type": "number",
            "example": 1
          },
          "minPurchase": {
            "type": "string",
            "nullable": true,
            "example": "5.00",
            "description": "Decimal as string"
          },
          "startsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "targeting": {
            "type": "string",
            "example": "ALL",
            "description": "ALL | FANS | CREATORS | NEW_USERS"
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "code",
          "type",
          "value",
          "appliesTo",
          "perUserLimit",
          "targeting",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_CouponDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CouponDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ToggleLinkDto": {
        "type": "object",
        "properties": {}
      },
      "ReferralLinkCodeEmbedDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "REF-FN-001"
          }
        },
        "required": [
          "code"
        ]
      },
      "ReferralRewardListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "referralLinkId": {
            "type": "string",
            "format": "uuid"
          },
          "referrerId": {
            "type": "string",
            "format": "uuid"
          },
          "referredId": {
            "type": "string",
            "format": "uuid"
          },
          "triggerType": {
            "type": "string",
            "enum": [
              "REGISTRATION",
              "FIRST_PAYMENT",
              "RECURRING_PAYMENT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "5",
            "description": "Decimal as string"
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "sourceId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "clawedBack": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "referralLink": {
            "$ref": "#/components/schemas/ReferralLinkCodeEmbedDto"
          }
        },
        "required": [
          "id",
          "referralLinkId",
          "referrerId",
          "referredId",
          "triggerType",
          "amount",
          "clawedBack",
          "createdAt",
          "referralLink"
        ]
      },
      "ReferralRewardListDataDto": {
        "type": "object",
        "properties": {
          "rewards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferralRewardListItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 3
          }
        },
        "required": [
          "rewards",
          "total"
        ]
      },
      "ReferralRewardListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReferralRewardListDataDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReferralLinkCodeUserEmbedDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "REF-FN-001"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "code",
          "userId"
        ]
      },
      "ReferralRewardDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "referralLinkId": {
            "type": "string",
            "format": "uuid"
          },
          "referrerId": {
            "type": "string",
            "format": "uuid"
          },
          "referredId": {
            "type": "string",
            "format": "uuid"
          },
          "triggerType": {
            "type": "string",
            "enum": [
              "REGISTRATION",
              "FIRST_PAYMENT",
              "RECURRING_PAYMENT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "5",
            "description": "Decimal as string"
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "sourceId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "clawedBack": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "referralLink": {
            "$ref": "#/components/schemas/ReferralLinkCodeUserEmbedDto"
          }
        },
        "required": [
          "id",
          "referralLinkId",
          "referrerId",
          "referredId",
          "triggerType",
          "amount",
          "clawedBack",
          "createdAt",
          "referralLink"
        ]
      },
      "ApiResponse_ReferralRewardDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReferralRewardDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ClawbackResultDto": {
        "type": "object",
        "properties": {
          "clawedBack": {
            "type": "number",
            "example": 3,
            "description": "Number of rewards clawed back"
          },
          "totalDebited": {
            "type": "string",
            "example": "15.00",
            "description": "Total amount debited (Decimal as string)"
          }
        },
        "required": [
          "clawedBack",
          "totalDebited"
        ]
      },
      "ApiResponse_ClawbackResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ClawbackResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RewardsByTypeEntryDto": {
        "type": "object",
        "properties": {
          "triggerType": {
            "type": "string",
            "enum": [
              "REGISTRATION",
              "FIRST_PAYMENT",
              "RECURRING_PAYMENT"
            ]
          },
          "_count": {
            "type": "number",
            "example": 5
          },
          "_sum": {
            "type": "object",
            "description": "{ amount: string }"
          }
        },
        "required": [
          "triggerType",
          "_count",
          "_sum"
        ]
      },
      "ReferralStatsDto": {
        "type": "object",
        "properties": {
          "totalLinks": {
            "type": "number",
            "example": 10
          },
          "totalClicks": {
            "type": "number",
            "example": 100
          },
          "totalSignups": {
            "type": "number",
            "example": 25
          },
          "totalConversions": {
            "type": "number",
            "example": 15
          },
          "totalEarnings": {
            "type": "number",
            "example": 500
          },
          "totalRewards": {
            "type": "number",
            "example": 30
          },
          "rewardsByType": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RewardsByTypeEntryDto"
            }
          }
        },
        "required": [
          "totalLinks",
          "totalClicks",
          "totalSignups",
          "totalConversions",
          "totalEarnings",
          "totalRewards",
          "rewardsByType"
        ]
      },
      "ApiResponse_ReferralStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReferralStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReferralLinkDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string",
            "example": "REF-FN-001"
          },
          "clicks": {
            "type": "number",
            "example": 0
          },
          "signups": {
            "type": "number",
            "example": 0
          },
          "conversions": {
            "type": "number",
            "example": 0
          },
          "totalEarnings": {
            "type": "string",
            "example": "0",
            "description": "Decimal as string"
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "code",
          "clicks",
          "signups",
          "conversions",
          "totalEarnings",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ReferralLinkListDataDto": {
        "type": "object",
        "properties": {
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferralLinkDto"
            }
          },
          "total": {
            "type": "number",
            "example": 10
          }
        },
        "required": [
          "links",
          "total"
        ]
      },
      "ReferralLinkListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReferralLinkListDataDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "EscrowHeldDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "example": 3
          },
          "amount": {
            "type": "number",
            "example": 150,
            "description": "Total escrow amount (number — aggregated)"
          }
        },
        "required": [
          "count",
          "amount"
        ]
      },
      "CommissionDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "example": 5
          },
          "amount": {
            "type": "number",
            "example": 320,
            "description": "Total commission amount (number — aggregated)"
          }
        },
        "required": [
          "count",
          "amount"
        ]
      },
      "RecentTransactionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "CREDIT",
              "DEBIT",
              "PAYOUT",
              "REFUND",
              "ADJUSTMENT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "500",
            "description": "Decimal as string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "type",
          "amount",
          "createdAt"
        ]
      },
      "FinanceDashboardDto": {
        "type": "object",
        "properties": {
          "totalWallets": {
            "type": "number",
            "example": 6
          },
          "totalBalance": {
            "type": "number",
            "example": 1301.25,
            "description": "Aggregated total balance (number)"
          },
          "escrowHeld": {
            "$ref": "#/components/schemas/EscrowHeldDto"
          },
          "commission": {
            "$ref": "#/components/schemas/CommissionDto"
          },
          "recentTransactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecentTransactionDto"
            }
          }
        },
        "required": [
          "totalWallets",
          "totalBalance",
          "escrowHeld",
          "commission",
          "recentTransactions"
        ]
      },
      "ApiResponse_FinanceDashboardDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/FinanceDashboardDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WalletUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          }
        },
        "required": [
          "id",
          "displayName"
        ]
      },
      "WalletListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "FAN",
              "CREATOR"
            ]
          },
          "balance": {
            "type": "string",
            "example": "215.75",
            "description": "Decimal as string"
          },
          "frozen": {
            "type": "boolean",
            "example": false
          },
          "frozenAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/WalletUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "type",
          "balance",
          "frozen",
          "createdAt",
          "user"
        ]
      },
      "PaginatedData_WalletListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WalletListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_WalletListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_WalletListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WalletTransactionEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "CREDIT",
              "DEBIT",
              "PAYOUT",
              "REFUND",
              "ADJUSTMENT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "type",
          "amount",
          "createdAt"
        ]
      },
      "WalletDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "FAN",
              "CREATOR"
            ]
          },
          "balance": {
            "type": "string",
            "example": "0",
            "description": "Decimal as string"
          },
          "frozen": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WalletTransactionEmbedDto"
            }
          }
        },
        "required": [
          "id",
          "type",
          "balance",
          "frozen",
          "createdAt",
          "transactions"
        ]
      },
      "ArrayApiResponse_WalletDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WalletDetailDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FreezeWalletDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "FAN",
              "CREATOR"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "UnfreezeWalletDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "FAN",
              "CREATOR"
            ]
          }
        },
        "required": [
          "type"
        ]
      },
      "ReconciliationMismatchDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "stripeAmount": {
            "type": "string",
            "example": "100.00",
            "description": "Decimal as string"
          },
          "ledgerAmount": {
            "type": "string",
            "example": "99.50",
            "description": "Decimal as string"
          },
          "difference": {
            "type": "string",
            "example": "0.50",
            "description": "Decimal as string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH"
            ]
          },
          "referenceId": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "stripeAmount",
          "ledgerAmount",
          "difference",
          "severity",
          "referenceId"
        ]
      },
      "ReconciliationResultDto": {
        "type": "object",
        "properties": {
          "totalStripeEvents": {
            "type": "number",
            "example": 42
          },
          "totalLedgerEntries": {
            "type": "number",
            "example": 40
          },
          "mismatches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReconciliationMismatchDto"
            }
          },
          "balanced": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "totalStripeEvents",
          "totalLedgerEntries",
          "mismatches",
          "balanced"
        ]
      },
      "ApiResponse_ReconciliationResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReconciliationResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LedgerEntryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "transactionId": {
            "type": "string",
            "format": "uuid"
          },
          "accountType": {
            "type": "string",
            "enum": [
              "STRIPE_RECEIVABLE",
              "FAN_WALLET",
              "CREATOR_WALLET",
              "PLATFORM_COMMISSION",
              "ESCROW",
              "BREAKAGE_REVENUE",
              "CHARGEBACK_LOSS",
              "PAYOUT_SETTLEMENT"
            ]
          },
          "accountId": {
            "type": "string"
          },
          "entryType": {
            "type": "string",
            "enum": [
              "DEBIT",
              "CREDIT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "transactionId",
          "accountType",
          "accountId",
          "entryType",
          "amount",
          "createdAt"
        ]
      },
      "ArrayApiResponse_LedgerEntryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LedgerEntryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RefundMessageEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "RefundRequesterEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "RefundListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "requesterId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "PROCESSED",
              "REJECTED"
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "message": {
            "$ref": "#/components/schemas/RefundMessageEmbedDto"
          },
          "requester": {
            "$ref": "#/components/schemas/RefundRequesterEmbedDto"
          }
        },
        "required": [
          "id",
          "messageId",
          "requesterId",
          "amount",
          "status",
          "createdAt",
          "updatedAt",
          "message",
          "requester"
        ]
      },
      "PaginatedData_RefundListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_RefundListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_RefundListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RefundDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "requesterId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "PROCESSED",
              "REJECTED"
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "message": {
            "$ref": "#/components/schemas/RefundMessageEmbedDto"
          },
          "requester": {
            "$ref": "#/components/schemas/RefundRequesterEmbedDto"
          }
        },
        "required": [
          "id",
          "messageId",
          "requesterId",
          "amount",
          "status",
          "createdAt",
          "updatedAt",
          "message",
          "requester"
        ]
      },
      "ApiResponse_RefundDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RefundDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChargebackUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "ChargebackListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "stripeDisputeId": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "example": "50.00",
            "description": "Decimal as string"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "WON",
              "LOST",
              "UNDER_REVIEW"
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "evidence": {
            "type": "object",
            "nullable": true,
            "description": "Chargeback evidence (JSON object or null)"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/ChargebackUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "amount",
          "status",
          "createdAt",
          "updatedAt",
          "user"
        ]
      },
      "PaginatedData_ChargebackListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChargebackListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_ChargebackListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_ChargebackListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChargebackDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "stripeDisputeId": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "example": "50.00",
            "description": "Decimal as string"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "WON",
              "LOST",
              "UNDER_REVIEW"
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "evidence": {
            "type": "object",
            "nullable": true,
            "description": "Chargeback evidence (JSON object or null)"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/ChargebackUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "amount",
          "status",
          "createdAt",
          "updatedAt",
          "user"
        ]
      },
      "ApiResponse_ChargebackDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ChargebackDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateChargebackDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "WON",
              "LOST",
              "UNDER_REVIEW"
            ]
          }
        },
        "required": [
          "status"
        ]
      },
      "CurrencyDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "string",
            "example": "USD"
          },
          "name": {
            "type": "string",
            "example": "US Dollar"
          },
          "symbol": {
            "type": "string",
            "example": "$"
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "isDefault": {
            "type": "boolean",
            "example": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "code",
          "name",
          "symbol",
          "active",
          "isDefault",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_CurrencyDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateCurrencyDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "example": "USD"
          },
          "name": {
            "type": "string",
            "example": "US Dollar"
          },
          "symbol": {
            "type": "string",
            "example": "$"
          },
          "active": {
            "type": "boolean",
            "default": true
          },
          "isDefault": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "code",
          "name",
          "symbol"
        ]
      },
      "ApiResponse_CurrencyDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CurrencyDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateCurrencyDto": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "symbol": {
            "type": "string"
          }
        }
      },
      "WalletPackagesResponseDto": {
        "type": "object",
        "properties": {
          "packages": {
            "example": [
              5,
              10,
              25
            ],
            "description": "Available load amounts",
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "min": {
            "type": "number",
            "example": 5
          },
          "max": {
            "type": "number",
            "example": 500
          },
          "currency": {
            "type": "string",
            "example": "USD"
          }
        },
        "required": [
          "packages",
          "min",
          "max",
          "currency"
        ]
      },
      "ApiResponse_WalletPackagesResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WalletPackagesResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WalletBalanceResponseDto": {
        "type": "object",
        "properties": {
          "balance": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string, fixed 2 decimal places"
          },
          "frozen": {
            "type": "boolean",
            "example": false
          }
        },
        "required": [
          "balance",
          "frozen"
        ]
      },
      "ApiResponse_WalletBalanceResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WalletBalanceResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WalletLoadDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,2})?$",
            "example": "25.00",
            "description": "Amount in dollars as string (actual min/max enforced by ConfigService at runtime)"
          }
        },
        "required": [
          "amount"
        ]
      },
      "WalletLoadSessionResponseDto": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Stripe Checkout session ID"
          },
          "checkoutUrl": {
            "type": "string",
            "description": "Stripe Checkout redirect URL"
          }
        },
        "required": [
          "sessionId",
          "checkoutUrl"
        ]
      },
      "ApiResponse_WalletLoadSessionResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WalletLoadSessionResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WalletActivityItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "walletId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "CREDIT",
              "DEBIT",
              "EXPIRY",
              "CHARGEBACK",
              "PAYOUT"
            ]
          },
          "amount": {
            "type": "string",
            "example": "25.00",
            "description": "Decimal as string"
          },
          "balanceBefore": {
            "type": "string",
            "example": "100.00",
            "description": "Decimal as string"
          },
          "balanceAfter": {
            "type": "string",
            "example": "125.00",
            "description": "Decimal as string"
          },
          "referenceType": {
            "type": "string"
          },
          "referenceId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "walletId",
          "type",
          "amount",
          "balanceBefore",
          "balanceAfter",
          "referenceType",
          "referenceId",
          "description",
          "createdAt"
        ]
      },
      "PaginatedData_WalletActivityItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WalletActivityItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_WalletActivityItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_WalletActivityItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "OnboardingDto": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 100,
            "description": "Creator display name"
          },
          "bio": {
            "type": "string",
            "maxLength": 500,
            "description": "Creator bio"
          },
          "themeId": {
            "type": "string",
            "maxLength": 50,
            "description": "Theme ID to apply"
          },
          "username": {
            "type": "string",
            "maxLength": 100,
            "pattern": "^[a-z0-9._-]+$",
            "description": "Username (required if user has no username)"
          }
        }
      },
      "UpgradeToCreatorResponseDto": {
        "type": "object",
        "properties": {
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "bioPageUrl": {
            "type": "string",
            "example": "https://bio.re/johndoe"
          }
        },
        "required": [
          "creatorId",
          "bioPageUrl"
        ]
      },
      "ApiResponse_UpgradeToCreatorResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UpgradeToCreatorResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ProfileBioLinkDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bioPageId": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "sortOrder": {
            "type": "number"
          },
          "active": {
            "type": "boolean"
          },
          "isSocial": {
            "type": "boolean"
          },
          "platform": {
            "type": "string",
            "nullable": true
          },
          "embedType": {
            "type": "string",
            "nullable": true
          },
          "embedMeta": {
            "type": "object",
            "nullable": true
          },
          "scheduledStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "scheduledEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "clickCount": {
            "type": "number",
            "example": 0
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "bioPageId",
          "title",
          "url",
          "sortOrder",
          "active",
          "isSocial",
          "clickCount",
          "createdAt",
          "updatedAt"
        ]
      },
      "ProfileBioTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "tokens": {
            "type": "object",
            "description": "Template design tokens (JSON)"
          },
          "thumbnail": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "number"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "tokens",
          "active",
          "sortOrder",
          "createdAt",
          "updatedAt"
        ]
      },
      "BioPageResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "templateId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "themeOverride": {
            "type": "object",
            "nullable": true
          },
          "customCss": {
            "type": "string",
            "nullable": true
          },
          "embedEnabled": {
            "type": "boolean"
          },
          "published": {
            "type": "boolean"
          },
          "emailCollectionEnabled": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfileBioLinkDto"
            }
          },
          "template": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/ProfileBioTemplateDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "creatorId",
          "embedEnabled",
          "published",
          "emailCollectionEnabled",
          "createdAt",
          "updatedAt",
          "links"
        ]
      },
      "ProfileCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "ProfileDmPackageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "price": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "active": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "creatorId",
          "dmType",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "CreatorProfileResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "kycStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "kycProvider": {
            "type": "string",
            "nullable": true
          },
          "kycProviderId": {
            "type": "string",
            "nullable": true
          },
          "kycCompletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "dmType": {
            "type": "string",
            "nullable": true,
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "dmActive": {
            "type": "boolean"
          },
          "creatorStatus": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "VACATION",
              "SUSPENDED",
              "BANNED",
              "DEACTIVATED"
            ]
          },
          "vacationMode": {
            "type": "boolean"
          },
          "vacationStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "vacationEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "totalEarnings": {
            "type": "string",
            "example": "1250.00"
          },
          "totalMessages": {
            "type": "number",
            "example": 47
          },
          "totalFollowers": {
            "type": "number",
            "example": 100
          },
          "avgRating": {
            "type": "string",
            "nullable": true,
            "example": "4.50"
          },
          "ratingCount": {
            "type": "number",
            "example": 0
          },
          "stripeAccountId": {
            "type": "string",
            "nullable": true
          },
          "stripeAccountStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "ACTIVE",
              "RESTRICTED",
              "DISABLED"
            ]
          },
          "stripeChargesEnabled": {
            "type": "boolean"
          },
          "stripePayoutsEnabled": {
            "type": "boolean"
          },
          "iban": {
            "type": "string",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "nullable": true
          },
          "accountHolderName": {
            "type": "string",
            "nullable": true
          },
          "swiftCode": {
            "type": "string",
            "nullable": true
          },
          "bankCountry": {
            "type": "string",
            "nullable": true
          },
          "bankAccountVerified": {
            "type": "boolean"
          },
          "bankVerifiedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "preferredPayoutMethod": {
            "type": "string",
            "nullable": true,
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ]
          },
          "autoPayoutEnabled": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "bioPage": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/BioPageResponseDto"
              }
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfileCategoryDto"
            }
          },
          "dmPackages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfileDmPackageDto"
            }
          }
        },
        "required": [
          "id",
          "userId",
          "level",
          "kycStatus",
          "dmActive",
          "creatorStatus",
          "vacationMode",
          "totalEarnings",
          "totalMessages",
          "totalFollowers",
          "ratingCount",
          "stripeAccountStatus",
          "stripeChargesEnabled",
          "stripePayoutsEnabled",
          "bankAccountVerified",
          "autoPayoutEnabled",
          "createdAt",
          "updatedAt",
          "categories",
          "dmPackages"
        ]
      },
      "ApiResponse_CreatorProfileResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorProfileResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ConnectSocialDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "description": "Social platform identifier",
            "example": "instagram"
          },
          "code": {
            "type": "string",
            "description": "OAuth authorization code from platform",
            "example": "AQBx8..."
          },
          "redirectUri": {
            "type": "string",
            "description": "OAuth redirect URI used in the authorization request",
            "example": "https://bio.re/callback"
          },
          "codeVerifier": {
            "type": "string",
            "description": "PKCE code verifier (required for X/Twitter)"
          }
        },
        "required": [
          "platform",
          "code",
          "redirectUri"
        ]
      },
      "DisconnectSocialDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "description": "Social platform to disconnect",
            "example": "instagram"
          }
        },
        "required": [
          "platform"
        ]
      },
      "SocialAccountItemDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "example": "instagram"
          },
          "platformUsername": {
            "type": "string",
            "nullable": true
          },
          "verified": {
            "type": "boolean"
          },
          "connectedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "platform",
          "verified",
          "connectedAt"
        ]
      },
      "ArrayApiResponse_SocialAccountItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SocialAccountItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LevelRequirementDetailDto": {
        "type": "object",
        "properties": {
          "current": {
            "type": "number",
            "example": 47
          },
          "required": {
            "type": "number",
            "example": 100
          }
        },
        "required": [
          "current",
          "required"
        ]
      },
      "NextLevelRequirementsDto": {
        "type": "object",
        "properties": {
          "messages": {
            "$ref": "#/components/schemas/LevelRequirementDetailDto"
          },
          "earnings": {
            "$ref": "#/components/schemas/LevelRequirementDetailDto"
          }
        },
        "required": [
          "messages",
          "earnings"
        ]
      },
      "DashboardResponseDto": {
        "type": "object",
        "properties": {
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "commissionRate": {
            "type": "number",
            "example": 0.2
          },
          "totalMessages": {
            "type": "number",
            "example": 47
          },
          "totalEarnings": {
            "type": "string",
            "example": "1250.00"
          },
          "walletBalance": {
            "type": "object",
            "example": "0.00"
          },
          "walletFrozen": {
            "type": "boolean"
          },
          "pendingPayouts": {
            "type": "object",
            "example": "0.00"
          },
          "dmActive": {
            "type": "boolean"
          },
          "dmType": {
            "type": "string",
            "nullable": true,
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "responseRate": {
            "type": "number",
            "example": 95.5
          },
          "nextLevel": {
            "type": "string",
            "nullable": true,
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "nextLevelProgress": {
            "type": "number",
            "example": 0.47
          },
          "nextLevelRequirements": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/NextLevelRequirementsDto"
              }
            ]
          },
          "hasSocialAccounts": {
            "type": "boolean"
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "level",
          "commissionRate",
          "totalMessages",
          "totalEarnings",
          "walletBalance",
          "walletFrozen",
          "pendingPayouts",
          "dmActive",
          "responseRate",
          "nextLevelProgress",
          "hasSocialAccounts"
        ]
      },
      "ApiResponse_DashboardResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/DashboardResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChecklistItemDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "complete_kyc"
          },
          "completed": {
            "type": "boolean"
          },
          "label": {
            "type": "string",
            "example": "Complete identity verification"
          }
        },
        "required": [
          "key",
          "completed",
          "label"
        ]
      },
      "ChecklistResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChecklistItemDto"
            }
          },
          "completedCount": {
            "type": "number",
            "example": 3
          },
          "totalCount": {
            "type": "number",
            "example": 7
          }
        },
        "required": [
          "items",
          "completedCount",
          "totalCount"
        ]
      },
      "ApiResponse_ChecklistResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ChecklistResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ActivityItemDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "example": "message_received"
          },
          "title": {
            "type": "string",
            "example": "New message from @johndoe"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "meta": {
            "type": "object",
            "nullable": true
          }
        },
        "required": [
          "type",
          "title",
          "timestamp"
        ]
      },
      "ActivityResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivityItemDto"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "ApiResponse_ActivityResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ActivityResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_BioPageResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BioPageResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateBioPageDto": {
        "type": "object",
        "properties": {
          "bio": {
            "type": "string",
            "maxLength": 5000,
            "description": "Bio page content"
          },
          "templateId": {
            "type": "string",
            "nullable": true,
            "format": "uuid",
            "description": "Template ID (UUID or null to clear)"
          },
          "themeOverride": {
            "type": "object",
            "description": "Theme override object"
          },
          "customCss": {
            "type": "string",
            "maxLength": 10000,
            "description": "Custom CSS"
          },
          "embedEnabled": {
            "type": "boolean",
            "description": "Whether embed is enabled"
          },
          "published": {
            "type": "boolean",
            "description": "Whether bio page is published"
          },
          "emailCollectionEnabled": {
            "type": "boolean",
            "description": "Whether email collection is enabled"
          }
        }
      },
      "CreateBioLinkDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 100,
            "description": "Link title"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Link URL"
          },
          "icon": {
            "type": "string",
            "maxLength": 50,
            "description": "Link icon identifier"
          },
          "sortOrder": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "Sort order"
          },
          "active": {
            "type": "boolean",
            "description": "Whether link is active",
            "default": true
          },
          "embedType": {
            "type": "string",
            "enum": [
              "YOUTUBE",
              "SPOTIFY",
              "TIKTOK",
              "SOUNDCLOUD",
              "TWITCH",
              "APPLE_MUSIC",
              "CUSTOM"
            ],
            "description": "Embed type (YOUTUBE, SPOTIFY, TIKTOK, SOUNDCLOUD, TWITCH, APPLE_MUSIC, CUSTOM)"
          },
          "embedMeta": {
            "type": "object",
            "description": "Embed metadata"
          },
          "scheduledStart": {
            "type": "string",
            "description": "Scheduled start date (ISO 8601)"
          },
          "scheduledEnd": {
            "type": "string",
            "description": "Scheduled end date (ISO 8601)"
          },
          "isSocial": {
            "type": "boolean",
            "description": "Whether this is a social media link"
          },
          "platform": {
            "type": "string",
            "maxLength": 30,
            "description": "Social platform identifier (e.g. instagram, x, youtube, tiktok)"
          }
        },
        "required": [
          "title",
          "url"
        ]
      },
      "AddLinkResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "ApiResponse_AddLinkResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AddLinkResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateBioLinkDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 100,
            "description": "Link title"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Link URL"
          },
          "icon": {
            "type": "string",
            "maxLength": 50,
            "description": "Link icon identifier"
          },
          "sortOrder": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "Sort order"
          },
          "active": {
            "type": "boolean",
            "description": "Whether link is active"
          },
          "embedType": {
            "type": "string",
            "enum": [
              "YOUTUBE",
              "SPOTIFY",
              "TIKTOK",
              "SOUNDCLOUD",
              "TWITCH",
              "APPLE_MUSIC",
              "CUSTOM"
            ],
            "description": "Embed type (YOUTUBE, SPOTIFY, TIKTOK, SOUNDCLOUD, TWITCH, APPLE_MUSIC, CUSTOM)"
          },
          "embedMeta": {
            "type": "object",
            "description": "Embed metadata"
          },
          "scheduledStart": {
            "type": "string",
            "description": "Scheduled start date (ISO 8601)"
          },
          "scheduledEnd": {
            "type": "string",
            "description": "Scheduled end date (ISO 8601)"
          },
          "isSocial": {
            "type": "boolean",
            "description": "Whether this is a social media link"
          },
          "platform": {
            "type": "string",
            "maxLength": 30,
            "description": "Social platform identifier (e.g. instagram, x, youtube, tiktok)"
          }
        }
      },
      "ReorderLinksDto": {
        "type": "object",
        "properties": {
          "linkIds": {
            "uniqueItems": true,
            "description": "Ordered array of link IDs",
            "example": [
              "link_1",
              "link_2",
              "link_3"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "linkIds"
        ]
      },
      "DMConfigResponseDto": {
        "type": "object",
        "properties": {
          "dmType": {
            "type": "string",
            "nullable": true,
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "dmActive": {
            "type": "boolean"
          }
        },
        "required": [
          "dmActive"
        ]
      },
      "ApiResponse_DMConfigResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/DMConfigResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "DMConfigDto": {
        "type": "object",
        "properties": {
          "dmType": {
            "type": "string",
            "description": "DM pricing type",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 5000,
            "description": "DM price in dollars (required for paid types, actual min/max from ConfigService)"
          },
          "dmActive": {
            "type": "boolean",
            "description": "Whether DMs are active"
          }
        },
        "required": [
          "dmType",
          "dmActive"
        ]
      },
      "VacationStatusResponseDto": {
        "type": "object",
        "properties": {
          "vacationMode": {
            "type": "boolean"
          },
          "vacationStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "vacationEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "vacationMode"
        ]
      },
      "ApiResponse_VacationStatusResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/VacationStatusResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetVacationDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable or disable vacation mode",
            "example": true
          },
          "startDate": {
            "type": "string",
            "description": "Vacation start date (ISO 8601)",
            "example": "2026-07-01T00:00:00Z"
          },
          "endDate": {
            "type": "string",
            "description": "Vacation end date (ISO 8601)",
            "example": "2026-07-15T00:00:00Z"
          }
        },
        "required": [
          "enabled"
        ]
      },
      "BankDetailsDto": {
        "type": "object",
        "properties": {
          "iban": {
            "type": "string",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "nullable": true
          },
          "accountHolderName": {
            "type": "string",
            "nullable": true
          },
          "swiftCode": {
            "type": "string",
            "nullable": true
          },
          "bankCountry": {
            "type": "string",
            "nullable": true
          },
          "verified": {
            "type": "boolean"
          },
          "verifiedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "verified"
        ]
      },
      "StripeConnectInfoDto": {
        "type": "object",
        "properties": {
          "connected": {
            "type": "boolean"
          },
          "payoutsEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "connected",
          "payoutsEnabled"
        ]
      },
      "AvailablePayoutMethodsDto": {
        "type": "object",
        "properties": {
          "STRIPE_CONNECT": {
            "type": "boolean"
          },
          "BANK_TRANSFER": {
            "type": "boolean"
          }
        },
        "required": [
          "STRIPE_CONNECT",
          "BANK_TRANSFER"
        ]
      },
      "PayoutSettingsResponseDto": {
        "type": "object",
        "properties": {
          "bankDetails": {
            "$ref": "#/components/schemas/BankDetailsDto"
          },
          "stripeConnect": {
            "$ref": "#/components/schemas/StripeConnectInfoDto"
          },
          "preferredPayoutMethod": {
            "type": "string",
            "nullable": true,
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ]
          },
          "availableMethods": {
            "$ref": "#/components/schemas/AvailablePayoutMethodsDto"
          }
        },
        "required": [
          "bankDetails",
          "stripeConnect",
          "availableMethods"
        ]
      },
      "ApiResponse_PayoutSettingsResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PayoutSettingsResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateBankDetailsDto": {
        "type": "object",
        "properties": {
          "iban": {
            "type": "string",
            "maxLength": 34,
            "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{4,30}$",
            "description": "IBAN"
          },
          "bankName": {
            "type": "string",
            "maxLength": 100,
            "description": "Bank name"
          },
          "accountHolderName": {
            "type": "string",
            "maxLength": 200,
            "description": "Account holder name"
          },
          "swiftCode": {
            "type": "string",
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$",
            "description": "SWIFT/BIC code"
          },
          "bankCountry": {
            "type": "string",
            "maxLength": 2,
            "pattern": "^[A-Z]{2}$",
            "description": "Bank country (ISO 3166-1 alpha-2)"
          },
          "preferredPayoutMethod": {
            "type": "string",
            "description": "Preferred payout method",
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ]
          }
        }
      },
      "KycStartResponseDto": {
        "type": "object",
        "properties": {
          "redirectUrl": {
            "type": "string",
            "example": "https://provider.example.com/verify?session=abc123"
          },
          "sessionId": {
            "type": "string",
            "example": "sess_abc123"
          },
          "provider": {
            "type": "string",
            "example": "sumsub"
          }
        },
        "required": [
          "redirectUrl",
          "sessionId",
          "provider"
        ]
      },
      "ApiResponse_KycStartResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/KycStartResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorKycStatusDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ],
            "example": "APPROVED"
          },
          "provider": {
            "type": "string",
            "nullable": true,
            "example": "sumsub"
          },
          "providerId": {
            "type": "string",
            "nullable": true
          },
          "completedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "status"
        ]
      },
      "ApiResponse_CreatorKycStatusDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorKycStatusDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ResendConfirmationDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "fan@example.com",
            "description": "Email address of the subscriber"
          }
        },
        "required": [
          "email"
        ]
      },
      "SubscribeToBioDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "fan@example.com"
          },
          "name": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "email"
        ]
      },
      "SubscriberItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bioPageId": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "fan@example.com"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "subscribedAt": {
            "type": "string",
            "format": "date-time"
          },
          "unsubscribedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "confirmed": {
            "type": "boolean"
          },
          "confirmToken": {
            "type": "string",
            "nullable": true,
            "description": "TODO: Sensitive field — consider omitting or masking in future iterations."
          },
          "source": {
            "type": "string",
            "nullable": true,
            "example": "bio_page"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "bioPageId",
          "email",
          "subscribedAt",
          "confirmed",
          "createdAt"
        ]
      },
      "SubscribersResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriberItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "items",
          "total"
        ]
      },
      "ApiResponse_SubscribersResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SubscribersResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorListUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status"
        ]
      },
      "CreatorListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "kycStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "kycProvider": {
            "type": "string",
            "nullable": true
          },
          "kycProviderId": {
            "type": "string",
            "nullable": true
          },
          "kycCompletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "dmActive": {
            "type": "boolean",
            "example": true
          },
          "vacationMode": {
            "type": "boolean",
            "example": false
          },
          "vacationStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "vacationEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "totalEarnings": {
            "type": "string",
            "example": "1250.00"
          },
          "totalMessages": {
            "type": "number",
            "example": 47
          },
          "avgRating": {
            "type": "string",
            "nullable": true,
            "example": "4.5"
          },
          "ratingCount": {
            "type": "number",
            "example": 0
          },
          "stripeAccountId": {
            "type": "string",
            "nullable": true
          },
          "stripeAccountStatus": {
            "type": "string",
            "example": "NOT_STARTED"
          },
          "stripeChargesEnabled": {
            "type": "boolean",
            "example": false
          },
          "stripePayoutsEnabled": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/CreatorListUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "level",
          "kycStatus",
          "dmType",
          "dmActive",
          "vacationMode",
          "totalEarnings",
          "totalMessages",
          "ratingCount",
          "stripeAccountStatus",
          "stripeChargesEnabled",
          "stripePayoutsEnabled",
          "createdAt",
          "updatedAt",
          "user"
        ]
      },
      "PaginatedData_CreatorListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_CreatorListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_CreatorListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorDetailUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "emailVerified": {
            "type": "boolean",
            "example": true
          },
          "twoFactorEnabled": {
            "type": "boolean",
            "example": false
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status",
          "emailVerified",
          "twoFactorEnabled",
          "locale",
          "createdAt",
          "updatedAt"
        ]
      },
      "BioLinkDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "number"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "url",
          "active",
          "sortOrder",
          "createdAt",
          "updatedAt"
        ]
      },
      "BioTemplateEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "BioPageEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "templateId": {
            "type": "string",
            "nullable": true
          },
          "published": {
            "type": "boolean"
          },
          "url": {
            "type": "string",
            "nullable": true,
            "example": "https://bio.re/johndoe"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BioLinkDto"
            }
          },
          "template": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/BioTemplateEmbedDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "published",
          "links"
        ]
      },
      "CreatorCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "DmPackageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "price": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "active": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "dmType",
          "active",
          "createdAt"
        ]
      },
      "CreatorRankingDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "rank": {
            "type": "number"
          },
          "score": {
            "type": "string",
            "example": "1250.00"
          }
        },
        "required": [
          "id",
          "rank",
          "score"
        ]
      },
      "CreatorDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "kycStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "kycProvider": {
            "type": "string",
            "nullable": true
          },
          "kycProviderId": {
            "type": "string",
            "nullable": true
          },
          "kycCompletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "dmActive": {
            "type": "boolean",
            "example": true
          },
          "vacationMode": {
            "type": "boolean",
            "example": false
          },
          "vacationStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "vacationEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "totalEarnings": {
            "type": "string",
            "example": "1250.00"
          },
          "totalMessages": {
            "type": "number",
            "example": 47
          },
          "avgRating": {
            "type": "string",
            "nullable": true,
            "example": "4.5"
          },
          "ratingCount": {
            "type": "number",
            "example": 0
          },
          "stripeAccountId": {
            "type": "string",
            "nullable": true
          },
          "stripeAccountStatus": {
            "type": "string",
            "example": "NOT_STARTED"
          },
          "stripeChargesEnabled": {
            "type": "boolean",
            "example": false
          },
          "stripePayoutsEnabled": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/CreatorDetailUserEmbedDto"
          },
          "bioPage": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/BioPageEmbedDto"
              }
            ]
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorCategoryDto"
            }
          },
          "dmPackages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DmPackageDto"
            }
          },
          "ranking": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/CreatorRankingDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "userId",
          "level",
          "kycStatus",
          "dmType",
          "dmActive",
          "vacationMode",
          "totalEarnings",
          "totalMessages",
          "ratingCount",
          "stripeAccountStatus",
          "stripeChargesEnabled",
          "stripePayoutsEnabled",
          "createdAt",
          "updatedAt",
          "user",
          "categories",
          "dmPackages"
        ]
      },
      "ApiResponse_CreatorDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReferrerItemDto": {
        "type": "object",
        "properties": {
          "referrer": {
            "type": "string",
            "example": "direct"
          },
          "count": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "referrer",
          "count"
        ]
      },
      "DeviceItemDto": {
        "type": "object",
        "properties": {
          "device": {
            "type": "string",
            "example": "mobile"
          },
          "count": {
            "type": "number",
            "example": 30
          }
        },
        "required": [
          "device",
          "count"
        ]
      },
      "CountryItemDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "example": "US"
          },
          "count": {
            "type": "number",
            "example": 25
          }
        },
        "required": [
          "country",
          "count"
        ]
      },
      "ViewsByDayItemDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-04-15"
          },
          "views": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "date",
          "views"
        ]
      },
      "CreatorAnalyticsDto": {
        "type": "object",
        "properties": {
          "totalViews": {
            "type": "number",
            "example": 1500
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 800
          },
          "topReferrers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferrerItemDto"
            }
          },
          "deviceBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceItemDto"
            }
          },
          "countryBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CountryItemDto"
            }
          },
          "viewsByDay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ViewsByDayItemDto"
            }
          }
        },
        "required": [
          "totalViews",
          "uniqueVisitors",
          "topReferrers",
          "deviceBreakdown",
          "countryBreakdown",
          "viewsByDay"
        ]
      },
      "ApiResponse_CreatorAnalyticsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorAnalyticsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LevelEvaluationResponseDto": {
        "type": "object",
        "properties": {
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ],
            "description": "Current or new creator level"
          },
          "changed": {
            "type": "boolean",
            "example": false,
            "description": "Whether the level changed from this evaluation"
          },
          "commission": {
            "type": "number",
            "example": 0.15,
            "description": "Commission rate for this level"
          }
        },
        "required": [
          "level",
          "changed",
          "commission"
        ]
      },
      "ApiResponse_LevelEvaluationResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LevelEvaluationResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetLevelDto": {
        "type": "object",
        "properties": {
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          }
        },
        "required": [
          "level"
        ]
      },
      "BulkLevelEvaluationResponseDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 150,
            "description": "Total creators evaluated"
          },
          "changed": {
            "type": "number",
            "example": 3,
            "description": "Number of creators whose level changed"
          }
        },
        "required": [
          "total",
          "changed"
        ]
      },
      "ApiResponse_BulkLevelEvaluationResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BulkLevelEvaluationResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "OverrideKYCDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          }
        },
        "required": [
          "status"
        ]
      },
      "AdminConnectSocialDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "description": "Social platform identifier",
            "example": "instagram"
          },
          "platformUserId": {
            "type": "string",
            "description": "User ID on the social platform",
            "example": "12345678"
          },
          "platformUsername": {
            "type": "string",
            "description": "Username on the social platform",
            "example": "@johndoe"
          }
        },
        "required": [
          "platform",
          "platformUserId"
        ]
      },
      "SetBankVerifiedDto": {
        "type": "object",
        "properties": {
          "verified": {
            "type": "boolean",
            "description": "Whether the bank account is verified"
          }
        },
        "required": [
          "verified"
        ]
      },
      "PublicBioLinkDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "My Website"
          },
          "url": {
            "type": "string",
            "example": "https://example.com"
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "isSocial": {
            "type": "boolean",
            "example": false
          },
          "platform": {
            "type": "string",
            "nullable": true,
            "example": "YOUTUBE"
          },
          "embedType": {
            "type": "string",
            "nullable": true,
            "example": "VIDEO"
          },
          "embedMeta": {
            "type": "object",
            "nullable": true
          }
        },
        "required": [
          "id",
          "title",
          "url",
          "isSocial"
        ]
      },
      "PublicBioTemplateDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Minimal Dark"
          },
          "tokens": {
            "type": "object",
            "description": "Theme token configuration"
          }
        },
        "required": [
          "name",
          "tokens"
        ]
      },
      "PublicBioPageDataDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "templateId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "themeOverride": {
            "type": "object",
            "nullable": true,
            "description": "Theme override JSON"
          },
          "customCss": {
            "type": "string",
            "nullable": true,
            "description": "Custom CSS for the bio page"
          },
          "embedEnabled": {
            "type": "boolean",
            "example": false
          },
          "published": {
            "type": "boolean",
            "example": true
          },
          "emailCollectionEnabled": {
            "type": "boolean",
            "example": false
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicBioLinkDto"
            }
          },
          "template": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicBioTemplateDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "embedEnabled",
          "published",
          "emailCollectionEnabled",
          "links"
        ]
      },
      "PublicSocialAccountDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "example": "INSTAGRAM"
          },
          "platformUsername": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          }
        },
        "required": [
          "platform"
        ]
      },
      "PublicDmPackageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ],
            "description": "DM pricing type"
          },
          "price": {
            "type": "string",
            "nullable": true,
            "example": "5.00",
            "description": "Package price (Decimal as string)"
          }
        },
        "required": [
          "id",
          "dmType"
        ]
      },
      "ThemePresetDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "midnight"
          },
          "name": {
            "type": "string",
            "example": "Midnight"
          },
          "lightTokens": {
            "type": "object",
            "description": "Light mode theme tokens"
          },
          "darkTokens": {
            "type": "object",
            "description": "Dark mode theme tokens"
          },
          "typography": {
            "type": "object",
            "description": "Typography configuration"
          },
          "layout": {
            "type": "object",
            "description": "Layout configuration"
          }
        },
        "required": [
          "slug",
          "name",
          "lightTokens",
          "darkTokens",
          "typography",
          "layout"
        ]
      },
      "ReferralBadgeDto": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "example": true
          },
          "referralCode": {
            "type": "string",
            "example": "ABC123"
          },
          "url": {
            "type": "string",
            "example": "https://bio.re/r/ABC123"
          }
        },
        "required": [
          "enabled",
          "referralCode",
          "url"
        ]
      },
      "PublicBioPageResponseDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ],
            "description": "Creator level"
          },
          "dmType": {
            "type": "string",
            "nullable": true,
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ],
            "description": "DM pricing type"
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00",
            "description": "DM price (Decimal as string)"
          },
          "dmActive": {
            "type": "boolean",
            "example": true
          },
          "vacationMode": {
            "type": "boolean",
            "example": false
          },
          "avgRating": {
            "type": "string",
            "nullable": true,
            "example": "4.5",
            "description": "Average rating (Decimal as string)"
          },
          "ratingCount": {
            "type": "number",
            "example": 42
          },
          "userStatus": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "bioPage": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicBioPageDataDto"
              }
            ]
          },
          "socialAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicSocialAccountDto"
            }
          },
          "dmPackages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicDmPackageDto"
            }
          },
          "themePreset": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/ThemePresetDto"
              }
            ]
          },
          "referralBadge": {
            "description": "Referral badge — only present if referral link exists",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReferralBadgeDto"
              }
            ]
          }
        },
        "required": [
          "userId",
          "username",
          "level",
          "dmActive",
          "vacationMode",
          "ratingCount",
          "userStatus",
          "socialAccounts",
          "dmPackages"
        ]
      },
      "ApiResponse_PublicBioPageResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicBioPageResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "BioTemplateListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Minimal Dark"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "tokens": {
            "type": "object",
            "description": "Theme token configuration"
          },
          "thumbnail": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/templates/minimal-dark.png"
          }
        },
        "required": [
          "id",
          "name",
          "tokens"
        ]
      },
      "ArrayApiResponse_BioTemplateListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BioTemplateListItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TrackViewDto": {
        "type": "object",
        "properties": {
          "visitorId": {
            "type": "string"
          },
          "referrer": {
            "type": "string"
          },
          "userAgent": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "device": {
            "type": "string"
          },
          "browser": {
            "type": "string"
          },
          "isEmbed": {
            "type": "boolean"
          }
        }
      },
      "TrackResponseDto": {
        "type": "object",
        "properties": {
          "tracked": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "tracked"
        ]
      },
      "ApiResponse_TrackResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TrackResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TrackClickDto": {
        "type": "object",
        "properties": {
          "linkId": {
            "type": "string",
            "format": "uuid"
          },
          "visitorId": {
            "type": "string"
          }
        },
        "required": [
          "linkId"
        ]
      },
      "StripeConnectInitiateResponseDto": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "Stripe Express account ID",
            "example": "acct_1234567890"
          },
          "onboardingUrl": {
            "type": "string",
            "description": "Stripe Connect onboarding URL"
          }
        },
        "required": [
          "accountId",
          "onboardingUrl"
        ]
      },
      "ApiResponse_StripeConnectInitiateResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/StripeConnectInitiateResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "StripeConnectStatusResponseDto": {
        "type": "object",
        "properties": {
          "stripeAccountId": {
            "type": "string",
            "nullable": true,
            "description": "Stripe Express account ID"
          },
          "stripeAccountStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "ACTIVE",
              "RESTRICTED",
              "DISABLED"
            ],
            "description": "Current Stripe account status"
          },
          "chargesEnabled": {
            "type": "boolean",
            "example": false,
            "description": "Whether Stripe has enabled charges for this account"
          },
          "payoutsEnabled": {
            "type": "boolean",
            "example": false,
            "description": "Whether Stripe has enabled payouts for this account"
          },
          "detailsSubmitted": {
            "type": "boolean",
            "example": false,
            "description": "Whether the account holder has submitted all required details"
          }
        },
        "required": [
          "stripeAccountStatus",
          "chargesEnabled",
          "payoutsEnabled",
          "detailsSubmitted"
        ]
      },
      "ApiResponse_StripeConnectStatusResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/StripeConnectStatusResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "StripeConnectRefreshLinkResponseDto": {
        "type": "object",
        "properties": {
          "onboardingUrl": {
            "type": "string",
            "description": "Fresh Stripe Connect onboarding URL"
          }
        },
        "required": [
          "onboardingUrl"
        ]
      },
      "ApiResponse_StripeConnectRefreshLinkResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/StripeConnectRefreshLinkResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "StripeConnectDashboardLinkResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Stripe Express dashboard login URL"
          }
        },
        "required": [
          "url"
        ]
      },
      "ApiResponse_StripeConnectDashboardLinkResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/StripeConnectDashboardLinkResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "KycWebhookDto": {
        "type": "object",
        "properties": {}
      },
      "KycCreatorUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          }
        },
        "required": [
          "id",
          "email",
          "displayName"
        ]
      },
      "KycQueueCreatorEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "kycStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "kycProvider": {
            "type": "string",
            "nullable": true
          },
          "kycProviderId": {
            "type": "string",
            "nullable": true
          },
          "kycCompletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "dmActive": {
            "type": "boolean",
            "example": true
          },
          "vacationMode": {
            "type": "boolean",
            "example": false
          },
          "vacationStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "vacationEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "totalEarnings": {
            "type": "string",
            "example": "1250.00"
          },
          "totalMessages": {
            "type": "number",
            "example": 47
          },
          "avgRating": {
            "type": "string",
            "nullable": true,
            "example": "4.5"
          },
          "ratingCount": {
            "type": "number",
            "example": 0
          },
          "stripeAccountId": {
            "type": "string",
            "nullable": true
          },
          "stripeAccountStatus": {
            "type": "string",
            "example": "NOT_STARTED"
          },
          "stripeChargesEnabled": {
            "type": "boolean",
            "example": false
          },
          "stripePayoutsEnabled": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/KycCreatorUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "level",
          "kycStatus",
          "dmType",
          "dmActive",
          "vacationMode",
          "totalEarnings",
          "totalMessages",
          "ratingCount",
          "stripeAccountStatus",
          "stripeChargesEnabled",
          "stripePayoutsEnabled",
          "createdAt",
          "updatedAt",
          "user"
        ]
      },
      "KycQueueItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "CLAIMED",
              "APPROVED",
              "REJECTED"
            ]
          },
          "provider": {
            "type": "string",
            "nullable": true,
            "example": "sumsub"
          },
          "providerData": {
            "type": "object",
            "nullable": true
          },
          "claimedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "claimedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "reviewedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "reviewedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "decision": {
            "type": "string",
            "nullable": true,
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/KycQueueCreatorEmbedDto"
          }
        },
        "required": [
          "id",
          "creatorId",
          "status",
          "createdAt",
          "updatedAt",
          "creator"
        ]
      },
      "KycQueueResponseData": {
        "type": "object",
        "properties": {
          "reviews": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KycQueueItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "reviews",
          "total",
          "page",
          "limit",
          "totalPages"
        ]
      },
      "ApiResponse_KycQueueResponseData": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/KycQueueResponseData"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "KycStatsDto": {
        "type": "object",
        "properties": {
          "pending": {
            "type": "number",
            "example": 5
          },
          "claimed": {
            "type": "number",
            "example": 2
          },
          "approved": {
            "type": "number",
            "example": 120
          },
          "rejected": {
            "type": "number",
            "example": 15
          },
          "stale": {
            "type": "number",
            "example": 1
          },
          "total": {
            "type": "number",
            "example": 142
          }
        },
        "required": [
          "pending",
          "claimed",
          "approved",
          "rejected",
          "stale",
          "total"
        ]
      },
      "ApiResponse_KycStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/KycStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "KycDetailUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status"
        ]
      },
      "KycDetailCreatorEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "kycStatus": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "kycProvider": {
            "type": "string",
            "nullable": true
          },
          "kycProviderId": {
            "type": "string",
            "nullable": true
          },
          "kycCompletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "dmPrice": {
            "type": "string",
            "nullable": true,
            "example": "5.00"
          },
          "dmActive": {
            "type": "boolean",
            "example": true
          },
          "vacationMode": {
            "type": "boolean",
            "example": false
          },
          "vacationStart": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "vacationEnd": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "totalEarnings": {
            "type": "string",
            "example": "1250.00"
          },
          "totalMessages": {
            "type": "number",
            "example": 47
          },
          "avgRating": {
            "type": "string",
            "nullable": true,
            "example": "4.5"
          },
          "ratingCount": {
            "type": "number",
            "example": 0
          },
          "stripeAccountId": {
            "type": "string",
            "nullable": true
          },
          "stripeAccountStatus": {
            "type": "string",
            "example": "NOT_STARTED"
          },
          "stripeChargesEnabled": {
            "type": "boolean",
            "example": false
          },
          "stripePayoutsEnabled": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/KycDetailUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "level",
          "kycStatus",
          "dmType",
          "dmActive",
          "vacationMode",
          "totalEarnings",
          "totalMessages",
          "ratingCount",
          "stripeAccountStatus",
          "stripeChargesEnabled",
          "stripePayoutsEnabled",
          "createdAt",
          "updatedAt",
          "user"
        ]
      },
      "KycDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "CLAIMED",
              "APPROVED",
              "REJECTED"
            ]
          },
          "provider": {
            "type": "string",
            "nullable": true,
            "example": "sumsub"
          },
          "providerData": {
            "type": "object",
            "nullable": true
          },
          "claimedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "claimedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "reviewedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "reviewedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "decision": {
            "type": "string",
            "nullable": true,
            "enum": [
              "NOT_STARTED",
              "PENDING",
              "APPROVED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/KycDetailCreatorEmbedDto"
          }
        },
        "required": [
          "id",
          "creatorId",
          "status",
          "createdAt",
          "updatedAt",
          "creator"
        ]
      },
      "ApiResponse_KycDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/KycDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "KycReviewReasonDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Reason for rejection (required for reject) or approval notes"
          }
        }
      },
      "WebPushSubscribeDto": {
        "type": "object",
        "properties": {}
      },
      "WebPushUnsubscribeDto": {
        "type": "object",
        "properties": {}
      },
      "NotificationItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventKey": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "nullable": true
          },
          "read": {
            "type": "boolean"
          },
          "readAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "eventKey",
          "title",
          "body",
          "read",
          "createdAt"
        ]
      },
      "PaginatedData_NotificationItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_NotificationItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_NotificationItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UnreadNotificationCountResponseDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number"
          }
        },
        "required": [
          "count"
        ]
      },
      "ApiResponse_UnreadNotificationCountResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UnreadNotificationCountResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "MarkAllReadResponseDto": {
        "type": "object",
        "properties": {
          "updated": {
            "type": "number"
          }
        },
        "required": [
          "updated"
        ]
      },
      "ApiResponse_MarkAllReadResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/MarkAllReadResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "NotificationPreferenceItemDto": {
        "type": "object",
        "properties": {
          "eventKey": {
            "type": "string"
          },
          "email": {
            "type": "boolean"
          },
          "push": {
            "type": "boolean"
          },
          "inApp": {
            "type": "boolean"
          },
          "webPush": {
            "type": "boolean"
          },
          "sms": {
            "type": "boolean"
          },
          "customized": {
            "type": "boolean",
            "description": "True if the user has a custom preference for this event"
          }
        },
        "required": [
          "eventKey",
          "email",
          "push",
          "inApp",
          "webPush",
          "sms",
          "customized"
        ]
      },
      "ArrayApiResponse_NotificationPreferenceItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationPreferenceItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ClearReadResponseDto": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "number"
          }
        },
        "required": [
          "deleted"
        ]
      },
      "ApiResponse_ClearReadResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ClearReadResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UnsubscribeResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "message"
        ]
      },
      "ApiResponse_UnsubscribeResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UnsubscribeResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "NotificationDefaultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventKey": {
            "type": "string"
          },
          "email": {
            "type": "boolean"
          },
          "push": {
            "type": "boolean"
          },
          "inApp": {
            "type": "boolean"
          },
          "webPush": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "eventKey",
          "email",
          "push",
          "inApp",
          "webPush",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_NotificationDefaultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationDefaultDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateNotificationDefaultDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "boolean",
            "description": "Enable or disable email channel for this event"
          },
          "push": {
            "type": "boolean",
            "description": "Enable or disable push channel for this event"
          },
          "inApp": {
            "type": "boolean",
            "description": "Enable or disable in-app channel for this event"
          },
          "webPush": {
            "type": "boolean",
            "description": "Enable or disable web push channel for this event"
          },
          "sms": {
            "type": "boolean",
            "description": "Enable or disable SMS channel for this event"
          }
        }
      },
      "ApiResponse_NotificationDefaultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/NotificationDefaultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "EmailSuppressionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "suppressedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "email",
          "reason",
          "suppressedAt"
        ]
      },
      "PaginatedData_EmailSuppressionDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailSuppressionDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_EmailSuppressionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_EmailSuppressionDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateEmailSuppressionDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "example": "spam@example.com",
            "description": "Email address to suppress"
          },
          "reason": {
            "type": "string",
            "example": "Hard bounce",
            "description": "Reason for suppression"
          }
        },
        "required": [
          "email",
          "reason"
        ]
      },
      "ApiResponse_EmailSuppressionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/EmailSuppressionDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "NotificationHealthResponseDto": {
        "type": "object",
        "properties": {
          "healthy": {
            "type": "boolean"
          },
          "checks": {
            "type": "object",
            "description": "Record<string, { ok, detail }>"
          }
        },
        "required": [
          "healthy",
          "checks"
        ]
      },
      "ApiResponse_NotificationHealthResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/NotificationHealthResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "NotificationStatsTotalsDto": {
        "type": "object",
        "properties": {
          "sent": {
            "type": "number"
          },
          "delivered": {
            "type": "number"
          },
          "failed": {
            "type": "number"
          }
        },
        "required": [
          "sent",
          "delivered",
          "failed"
        ]
      },
      "NotificationStatsResponseDto": {
        "type": "object",
        "properties": {
          "timeWindow": {
            "type": "string",
            "enum": [
              "24h",
              "7d",
              "30d"
            ]
          },
          "totals": {
            "$ref": "#/components/schemas/NotificationStatsTotalsDto"
          },
          "byChannel": {
            "type": "object",
            "description": "Record<string, Record<string, number>>"
          }
        },
        "required": [
          "timeWindow",
          "totals",
          "byChannel"
        ]
      },
      "ApiResponse_NotificationStatsResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/NotificationStatsResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "QueueStatusResponseDto": {
        "type": "object",
        "properties": {
          "pending": {
            "type": "number"
          },
          "processing": {
            "type": "number"
          },
          "failed": {
            "type": "number"
          },
          "dead": {
            "type": "number"
          },
          "byChannel": {
            "type": "object",
            "description": "Record<string, Record<string, number>>"
          }
        },
        "required": [
          "pending",
          "processing",
          "failed",
          "dead",
          "byChannel"
        ]
      },
      "ApiResponse_QueueStatusResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/QueueStatusResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TopEventItemDto": {
        "type": "object",
        "properties": {
          "eventKey": {
            "type": "string"
          },
          "count": {
            "type": "number"
          }
        },
        "required": [
          "eventKey",
          "count"
        ]
      },
      "ArrayApiResponse_TopEventItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopEventItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FailureTrendItemDto": {
        "type": "object",
        "properties": {
          "hour": {
            "type": "string"
          },
          "count": {
            "type": "number"
          }
        },
        "required": [
          "hour",
          "count"
        ]
      },
      "ArrayApiResponse_FailureTrendItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FailureTrendItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "NotificationEventItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "eventKey": {
            "type": "string"
          },
          "channel": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "sent",
              "delivered",
              "failed",
              "bounced",
              "dead"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "eventKey",
          "channel",
          "status",
          "createdAt"
        ]
      },
      "PaginatedData_NotificationEventItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationEventItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_NotificationEventItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_NotificationEventItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "NotificationJobItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "queue": {
            "type": "string"
          },
          "jobName": {
            "type": "string"
          },
          "channel": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "attempts": {
            "type": "number"
          },
          "maxAttempts": {
            "type": "number"
          },
          "lastError": {
            "type": "string",
            "nullable": true
          },
          "scheduledAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "startedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "completedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "queue",
          "jobName",
          "channel",
          "status",
          "attempts",
          "maxAttempts",
          "createdAt"
        ]
      },
      "PaginatedData_NotificationJobItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NotificationJobItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_NotificationJobItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_NotificationJobItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_NotificationJobItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/NotificationJobItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RetryJobResponseDto": {
        "type": "object",
        "properties": {
          "retried": {
            "type": "boolean"
          }
        },
        "required": [
          "retried"
        ]
      },
      "ApiResponse_RetryJobResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RetryJobResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PurgeDeadJobsResponseDto": {
        "type": "object",
        "properties": {
          "purged": {
            "type": "number"
          }
        },
        "required": [
          "purged"
        ]
      },
      "ApiResponse_PurgeDeadJobsResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PurgeDeadJobsResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "EmailTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventKey": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "bodyHtml": {
            "type": "string"
          },
          "bodyText": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "eventKey",
          "locale",
          "subject",
          "bodyHtml",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_EmailTemplateDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailTemplateDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_EmailTemplateDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/EmailTemplateDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "EmailTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string"
          },
          "bodyHtml": {
            "type": "string"
          },
          "bodyText": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "subject",
          "bodyHtml"
        ]
      },
      "ApiResponse_EmailTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/EmailTemplatePreviewDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PushTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventKey": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "eventKey",
          "locale",
          "title",
          "body",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_PushTemplateDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PushTemplateDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_PushTemplateDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PushTemplateDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PushTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "body"
        ]
      },
      "ApiResponse_PushTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PushTemplatePreviewDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SmsTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "eventKey": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "updatedBy": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "eventKey",
          "locale",
          "body",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_SmsTemplateDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SmsTemplateDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_SmsTemplateDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SmsTemplateDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SmsTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string"
          }
        },
        "required": [
          "body"
        ]
      },
      "ApiResponse_SmsTemplatePreviewDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SmsTemplatePreviewDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "BroadcastResponseDto": {
        "type": "object",
        "properties": {
          "sent": {
            "type": "number"
          },
          "total": {
            "type": "number"
          },
          "segment": {
            "type": "string",
            "enum": [
              "all",
              "creators",
              "fans"
            ]
          },
          "eventKey": {
            "type": "string"
          }
        },
        "required": [
          "sent",
          "total",
          "segment",
          "eventKey"
        ]
      },
      "ApiResponse_BroadcastResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BroadcastResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TemplateVersionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "templateType": {
            "type": "string",
            "enum": [
              "email",
              "push",
              "sms"
            ]
          },
          "eventKey": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "version": {
            "type": "number"
          },
          "content": {
            "type": "object",
            "description": "JSON blob — template content snapshot"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "templateType",
          "eventKey",
          "locale",
          "version",
          "content",
          "createdAt",
          "createdBy"
        ]
      },
      "ArrayApiResponse_TemplateVersionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TemplateVersionDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FraudFlagListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "CHARGEBACK"
          },
          "score": {
            "type": "number",
            "example": 85
          },
          "details": {
            "type": "object",
            "nullable": true
          },
          "resolved": {
            "type": "boolean"
          },
          "resolvedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "resolvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "type",
          "score",
          "resolved",
          "createdAt"
        ]
      },
      "PaginatedData_FraudFlagListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudFlagListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_FraudFlagListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_FraudFlagListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RiskScoreDto": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "example": 45,
            "minimum": 0,
            "maximum": 100
          },
          "level": {
            "type": "string",
            "example": "MONITORED",
            "enum": [
              "NORMAL",
              "MONITORED",
              "RESTRICTED",
              "BLOCKED"
            ]
          }
        },
        "required": [
          "score",
          "level"
        ]
      },
      "ApiResponse_RiskScoreDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RiskScoreDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FraudFlagUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "emailVerified": {
            "type": "boolean"
          },
          "twoFactorEnabled": {
            "type": "boolean"
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status",
          "emailVerified",
          "twoFactorEnabled",
          "createdAt"
        ]
      },
      "FraudFlagDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "CHARGEBACK"
          },
          "score": {
            "type": "number",
            "example": 85
          },
          "details": {
            "type": "object",
            "nullable": true
          },
          "resolved": {
            "type": "boolean"
          },
          "resolvedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "resolvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/FraudFlagUserEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "type",
          "score",
          "resolved",
          "createdAt",
          "user"
        ]
      },
      "ApiResponse_FraudFlagDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/FraudFlagDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ResolveFraudDto": {
        "type": "object",
        "properties": {
          "resolution": {
            "type": "string",
            "enum": [
              "CLEARED",
              "SUSPENDED",
              "BANNED"
            ],
            "description": "Resolution action",
            "example": "CLEARED"
          }
        },
        "required": [
          "resolution"
        ]
      },
      "BulkResolveFraudDto": {
        "type": "object",
        "properties": {
          "flagIds": {
            "maxItems": 50,
            "description": "Fraud flag IDs to resolve (max 50)",
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "resolution": {
            "type": "string",
            "enum": [
              "CLEAR",
              "SUSPENDED",
              "BANNED"
            ],
            "description": "Resolution action"
          }
        },
        "required": [
          "flagIds",
          "resolution"
        ]
      },
      "BulkResolveFraudFailureDto": {
        "type": "object",
        "properties": {
          "flagId": {
            "type": "string",
            "format": "uuid"
          },
          "error": {
            "type": "string",
            "example": "Flag not found"
          }
        },
        "required": [
          "flagId",
          "error"
        ]
      },
      "BulkResolveFraudResultDto": {
        "type": "object",
        "properties": {
          "processed": {
            "type": "number",
            "example": 5
          },
          "failed": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkResolveFraudFailureDto"
            }
          }
        },
        "required": [
          "processed",
          "failed"
        ]
      },
      "ApiResponse_BulkResolveFraudResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BulkResolveFraudResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReportUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "ReportListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "authorId": {
            "type": "string",
            "format": "uuid"
          },
          "author": {
            "$ref": "#/components/schemas/ReportUserEmbedDto"
          },
          "targetId": {
            "type": "string",
            "format": "uuid"
          },
          "target": {
            "$ref": "#/components/schemas/ReportUserEmbedDto"
          },
          "reason": {
            "type": "string",
            "example": "spam"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "REVIEWING",
              "RESOLVED",
              "DISMISSED"
            ]
          },
          "reviewedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "reviewedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "authorId",
          "author",
          "targetId",
          "target",
          "reason",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "PaginatedData_ReportListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_ReportListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_ReportListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReportDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "authorId": {
            "type": "string",
            "format": "uuid"
          },
          "author": {
            "$ref": "#/components/schemas/ReportUserEmbedDto"
          },
          "targetId": {
            "type": "string",
            "format": "uuid"
          },
          "target": {
            "$ref": "#/components/schemas/ReportUserEmbedDto"
          },
          "reason": {
            "type": "string",
            "example": "spam"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "REVIEWING",
              "RESOLVED",
              "DISMISSED"
            ]
          },
          "reviewedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "reviewedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "authorId",
          "author",
          "targetId",
          "target",
          "reason",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ApiResponse_ReportDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ReportDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReviewReportDto": {
        "type": "object",
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "RESOLVED",
              "DISMISSED"
            ],
            "description": "Review decision",
            "example": "RESOLVED"
          },
          "action": {
            "type": "string",
            "maxLength": 500,
            "description": "Action taken (e.g. warned, suspended)",
            "example": "User warned"
          }
        },
        "required": [
          "decision"
        ]
      },
      "ModerationRuleDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "KEYWORD"
          },
          "pattern": {
            "type": "string",
            "example": "badword"
          },
          "action": {
            "type": "string",
            "example": "FLAG"
          },
          "severity": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "active": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "type",
          "pattern",
          "action",
          "severity",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_ModerationRuleDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModerationRuleDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateModerationRuleDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "KEYWORD",
              "REGEX",
              "PATTERN"
            ],
            "description": "Rule type",
            "example": "KEYWORD"
          },
          "pattern": {
            "type": "string",
            "maxLength": 5000,
            "description": "Pattern to match against content",
            "example": "spam-word"
          },
          "action": {
            "type": "string",
            "enum": [
              "FLAG",
              "QUARANTINE",
              "BLOCK"
            ],
            "description": "Action to take on match",
            "example": "QUARANTINE"
          },
          "severity": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ],
            "description": "Rule severity level",
            "example": "HIGH"
          }
        },
        "required": [
          "type",
          "pattern"
        ]
      },
      "ApiResponse_ModerationRuleDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ModerationRuleDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateModerationRuleDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "KEYWORD",
              "REGEX",
              "PATTERN"
            ],
            "description": "Rule type",
            "example": "KEYWORD"
          },
          "pattern": {
            "type": "string",
            "maxLength": 5000,
            "description": "Pattern to match against content",
            "example": "spam-word"
          },
          "action": {
            "type": "string",
            "enum": [
              "FLAG",
              "QUARANTINE",
              "BLOCK"
            ],
            "description": "Action to take on match",
            "example": "QUARANTINE"
          },
          "severity": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ],
            "description": "Rule severity level",
            "example": "HIGH"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the rule is active",
            "example": true
          }
        }
      },
      "CheckContentDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "content"
        ]
      },
      "ModerationCheckResultDto": {
        "type": "object",
        "properties": {
          "flagged": {
            "type": "boolean",
            "example": true
          },
          "rule": {
            "type": "string",
            "format": "uuid",
            "description": "Matched rule ID (if flagged)"
          },
          "action": {
            "type": "string",
            "example": "FLAG",
            "description": "Rule action (if flagged)"
          }
        },
        "required": [
          "flagged"
        ]
      },
      "ApiResponse_ModerationCheckResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ModerationCheckResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GdprRequestUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "GdprRequestListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "user": {
            "$ref": "#/components/schemas/GdprRequestUserEmbedDto"
          },
          "type": {
            "type": "string",
            "enum": [
              "EXPORT",
              "DELETION",
              "ACCESS",
              "RECTIFICATION",
              "PORTABILITY"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "REJECTED"
            ]
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "processedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "processedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "user",
          "type",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "PaginatedData_GdprRequestListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GdprRequestListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_GdprRequestListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_GdprRequestListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ArrayApiResponse_GdprRequestListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GdprRequestListItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_GdprRequestListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprRequestListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GdprExportUserDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "emailVerified": {
            "type": "boolean"
          },
          "twoFactorEnabled": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "emailVerified",
          "twoFactorEnabled",
          "createdAt"
        ]
      },
      "GdprExportResponseDto": {
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/GdprExportUserDto"
          },
          "messages": {
            "description": "User messages (sent and received)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "walletTransactions": {
            "description": "Wallet transactions",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sessions": {
            "description": "Login sessions",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "devices": {
            "description": "Registered devices",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notifications": {
            "description": "Notifications",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "consents": {
            "description": "Consent records",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exportedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO timestamp of export generation"
          }
        },
        "required": [
          "user",
          "messages",
          "walletTransactions",
          "sessions",
          "devices",
          "notifications",
          "consents",
          "exportedAt"
        ]
      },
      "ApiResponse_GdprExportResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprExportResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GDPRDeleteRequestDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "maxLength": 500,
            "description": "Reason for deletion request",
            "example": "User requested account deletion via support ticket"
          }
        },
        "required": [
          "reason"
        ]
      },
      "GdprDeleteResultDto": {
        "type": "object",
        "properties": {
          "scheduledAt": {
            "type": "string",
            "format": "date-time",
            "description": "Scheduled deletion date"
          }
        },
        "required": [
          "scheduledAt"
        ]
      },
      "ApiResponse_GdprDeleteResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprDeleteResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "BanDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "IP",
              "DEVICE",
              "EMAIL",
              "USER"
            ]
          },
          "value": {
            "type": "string",
            "example": "192.168.1.1"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "permanent": {
            "type": "boolean"
          },
          "bannedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "type",
          "value",
          "permanent",
          "createdAt"
        ]
      },
      "ArrayApiResponse_BanDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BanDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_BanDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BanDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateBanDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "IP",
              "DEVICE",
              "EMAIL",
              "USER"
            ],
            "description": "Ban type",
            "example": "IP"
          },
          "value": {
            "type": "string",
            "maxLength": 255,
            "description": "Value to ban (IP address, device fingerprint, email, or user ID)",
            "example": "192.168.1.100"
          },
          "reason": {
            "type": "string",
            "maxLength": 500,
            "description": "Reason for the ban",
            "example": "Repeated spam attempts"
          },
          "expiresAt": {
            "type": "string",
            "description": "Ban expiration date (ISO 8601). Omit for permanent ban",
            "example": "2026-12-31T23:59:59Z"
          },
          "permanent": {
            "type": "boolean",
            "description": "Whether ban is permanent (overrides expiresAt)",
            "example": false,
            "default": false
          }
        },
        "required": [
          "type",
          "value"
        ]
      },
      "DMCADetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "claimantName": {
            "type": "string",
            "example": "John Doe"
          },
          "claimantEmail": {
            "type": "string",
            "example": "john@example.com"
          },
          "claimantAddress": {
            "type": "string",
            "example": "123 Main St, Anytown, CA 94000, USA",
            "description": "Postal address per §512(c)(3)(A)(iv)"
          },
          "claimantPhone": {
            "type": "string",
            "nullable": true,
            "example": "+1-555-123-4567",
            "description": "Optional phone per §512(c)(3)(A)(iv)"
          },
          "rightsHolderRelationship": {
            "type": "string",
            "example": "self",
            "description": "Relationship to rights holder (\"self\" or agent description)"
          },
          "infringingUrl": {
            "type": "string",
            "example": "https://bio.re/infringing-page"
          },
          "originalWorkUrl": {
            "type": "string",
            "nullable": true
          },
          "statement": {
            "type": "string"
          },
          "goodFaithStatement": {
            "type": "boolean",
            "description": "Good-faith statement attestation (§512(c)(3)(A)(v))"
          },
          "accuracyStatement": {
            "type": "boolean",
            "description": "Accuracy statement attestation (§512(c)(3)(A)(vi))"
          },
          "authorityStatement": {
            "type": "boolean",
            "description": "Authority attestation under penalty of perjury (§512(c)(3)(A)(vi))"
          },
          "electronicSignature": {
            "type": "string",
            "example": "John Doe",
            "description": "Electronic signature — typed name per §512(c)(3)(A)(i)"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "REJECTED",
              "COUNTER_NOTICE"
            ]
          },
          "reviewedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "reviewedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "counterNotice": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "claimantName",
          "claimantEmail",
          "claimantAddress",
          "rightsHolderRelationship",
          "infringingUrl",
          "statement",
          "goodFaithStatement",
          "accuracyStatement",
          "authorityStatement",
          "electronicSignature",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_DMCADetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DMCADetailDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_DMCADetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/DMCADetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReviewDMCADto": {
        "type": "object",
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "APPROVED",
              "REJECTED"
            ],
            "description": "Review decision",
            "example": "APPROVED"
          }
        },
        "required": [
          "decision"
        ]
      },
      "AppealUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "AppealListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "user": {
            "$ref": "#/components/schemas/AppealUserEmbedDto"
          },
          "banId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "ban"
          },
          "reason": {
            "type": "string",
            "example": "I believe my ban was issued in error."
          },
          "evidence": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "UNDER_REVIEW",
              "APPROVED",
              "REJECTED"
            ]
          },
          "decision": {
            "type": "string",
            "nullable": true
          },
          "decidedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "decidedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "user",
          "type",
          "reason",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "PaginatedData_AppealListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppealListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_AppealListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_AppealListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AppealDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "user": {
            "$ref": "#/components/schemas/AppealUserEmbedDto"
          },
          "banId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "ban"
          },
          "reason": {
            "type": "string",
            "example": "I believe my ban was issued in error."
          },
          "evidence": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "UNDER_REVIEW",
              "APPROVED",
              "REJECTED"
            ]
          },
          "decision": {
            "type": "string",
            "nullable": true
          },
          "decidedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "decidedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "user",
          "type",
          "reason",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ApiResponse_AppealDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AppealDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReviewAppealDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "APPROVED",
              "REJECTED"
            ],
            "description": "Review decision",
            "example": "APPROVED"
          },
          "decision": {
            "type": "string",
            "maxLength": 2000,
            "description": "Decision text explaining the outcome",
            "example": "Ban was issued in error, user restored."
          }
        },
        "required": [
          "status",
          "decision"
        ]
      },
      "SubmitDMCADto": {
        "type": "object",
        "properties": {
          "claimantName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Legal name of the claimant (rights holder or authorized agent)",
            "example": "John Doe"
          },
          "claimantEmail": {
            "type": "string",
            "maxLength": 320,
            "format": "email",
            "description": "Contact email of the claimant",
            "example": "john@example.com"
          },
          "claimantAddress": {
            "type": "string",
            "minLength": 5,
            "maxLength": 500,
            "description": "Postal address of the claimant (required per §512(c)(3)(A)(iv))",
            "example": "123 Main St, Anytown, CA 94000, USA"
          },
          "claimantPhone": {
            "type": "string",
            "maxLength": 50,
            "description": "Phone number of the claimant (optional per §512(c)(3)(A)(iv))",
            "example": "+1-555-123-4567"
          },
          "rightsHolderRelationship": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Relationship to rights holder: \"self\" or description if acting as authorized agent",
            "example": "self"
          },
          "infringingUrl": {
            "type": "string",
            "maxLength": 2048,
            "format": "uri",
            "description": "URL of the infringing content on the platform",
            "example": "https://bio.re/creator123/post/456"
          },
          "originalWorkUrl": {
            "type": "string",
            "maxLength": 2048,
            "format": "uri",
            "description": "URL of the original copyrighted work",
            "example": "https://example.com/original-work"
          },
          "statement": {
            "type": "string",
            "minLength": 10,
            "maxLength": 5000,
            "description": "Description of the copyrighted work claimed to be infringed",
            "example": "Original photograph taken in 2024, registered at example.com/original-work"
          },
          "goodFaithStatement": {
            "type": "boolean",
            "description": "Sworn: good-faith belief that use is not authorized (§512(c)(3)(A)(v)). Must be true.",
            "example": true
          },
          "accuracyStatement": {
            "type": "boolean",
            "description": "Sworn: information is accurate (§512(c)(3)(A)(vi)). Must be true.",
            "example": true
          },
          "authorityStatement": {
            "type": "boolean",
            "description": "Sworn under penalty of perjury: authorized to act on behalf of the rights holder (§512(c)(3)(A)(vi)). Must be true.",
            "example": true
          },
          "electronicSignature": {
            "type": "string",
            "minLength": 2,
            "maxLength": 255,
            "description": "Typed full name as electronic signature (§512(c)(3)(A)(i))",
            "example": "John Doe"
          }
        },
        "required": [
          "claimantName",
          "claimantEmail",
          "claimantAddress",
          "rightsHolderRelationship",
          "infringingUrl",
          "statement",
          "goodFaithStatement",
          "accuracyStatement",
          "authorityStatement",
          "electronicSignature"
        ]
      },
      "SubmitCounterNoticeDto": {
        "type": "object",
        "properties": {
          "originalDmcaCaseId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the original DMCA case being challenged"
          },
          "claimantName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Legal name of the counter-claimant (subscriber whose content was removed)",
            "example": "Jane Doe"
          },
          "claimantEmail": {
            "type": "string",
            "maxLength": 320,
            "format": "email",
            "description": "Contact email of the counter-claimant",
            "example": "jane@example.com"
          },
          "claimantAddress": {
            "type": "string",
            "minLength": 5,
            "maxLength": 500,
            "description": "Postal address of the counter-claimant (required per §512(g)(3)(D))",
            "example": "456 Oak St, Anytown, CA 94001, USA"
          },
          "claimantPhone": {
            "type": "string",
            "maxLength": 50,
            "description": "Phone number of the counter-claimant (optional)",
            "example": "+1-555-987-6543"
          },
          "goodFaithStatement": {
            "type": "boolean",
            "description": "Sworn under penalty of perjury: good-faith belief that the material was removed/disabled as a result of mistake or misidentification (§512(g)(3)(C)). Must be true.",
            "example": true
          },
          "jurisdictionConsent": {
            "type": "boolean",
            "description": "Sworn: consent to jurisdiction of the federal district court for the address provided (§512(g)(3)(D)). Must be true.",
            "example": true
          },
          "electronicSignature": {
            "type": "string",
            "minLength": 2,
            "maxLength": 255,
            "description": "Typed full name as electronic signature (§512(g)(3)(A))",
            "example": "Jane Doe"
          }
        },
        "required": [
          "originalDmcaCaseId",
          "claimantName",
          "claimantEmail",
          "claimantAddress",
          "goodFaithStatement",
          "jurisdictionConsent",
          "electronicSignature"
        ]
      },
      "SubmitReportDto": {
        "type": "object",
        "properties": {
          "targetUserId": {
            "type": "string",
            "format": "uuid",
            "description": "UUID of the user being reported",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "reason": {
            "type": "string",
            "description": "Report reason",
            "enum": [
              "SPAM",
              "HARASSMENT",
              "HATE_SPEECH",
              "NUDITY",
              "VIOLENCE",
              "SCAM",
              "IMPERSONATION",
              "UNDERAGE",
              "COPYRIGHT",
              "OTHER"
            ],
            "example": "SPAM"
          },
          "category": {
            "type": "string",
            "maxLength": 255,
            "description": "Additional category context",
            "example": "inappropriate_profile_photo"
          },
          "description": {
            "type": "string",
            "maxLength": 2000,
            "description": "Detailed description of the issue",
            "example": "This user is sending unsolicited spam messages."
          },
          "contentId": {
            "type": "string",
            "maxLength": 255,
            "description": "ID of specific content being reported (message, bio page, etc.)",
            "example": "550e8400-e29b-41d4-a716-446655440001"
          },
          "contentType": {
            "type": "string",
            "enum": [
              "message",
              "bio_page",
              "profile"
            ],
            "description": "Type of content being reported",
            "example": "message"
          }
        },
        "required": [
          "targetUserId",
          "reason"
        ]
      },
      "SubmitReportResultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "REVIEWING",
              "RESOLVED",
              "DISMISSED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "status",
          "createdAt"
        ]
      },
      "ApiResponse_SubmitReportResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SubmitReportResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PresignedUploadDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Upload type — determines allowed MIME types and max file size",
            "enum": [
              "avatar",
              "media",
              "document"
            ],
            "example": "avatar"
          },
          "contentType": {
            "type": "string",
            "description": "MIME type of the file to upload. Allowed types per upload type:\n• avatar: image/jpeg, image/png, image/webp (max 5 MB)\n• media: image/jpeg, image/png, image/webp, image/gif, video/mp4 (max 50 MB)\n• document: application/pdf, image/jpeg, image/png (max 10 MB)\nSize limits are configurable via admin panel (upload.max_{type}_size_mb).",
            "example": "image/png"
          },
          "fileName": {
            "type": "string",
            "description": "Original file name (for reference only, not used in storage path)",
            "example": "profile-photo.png"
          }
        },
        "required": [
          "type",
          "contentType"
        ]
      },
      "PresignedUrlResponseDto": {
        "type": "object",
        "properties": {
          "uploadUrl": {
            "type": "string",
            "example": "https://biore-uploads.r2.dev/avatars/user-uuid/file-uuid.webp?X-Amz-Signature=...",
            "description": "Pre-signed PUT URL — upload file directly to this URL with the correct Content-Type header"
          },
          "publicUrl": {
            "type": "string",
            "example": "https://cdn.bio.re/avatars/user-uuid/file-uuid.webp",
            "description": "Public URL where the file will be accessible after upload"
          },
          "key": {
            "type": "string",
            "example": "avatars/user-uuid/file-uuid.webp",
            "description": "Storage object key — store this to reference the file later"
          },
          "expiresIn": {
            "type": "number",
            "example": 300,
            "description": "Seconds until the presigned URL expires"
          }
        },
        "required": [
          "uploadUrl",
          "publicUrl",
          "key",
          "expiresIn"
        ]
      },
      "ApiResponse_PresignedUrlResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PresignedUrlResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CronLastRunDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "RUNNING",
              "SUCCESS",
              "FAILED",
              "SKIPPED",
              "TIMEOUT"
            ]
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationMs": {
            "type": "number",
            "nullable": true,
            "example": 1234
          }
        },
        "required": [
          "status",
          "startedAt"
        ]
      },
      "CronJobListItemDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "analytics-aggregation"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "schedule": {
            "type": "string",
            "example": "0 1 * * *"
          },
          "queue": {
            "type": "string",
            "example": "G3-background"
          },
          "active": {
            "type": "boolean"
          },
          "lockTtlSeconds": {
            "type": "number",
            "example": 900
          },
          "timeoutSeconds": {
            "type": "number",
            "example": 1800
          },
          "lastRunAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "lastStatus": {
            "type": "string",
            "nullable": true,
            "enum": [
              "RUNNING",
              "SUCCESS",
              "FAILED",
              "SKIPPED",
              "TIMEOUT"
            ]
          },
          "nextRunAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "lastRun": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/CronLastRunDto"
              }
            ]
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "schedule",
          "queue",
          "active",
          "lockTtlSeconds",
          "timeoutSeconds",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_CronJobListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CronJobListItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CronJobStatItemDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "analytics-aggregation"
          },
          "active": {
            "type": "boolean"
          },
          "schedule": {
            "type": "string",
            "example": "0 1 * * *"
          },
          "lastStatus": {
            "type": "string",
            "nullable": true,
            "enum": [
              "RUNNING",
              "SUCCESS",
              "FAILED",
              "SKIPPED",
              "TIMEOUT"
            ]
          },
          "lastRunAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "totalRuns": {
            "type": "number",
            "example": 42
          },
          "successCount": {
            "type": "number",
            "example": 38
          },
          "failureCount": {
            "type": "number",
            "example": 3
          },
          "timeoutCount": {
            "type": "number",
            "example": 1
          },
          "skippedCount": {
            "type": "number",
            "example": 0
          },
          "runsLast24h": {
            "type": "number",
            "example": 5
          },
          "avgDurationMs": {
            "type": "number",
            "example": 1234
          },
          "successRate": {
            "type": "number",
            "example": 90.48
          }
        },
        "required": [
          "name",
          "active",
          "schedule",
          "totalRuns",
          "successCount",
          "failureCount",
          "timeoutCount",
          "skippedCount",
          "runsLast24h",
          "avgDurationMs",
          "successRate"
        ]
      },
      "CronStatsDto": {
        "type": "object",
        "properties": {
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CronJobStatItemDto"
            }
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "jobs",
          "generatedAt"
        ]
      },
      "ApiResponse_CronStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CronStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CronRunLogDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "jobName": {
            "type": "string",
            "example": "analytics-aggregation"
          },
          "status": {
            "type": "string",
            "enum": [
              "RUNNING",
              "SUCCESS",
              "FAILED",
              "SKIPPED",
              "TIMEOUT"
            ]
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "finishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "durationMs": {
            "type": "number",
            "nullable": true,
            "example": 1234
          },
          "result": {
            "type": "object",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "triggeredBy": {
            "type": "string",
            "example": "SCHEDULER"
          },
          "instanceId": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "jobName",
          "status",
          "startedAt",
          "triggeredBy"
        ]
      },
      "CronJobDetailDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "analytics-aggregation"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "schedule": {
            "type": "string",
            "example": "0 1 * * *"
          },
          "queue": {
            "type": "string",
            "example": "G3-background"
          },
          "active": {
            "type": "boolean"
          },
          "lockTtlSeconds": {
            "type": "number",
            "example": 900
          },
          "timeoutSeconds": {
            "type": "number",
            "example": 1800
          },
          "lastRunAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "lastStatus": {
            "type": "string",
            "nullable": true,
            "enum": [
              "RUNNING",
              "SUCCESS",
              "FAILED",
              "SKIPPED",
              "TIMEOUT"
            ]
          },
          "nextRunAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "recentRuns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CronRunLogDto"
            }
          }
        },
        "required": [
          "name",
          "schedule",
          "queue",
          "active",
          "lockTtlSeconds",
          "timeoutSeconds",
          "createdAt",
          "updatedAt",
          "recentRuns"
        ]
      },
      "ApiResponse_CronJobDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CronJobDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateCronJobDto": {
        "type": "object",
        "properties": {
          "schedule": {
            "type": "string",
            "pattern": "^(\\S+\\s+){4}\\S+$",
            "example": "0 0 * * *",
            "description": "Cron expression (5-field)"
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "lockTtlSeconds": {
            "type": "number",
            "minimum": 10,
            "maximum": 7200,
            "example": 300,
            "description": "Distributed lock TTL in seconds"
          },
          "timeoutSeconds": {
            "type": "number",
            "minimum": 10,
            "maximum": 14400,
            "example": 600,
            "description": "Max execution time before timeout"
          },
          "description": {
            "type": "string",
            "example": "Purge expired records daily at 3 AM"
          }
        }
      },
      "CronToggleResultDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "analytics-aggregation"
          },
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "active"
        ]
      },
      "ApiResponse_CronToggleResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CronToggleResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CronClearStaleResultDto": {
        "type": "object",
        "properties": {
          "cleared": {
            "type": "number",
            "example": 2
          },
          "unlocked": {
            "type": "boolean"
          }
        },
        "required": [
          "cleared",
          "unlocked"
        ]
      },
      "ApiResponse_CronClearStaleResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CronClearStaleResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CronForceUnlockResultDto": {
        "type": "object",
        "properties": {
          "unlocked": {
            "type": "boolean"
          }
        },
        "required": [
          "unlocked"
        ]
      },
      "ApiResponse_CronForceUnlockResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CronForceUnlockResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PaginatedData_CronRunLogDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CronRunLogDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_CronRunLogDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_CronRunLogDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RequestPayoutDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,2})?$",
            "description": "Payout amount in dollars as string",
            "example": "50.00"
          },
          "method": {
            "type": "string",
            "description": "Payout method",
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ],
            "example": "STRIPE_CONNECT"
          }
        },
        "required": [
          "amount",
          "method"
        ]
      },
      "RequestPayoutResponseDto": {
        "type": "object",
        "properties": {
          "payoutId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "payoutId"
        ]
      },
      "ApiResponse_RequestPayoutResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RequestPayoutResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PayoutReportItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string",
            "example": "50.00",
            "description": "Decimal as string"
          },
          "method": {
            "type": "string",
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "PROCESSING",
              "PROCESSED",
              "FAILED",
              "CANCELLED",
              "REJECTED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "processedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "stripePayoutId": {
            "type": "string",
            "nullable": true
          },
          "commissionRate": {
            "type": "number",
            "nullable": true
          },
          "commissionAmount": {
            "type": "string",
            "nullable": true,
            "example": "10.00",
            "description": "Decimal as string"
          },
          "netAmount": {
            "type": "string",
            "nullable": true,
            "example": "40.00",
            "description": "Decimal as string"
          }
        },
        "required": [
          "id",
          "creatorId",
          "amount",
          "method",
          "status",
          "createdAt"
        ]
      },
      "PayoutReportResponseDto": {
        "type": "object",
        "properties": {
          "payouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayoutReportItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 42
          },
          "count": {
            "type": "number",
            "example": 10
          }
        },
        "required": [
          "payouts",
          "total",
          "count"
        ]
      },
      "ApiResponse_PayoutReportResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PayoutReportResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PayoutListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string",
            "example": "50.00",
            "description": "Decimal as string"
          },
          "method": {
            "type": "string",
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "PROCESSING",
              "PROCESSED",
              "REJECTED",
              "FAILED",
              "CANCELLED"
            ]
          },
          "approvedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "approvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "secondApprover": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "secondApprovedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "processedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "failedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "failureReason": {
            "type": "string",
            "nullable": true
          },
          "failureCategory": {
            "type": "string",
            "nullable": true
          },
          "retryCount": {
            "type": "number",
            "example": 0
          },
          "stripePayoutId": {
            "type": "string",
            "nullable": true
          },
          "bankTransferReference": {
            "type": "string",
            "nullable": true
          },
          "bankTransferSentAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "commissionRate": {
            "type": "number",
            "nullable": true
          },
          "commissionAmount": {
            "type": "string",
            "nullable": true,
            "example": "10.00",
            "description": "Decimal as string"
          },
          "netAmount": {
            "type": "string",
            "nullable": true,
            "example": "40.00",
            "description": "Decimal as string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "creatorId",
          "amount",
          "method",
          "status",
          "retryCount",
          "createdAt",
          "updatedAt"
        ]
      },
      "PaginatedData_PayoutListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayoutListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_PayoutListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_PayoutListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PayoutCreatorUserEmbedDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          }
        },
        "required": [
          "displayName"
        ]
      },
      "PayoutCreatorEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "stripeAccountId": {
            "type": "string",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/PayoutCreatorUserEmbedDto"
          },
          "iban": {
            "type": "string",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "nullable": true
          },
          "bankAccountVerified": {
            "type": "boolean",
            "default": false
          }
        },
        "required": [
          "id",
          "userId",
          "user",
          "bankAccountVerified"
        ]
      },
      "PayoutDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string",
            "example": "50.00",
            "description": "Decimal as string"
          },
          "method": {
            "type": "string",
            "enum": [
              "STRIPE_CONNECT",
              "BANK_TRANSFER"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "APPROVED",
              "PROCESSING",
              "PROCESSED",
              "REJECTED",
              "FAILED",
              "CANCELLED"
            ]
          },
          "approvedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "approvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "secondApprover": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "secondApprovedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "processedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "failedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "failureReason": {
            "type": "string",
            "nullable": true
          },
          "failureCategory": {
            "type": "string",
            "nullable": true
          },
          "retryCount": {
            "type": "number",
            "example": 0
          },
          "stripePayoutId": {
            "type": "string",
            "nullable": true
          },
          "bankTransferReference": {
            "type": "string",
            "nullable": true
          },
          "bankTransferSentAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "commissionRate": {
            "type": "number",
            "nullable": true
          },
          "commissionAmount": {
            "type": "string",
            "nullable": true,
            "example": "10.00",
            "description": "Decimal as string"
          },
          "netAmount": {
            "type": "string",
            "nullable": true,
            "example": "40.00",
            "description": "Decimal as string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "creator": {
            "$ref": "#/components/schemas/PayoutCreatorEmbedDto"
          }
        },
        "required": [
          "id",
          "creatorId",
          "amount",
          "method",
          "status",
          "retryCount",
          "createdAt",
          "updatedAt",
          "creator"
        ]
      },
      "ApiResponse_PayoutDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PayoutDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RejectPayoutDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Rejection reason",
            "example": "KYC verification incomplete"
          }
        },
        "required": [
          "reason"
        ]
      },
      "BatchApprovePayoutDto": {
        "type": "object",
        "properties": {
          "payoutIds": {
            "uniqueItems": true,
            "minItems": 1,
            "description": "Array of payout IDs to approve",
            "example": [
              "uuid-1",
              "uuid-2"
            ],
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "payoutIds"
        ]
      },
      "BatchApproveResultDto": {
        "type": "object",
        "properties": {
          "payoutId": {
            "type": "string",
            "format": "uuid"
          },
          "success": {
            "type": "boolean",
            "example": true
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "payoutId",
          "success"
        ]
      },
      "BatchApproveResponseDto": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchApproveResultDto"
            }
          },
          "approved": {
            "type": "number",
            "example": 8
          },
          "failed": {
            "type": "number",
            "example": 2
          }
        },
        "required": [
          "results",
          "approved",
          "failed"
        ]
      },
      "ApiResponse_BatchApproveResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BatchApproveResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "OverridePayoutDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,2})?$",
            "description": "New payout amount as string",
            "example": "45.00"
          },
          "reason": {
            "type": "string",
            "description": "Reason for override",
            "example": "Adjusted for tax withholding"
          }
        },
        "required": [
          "amount",
          "reason"
        ]
      },
      "MarkBankTransferSentDto": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "Bank transfer reference/tracking number",
            "example": "TRF-2026-04-001"
          }
        },
        "required": [
          "reference"
        ]
      },
      "RetryFailedPayoutsResponseDto": {
        "type": "object",
        "properties": {
          "retried": {
            "type": "number",
            "example": 5
          },
          "succeeded": {
            "type": "number",
            "example": 3
          }
        },
        "required": [
          "retried",
          "succeeded"
        ]
      },
      "ApiResponse_RetryFailedPayoutsResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RetryFailedPayoutsResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SendMessageDto": {
        "type": "object",
        "properties": {
          "receiverId": {
            "type": "string",
            "description": "Receiver (creator) user ID",
            "example": "cuid_creator_123"
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Message content",
            "example": "Hey, loved your latest post!"
          },
          "dmType": {
            "type": "string",
            "description": "DM pricing type",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ],
            "example": "FREE"
          },
          "price": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d{1,2})?$",
            "description": "Message price in dollars as string (required for paid types)",
            "example": "5.00"
          },
          "timeoutHours": {
            "type": "number",
            "minimum": 1,
            "maximum": 720,
            "description": "Hours before message expires if unanswered",
            "example": 48
          }
        },
        "required": [
          "receiverId",
          "content",
          "dmType"
        ]
      },
      "SendMessageResponseDto": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          }
        },
        "required": [
          "messageId",
          "status"
        ]
      },
      "ApiResponse_SendMessageResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SendMessageResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "MessageInboxItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string",
            "example": "Hey, love your content!"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "priceSnapshot": {
            "type": "string",
            "nullable": true,
            "example": "25.00",
            "description": "Decimal as string"
          },
          "senderId": {
            "type": "string",
            "format": "uuid"
          },
          "receiverId": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "content",
          "status",
          "dmType",
          "senderId",
          "receiverId",
          "createdAt"
        ]
      },
      "PaginatedData_MessageInboxItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageInboxItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_MessageInboxItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_MessageInboxItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "MessageSearchItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string",
            "example": "Hey, love your content!"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "senderId": {
            "type": "string",
            "format": "uuid"
          },
          "receiverId": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "content",
          "status",
          "dmType",
          "senderId",
          "receiverId",
          "createdAt"
        ]
      },
      "PaginatedData_MessageSearchItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageSearchItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_MessageSearchItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_MessageSearchItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ConversationOtherPartyDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          }
        },
        "required": [
          "id"
        ]
      },
      "ConversationLastMessageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string",
            "example": "Hey, love your content!"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "senderId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id",
          "content",
          "dmType",
          "status",
          "createdAt",
          "senderId"
        ]
      },
      "ConversationItemDto": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "otherParty": {
            "$ref": "#/components/schemas/ConversationOtherPartyDto"
          },
          "lastMessage": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConversationLastMessageDto"
              }
            ]
          },
          "unreadCount": {
            "type": "number",
            "example": 3
          },
          "lastMessageAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "isBlocked": {
            "type": "boolean",
            "example": false
          },
          "isBlockedBy": {
            "type": "boolean",
            "example": false
          }
        },
        "required": [
          "sessionId",
          "otherParty",
          "unreadCount",
          "isBlocked",
          "isBlockedBy"
        ]
      },
      "ConversationListResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConversationItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "items",
          "total"
        ]
      },
      "ApiResponse_ConversationListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ConversationListResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UnreadCountResponseDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 5
          }
        },
        "required": [
          "total"
        ]
      },
      "ApiResponse_UnreadCountResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UnreadCountResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "MessageDetailClientDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string",
            "example": "Hey, love your content!"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "priceSnapshot": {
            "type": "string",
            "nullable": true,
            "example": "25.00",
            "description": "Decimal as string"
          },
          "senderId": {
            "type": "string",
            "format": "uuid"
          },
          "receiverId": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "repliedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "completedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "timeoutHours": {
            "type": "number",
            "nullable": true
          }
        },
        "required": [
          "id",
          "content",
          "status",
          "dmType",
          "senderId",
          "receiverId",
          "createdAt"
        ]
      },
      "ApiResponse_MessageDetailClientDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/MessageDetailClientDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReplyMessageDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000,
            "description": "Reply content",
            "example": "Thanks for reaching out!"
          }
        },
        "required": [
          "content"
        ]
      },
      "RejectMessageDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Rejection reason (optional)",
            "example": "Not accepting messages at this time"
          }
        }
      },
      "RateMessageDto": {
        "type": "object",
        "properties": {
          "rating": {
            "type": "number",
            "minimum": 1,
            "maximum": 5,
            "description": "Rating score",
            "example": 5
          },
          "comment": {
            "type": "string",
            "description": "Optional rating comment",
            "example": "Great response!"
          }
        },
        "required": [
          "rating"
        ]
      },
      "MessageListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "senderId": {
            "type": "string",
            "format": "uuid"
          },
          "receiverId": {
            "type": "string",
            "format": "uuid"
          },
          "content": {
            "type": "string",
            "example": "Hey, love your content!"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "priceSnapshot": {
            "type": "string",
            "nullable": true,
            "description": "Decimal as string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "senderName": {
            "type": "string",
            "nullable": true
          },
          "receiverName": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "senderId",
          "receiverId",
          "content",
          "status",
          "dmType",
          "createdAt"
        ]
      },
      "PaginatedData_MessageListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_MessageListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_MessageListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "MessageStatsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 500
          },
          "pending": {
            "type": "number",
            "example": 20
          },
          "escrowed": {
            "type": "number",
            "example": 50
          },
          "completed": {
            "type": "number",
            "example": 300
          },
          "quarantined": {
            "type": "number",
            "example": 10
          },
          "refunded": {
            "type": "number",
            "example": 15
          }
        },
        "required": [
          "total",
          "pending",
          "escrowed",
          "completed",
          "quarantined",
          "refunded"
        ]
      },
      "ApiResponse_MessageStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/MessageStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "EscrowEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "string",
            "description": "Decimal as string",
            "example": "25.00"
          },
          "commissionAmount": {
            "type": "string",
            "description": "Decimal as string",
            "example": "5.00"
          },
          "creatorAmount": {
            "type": "string",
            "description": "Decimal as string",
            "example": "20.00"
          },
          "status": {
            "type": "string",
            "enum": [
              "HELD",
              "RELEASED",
              "REFUNDED",
              "DISPUTED",
              "EXPIRED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "releasedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "refundedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "amount",
          "commissionAmount",
          "creatorAmount",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "RuleSnapshotEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "dmType": {
            "type": "object",
            "example": "FREE"
          },
          "price": {
            "type": "string",
            "nullable": true,
            "description": "Decimal as string"
          },
          "commissionRate": {
            "type": "string",
            "description": "Decimal as string",
            "example": "0.20"
          },
          "timeoutHours": {
            "type": "number",
            "example": 72
          },
          "creatorLevel": {
            "type": "string",
            "example": "BRONZE"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "dmType",
          "commissionRate",
          "timeoutHours",
          "creatorLevel",
          "createdAt"
        ]
      },
      "RatingEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "rating": {
            "type": "number",
            "example": 5,
            "minimum": 1,
            "maximum": 5
          },
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "rating",
          "creatorId",
          "userId",
          "createdAt"
        ]
      },
      "MessageUserEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "example": "E2E Support"
          },
          "email": {
            "type": "string",
            "example": "support@bio.re"
          }
        },
        "required": [
          "id",
          "displayName",
          "email"
        ]
      },
      "MessageDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "senderId": {
            "type": "string",
            "format": "uuid"
          },
          "receiverId": {
            "type": "string",
            "format": "uuid"
          },
          "chatSessionId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "content": {
            "type": "string",
            "example": "Hey, love your content!"
          },
          "dmType": {
            "type": "string",
            "enum": [
              "FREE",
              "SINGLE_PAY",
              "PER_MESSAGE"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ESCROWED",
              "DELIVERED",
              "READ",
              "REPLIED",
              "COMPLETED",
              "EXPIRED",
              "REFUNDED",
              "REJECTED",
              "QUARANTINED"
            ]
          },
          "priceSnapshot": {
            "type": "string",
            "nullable": true,
            "description": "Decimal as string"
          },
          "commissionRate": {
            "type": "string",
            "nullable": true,
            "description": "Decimal as string"
          },
          "timeoutHours": {
            "type": "number",
            "nullable": true
          },
          "expiresAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "repliedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "completedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "searchContent": {
            "type": "string",
            "nullable": true
          },
          "escrow": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/EscrowEmbedDto"
              }
            ]
          },
          "ruleSnapshot": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/RuleSnapshotEmbedDto"
              }
            ]
          },
          "rating": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/RatingEmbedDto"
              }
            ]
          },
          "sender": {
            "$ref": "#/components/schemas/MessageUserEmbedDto"
          },
          "receiver": {
            "$ref": "#/components/schemas/MessageUserEmbedDto"
          }
        },
        "required": [
          "id",
          "senderId",
          "receiverId",
          "content",
          "dmType",
          "status",
          "createdAt",
          "updatedAt",
          "sender",
          "receiver"
        ]
      },
      "ApiResponse_MessageDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/MessageDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ForceRefundDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "minLength": 3
          }
        },
        "required": [
          "reason"
        ]
      },
      "RejectQuarantineDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "minLength": 3
          }
        },
        "required": [
          "reason"
        ]
      },
      "HealthStatusDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "healthy",
              "degraded"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "checks": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        },
        "required": [
          "status",
          "timestamp",
          "checks"
        ]
      },
      "ReadinessDto": {
        "type": "object",
        "properties": {
          "ready": {
            "type": "boolean"
          },
          "checks": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        },
        "required": [
          "ready",
          "checks"
        ]
      },
      "ABTestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "signup-flow-v2"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "targetMetric": {
            "type": "string",
            "example": "signup_completed"
          },
          "audiencePercent": {
            "type": "number",
            "example": 100
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "RUNNING",
              "STOPPED",
              "ARCHIVED"
            ]
          },
          "winnerId": {
            "type": "string",
            "nullable": true
          },
          "startedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "stoppedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "variants",
          "targetMetric",
          "audiencePercent",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_ABTestDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ABTestDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ABTestVariantDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "weight": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "weight"
        ]
      },
      "CreateABTestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "targetMetric": {
            "type": "string"
          },
          "audiencePercent": {
            "type": "number",
            "minimum": 1,
            "maximum": 100
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ABTestVariantDto"
            }
          }
        },
        "required": [
          "name",
          "targetMetric"
        ]
      },
      "ABTestCreateResultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "ApiResponse_ABTestCreateResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ABTestCreateResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SimpleSuccessDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "success"
        ]
      },
      "ApiResponse_SimpleSuccessDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SimpleSuccessDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ABTestResultTestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "signup-flow-v2"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "RUNNING",
              "STOPPED",
              "ARCHIVED"
            ]
          },
          "targetMetric": {
            "type": "string",
            "example": "signup_completed"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "targetMetric"
        ]
      },
      "ABTestResultVariantDto": {
        "type": "object",
        "properties": {
          "variant": {
            "type": "string",
            "example": "A"
          },
          "users": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "variant",
          "users"
        ]
      },
      "ABTestResultsDto": {
        "type": "object",
        "properties": {
          "test": {
            "$ref": "#/components/schemas/ABTestResultTestDto"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ABTestResultVariantDto"
            }
          }
        },
        "required": [
          "test",
          "variants"
        ]
      },
      "ApiResponse_ABTestResultsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ABTestResultsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "InfraTableDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "User"
          },
          "size": {
            "type": "string",
            "example": "128 MB"
          },
          "bytes": {
            "type": "number",
            "example": 134217728
          }
        },
        "required": [
          "name",
          "size",
          "bytes"
        ]
      },
      "InfraDatabaseDto": {
        "type": "object",
        "properties": {
          "size": {
            "type": "string",
            "example": "2 GB"
          },
          "activeConnections": {
            "type": "number",
            "example": 12
          },
          "topTables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InfraTableDto"
            }
          }
        },
        "required": [
          "size",
          "activeConnections",
          "topTables"
        ]
      },
      "InfraMetricsDto": {
        "type": "object",
        "properties": {
          "database": {
            "$ref": "#/components/schemas/InfraDatabaseDto"
          }
        },
        "required": [
          "database"
        ]
      },
      "ApiResponse_InfraMetricsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/InfraMetricsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_HealthStatusDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/HealthStatusDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "QueueMetricsDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "G1-critical"
          },
          "waiting": {
            "type": "number",
            "example": 0
          },
          "active": {
            "type": "number",
            "example": 2
          },
          "completed": {
            "type": "number",
            "example": 150
          },
          "failed": {
            "type": "number",
            "example": 3
          },
          "delayed": {
            "type": "number",
            "example": 1
          }
        },
        "required": [
          "name",
          "waiting",
          "active",
          "completed",
          "failed",
          "delayed"
        ]
      },
      "QueueStatusDto": {
        "type": "object",
        "properties": {
          "queues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QueueMetricsDto"
            }
          },
          "cronJobs": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "queues",
          "cronJobs"
        ]
      },
      "ApiResponse_QueueStatusDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/QueueStatusDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AlertDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "example": "metric"
          },
          "severity": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "title": {
            "type": "string",
            "example": "DAU dropped 30%"
          },
          "message": {
            "type": "string",
            "example": "Daily active users dropped from 1000 to 700"
          },
          "acknowledged": {
            "type": "boolean"
          },
          "acknowledgedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "acknowledgedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "type",
          "severity",
          "title",
          "message",
          "acknowledged",
          "createdAt"
        ]
      },
      "ArrayApiResponse_AlertDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AlertDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AlertStatsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 150
          },
          "unacknowledged": {
            "type": "number",
            "example": 12
          },
          "criticalP1": {
            "type": "number",
            "example": 2
          },
          "highP2": {
            "type": "number",
            "example": 5
          }
        },
        "required": [
          "total",
          "unacknowledged",
          "criticalP1",
          "highP2"
        ]
      },
      "ApiResponse_AlertStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AlertStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateAlertDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          }
        },
        "required": [
          "type",
          "title",
          "message",
          "severity"
        ]
      },
      "AlertCreateResultDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "ApiResponse_AlertCreateResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AlertCreateResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GlobalSearchResultDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "user",
              "creator",
              "message",
              "ticket",
              "wallet"
            ]
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "count": {
            "type": "number",
            "example": 10
          }
        },
        "required": [
          "type",
          "items",
          "count"
        ]
      },
      "ApiResponse_GlobalSearchResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GlobalSearchResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AdminNotificationFeedDto": {
        "type": "object",
        "properties": {
          "pendingKyc": {
            "type": "number",
            "example": 3
          },
          "unresolvedFraud": {
            "type": "number",
            "example": 1
          },
          "unassignedTickets": {
            "type": "number",
            "example": 5
          },
          "slaBreach": {
            "type": "number",
            "example": 2
          },
          "pendingPayouts": {
            "type": "number",
            "example": 4
          },
          "total": {
            "type": "number",
            "example": 15
          }
        },
        "required": [
          "pendingKyc",
          "unresolvedFraud",
          "unassignedTickets",
          "slaBreach",
          "pendingPayouts",
          "total"
        ]
      },
      "ApiResponse_AdminNotificationFeedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AdminNotificationFeedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TrackEventDto": {
        "type": "object",
        "properties": {
          "event": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "deviceType": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "properties": {
            "type": "object"
          }
        },
        "required": [
          "event"
        ]
      },
      "TrackingResultDto": {
        "type": "object",
        "properties": {
          "tracked": {
            "type": "boolean",
            "example": true,
            "description": "Event was tracked"
          }
        },
        "required": [
          "tracked"
        ]
      },
      "ApiResponse_TrackingResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TrackingResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateSessionDto": {
        "type": "object",
        "properties": {
          "visitorId": {
            "type": "string"
          },
          "bioPageId": {
            "type": "string"
          },
          "creatorId": {
            "type": "string"
          },
          "referrer": {
            "type": "string"
          },
          "utmSource": {
            "type": "string"
          },
          "utmMedium": {
            "type": "string"
          },
          "utmCampaign": {
            "type": "string"
          },
          "utmTerm": {
            "type": "string"
          },
          "utmContent": {
            "type": "string"
          },
          "landingPage": {
            "type": "string"
          },
          "device": {
            "type": "string"
          },
          "browser": {
            "type": "string"
          },
          "os": {
            "type": "string"
          },
          "screenWidth": {
            "type": "number",
            "minimum": 0,
            "maximum": 7680
          },
          "screenHeight": {
            "type": "number",
            "minimum": 0,
            "maximum": 7680
          },
          "osVersion": {
            "type": "string",
            "maxLength": 20
          },
          "connectionType": {
            "type": "string",
            "maxLength": 20
          },
          "timezone": {
            "type": "string",
            "maxLength": 50
          },
          "language": {
            "type": "string"
          },
          "trackingToken": {
            "type": "string"
          },
          "consentAnalytics": {
            "type": "string",
            "maxLength": 50
          }
        },
        "required": [
          "visitorId",
          "landingPage"
        ]
      },
      "SessionCreatedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "format": "uuid",
            "description": "Session ID, or null if tracking was rejected (bot, no consent)"
          }
        }
      },
      "ApiResponse_SessionCreatedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionCreatedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RecordPageViewDto": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "bioPageId": {
            "type": "string"
          },
          "linkClicked": {
            "type": "string"
          }
        },
        "required": [
          "sessionId",
          "url",
          "path"
        ]
      },
      "PageViewCreatedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true,
            "format": "uuid",
            "description": "Page view record ID, or null if session not found"
          }
        }
      },
      "ApiResponse_PageViewCreatedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PageViewCreatedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "HeartbeatResultDto": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "ok"
        ]
      },
      "ApiResponse_HeartbeatResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/HeartbeatResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PageLeaveDto": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600
          },
          "scrollDepth": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "duration"
        ]
      },
      "PageLeaveResultDto": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "ok"
        ]
      },
      "ApiResponse_PageLeaveResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PageLeaveResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "IdentifySessionResultDto": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "ok"
        ]
      },
      "ApiResponse_IdentifySessionResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/IdentifySessionResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "KpiDashboardDto": {
        "type": "object",
        "properties": {
          "period": {
            "type": "string",
            "example": "7d"
          },
          "days": {
            "type": "number",
            "example": 7
          },
          "metrics": {
            "type": "object",
            "description": "Keyed by metric name, each value is a time-series array of {date, value}"
          }
        },
        "required": [
          "period",
          "days",
          "metrics"
        ]
      },
      "ApiResponse_KpiDashboardDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/KpiDashboardDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "EventDailyCountDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "count": {
            "type": "number",
            "example": 15
          }
        },
        "required": [
          "date",
          "count"
        ]
      },
      "EventDataDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "example": 150
          },
          "daily": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventDailyCountDto"
            }
          }
        },
        "required": [
          "count",
          "daily"
        ]
      },
      "ApiResponse_EventDataDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/EventDataDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FunnelStepDto": {
        "type": "object",
        "properties": {
          "step": {
            "type": "string",
            "example": "signup.step1"
          },
          "count": {
            "type": "number",
            "example": 320
          }
        },
        "required": [
          "step",
          "count"
        ]
      },
      "FunnelReportDto": {
        "type": "object",
        "properties": {
          "funnel": {
            "type": "string",
            "example": "signup"
          },
          "days": {
            "type": "number",
            "example": 30
          },
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FunnelStepDto"
            }
          }
        },
        "required": [
          "funnel",
          "days",
          "steps"
        ]
      },
      "ApiResponse_FunnelReportDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/FunnelReportDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AggregateResultDto": {
        "type": "object",
        "properties": {
          "metricsWritten": {
            "type": "number",
            "example": 4
          }
        },
        "required": [
          "metricsWritten"
        ]
      },
      "ApiResponse_AggregateResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AggregateResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TrafficSourceItemDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "example": "google"
          },
          "visits": {
            "type": "number",
            "example": 1200
          },
          "percentage": {
            "type": "number",
            "example": 45.23
          }
        },
        "required": [
          "source",
          "visits",
          "percentage"
        ]
      },
      "TrafficSourceDto": {
        "type": "object",
        "properties": {
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficSourceItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 2650
          }
        },
        "required": [
          "sources",
          "total"
        ]
      },
      "ApiResponse_TrafficSourceDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TrafficSourceDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GeoLocationItemDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Turkey"
          },
          "visits": {
            "type": "number",
            "example": 800
          },
          "percentage": {
            "type": "number",
            "example": 32.5
          }
        },
        "required": [
          "name",
          "visits",
          "percentage"
        ]
      },
      "GeoDistributionDto": {
        "type": "object",
        "properties": {
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GeoLocationItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 2460
          }
        },
        "required": [
          "locations",
          "total"
        ]
      },
      "ApiResponse_GeoDistributionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GeoDistributionDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "DeviceSegmentDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Mobile"
          },
          "count": {
            "type": "number",
            "example": 1500
          },
          "percentage": {
            "type": "number",
            "example": 60.24
          }
        },
        "required": [
          "name",
          "count",
          "percentage"
        ]
      },
      "DeviceBreakdownDto": {
        "type": "object",
        "properties": {
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceSegmentDto"
            }
          },
          "total": {
            "type": "number",
            "example": 2490
          }
        },
        "required": [
          "segments",
          "total"
        ]
      },
      "ApiResponse_DeviceBreakdownDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/DeviceBreakdownDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorLeaderboardItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "example": "Jane Creator"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "janecreator"
          },
          "views": {
            "type": "number",
            "example": 5200
          },
          "earnings": {
            "type": "number",
            "example": 1250.5,
            "description": "Earnings (number — aggregated from Decimal)"
          },
          "messages": {
            "type": "number",
            "example": 340
          },
          "conversionRate": {
            "type": "number",
            "example": 6.54
          }
        },
        "required": [
          "id",
          "userId",
          "displayName",
          "views",
          "earnings",
          "messages",
          "conversionRate"
        ]
      },
      "CreatorLeaderboardWrapperDto": {
        "type": "object",
        "properties": {
          "creators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorLeaderboardItemDto"
            }
          }
        },
        "required": [
          "creators"
        ]
      },
      "ApiResponse_CreatorLeaderboardWrapperDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorLeaderboardWrapperDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "OnboardingStepDto": {
        "type": "object",
        "properties": {
          "step": {
            "type": "string",
            "example": "Signup (Creator Profile)"
          },
          "count": {
            "type": "number",
            "example": 120
          },
          "conversionFromPrev": {
            "type": "number",
            "example": 85.5
          }
        },
        "required": [
          "step",
          "count",
          "conversionFromPrev"
        ]
      },
      "OnboardingFunnelDto": {
        "type": "object",
        "properties": {
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OnboardingStepDto"
            }
          }
        },
        "required": [
          "steps"
        ]
      },
      "ApiResponse_OnboardingFunnelDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/OnboardingFunnelDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorDrilldownProfileDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "Jane Creator"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "janecreator"
          },
          "level": {
            "type": "string",
            "example": "GOLD"
          },
          "kycStatus": {
            "type": "string",
            "example": "APPROVED"
          }
        },
        "required": [
          "id",
          "userId",
          "level",
          "kycStatus"
        ]
      },
      "CreatorDrilldownStatsDto": {
        "type": "object",
        "properties": {
          "totalViews": {
            "type": "number",
            "example": 4200
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 1800
          },
          "totalEarnings": {
            "type": "number",
            "example": 2500,
            "description": "Earnings (number — aggregated from Decimal)"
          },
          "totalMessages": {
            "type": "number",
            "example": 340
          },
          "avgResponseTime": {
            "type": "number",
            "example": 12500,
            "description": "Average response time in ms"
          }
        },
        "required": [
          "totalViews",
          "uniqueVisitors",
          "totalEarnings",
          "totalMessages",
          "avgResponseTime"
        ]
      },
      "CreatorTrafficSourceItemDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "example": "instagram"
          },
          "visits": {
            "type": "number",
            "example": 600
          }
        },
        "required": [
          "source",
          "visits"
        ]
      },
      "CreatorTopLinkDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "My Portfolio"
          },
          "url": {
            "type": "string",
            "example": "https://example.com"
          },
          "clicks": {
            "type": "number",
            "example": 120
          }
        },
        "required": [
          "id",
          "title",
          "url",
          "clicks"
        ]
      },
      "CreatorRecentViewDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "visitorId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "referrer": {
            "type": "string",
            "nullable": true,
            "example": "instagram.com"
          },
          "country": {
            "type": "string",
            "nullable": true,
            "example": "TR"
          },
          "device": {
            "type": "string",
            "nullable": true,
            "example": "Mobile"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "createdAt"
        ]
      },
      "CreatorDrilldownDto": {
        "type": "object",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/CreatorDrilldownProfileDto"
          },
          "stats": {
            "$ref": "#/components/schemas/CreatorDrilldownStatsDto"
          },
          "trafficSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorTrafficSourceItemDto"
            }
          },
          "topLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorTopLinkDto"
            }
          },
          "recentViews": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorRecentViewDto"
            }
          }
        },
        "required": [
          "profile",
          "stats",
          "trafficSources",
          "topLinks",
          "recentViews"
        ]
      },
      "ApiResponse_CreatorDrilldownDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorDrilldownDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "MessageStatusDistributionDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "COMPLETED"
          },
          "count": {
            "type": "number",
            "example": 250
          },
          "percentage": {
            "type": "number",
            "example": 45.5
          }
        },
        "required": [
          "status",
          "count",
          "percentage"
        ]
      },
      "MessageDailyVolumeDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "sent": {
            "type": "number",
            "example": 40
          },
          "completed": {
            "type": "number",
            "example": 30
          },
          "expired": {
            "type": "number",
            "example": 3
          }
        },
        "required": [
          "date",
          "sent",
          "completed",
          "expired"
        ]
      },
      "MessageFlowDto": {
        "type": "object",
        "properties": {
          "statusDistribution": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageStatusDistributionDto"
            }
          },
          "avgResponseTimeMinutes": {
            "type": "number",
            "example": 12.5
          },
          "timeoutRate": {
            "type": "number",
            "example": 3.2
          },
          "refundRate": {
            "type": "number",
            "example": 1.8
          },
          "completionRate": {
            "type": "number",
            "example": 72.4
          },
          "dailyVolume": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageDailyVolumeDto"
            }
          }
        },
        "required": [
          "statusDistribution",
          "avgResponseTimeMinutes",
          "timeoutRate",
          "refundRate",
          "completionRate",
          "dailyVolume"
        ]
      },
      "ApiResponse_MessageFlowDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/MessageFlowDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SourceConversionItemDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "example": "google"
          },
          "visits": {
            "type": "number",
            "example": 1200
          },
          "signups": {
            "type": "number",
            "example": 85
          },
          "firstPayment": {
            "type": "number",
            "example": 12
          },
          "conversionRate": {
            "type": "number",
            "example": 7.08
          }
        },
        "required": [
          "source",
          "visits",
          "signups",
          "firstPayment",
          "conversionRate"
        ]
      },
      "SourceConversionDto": {
        "type": "object",
        "properties": {
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SourceConversionItemDto"
            }
          }
        },
        "required": [
          "sources"
        ]
      },
      "ApiResponse_SourceConversionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SourceConversionDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "BioPagePerformanceItemDto": {
        "type": "object",
        "properties": {
          "bioPageId": {
            "type": "string",
            "format": "uuid"
          },
          "creatorName": {
            "type": "string",
            "example": "Jane Creator"
          },
          "views": {
            "type": "number",
            "example": 4200
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 1800
          },
          "linkClicks": {
            "type": "number",
            "example": 320
          },
          "bounceRate": {
            "type": "number",
            "example": 24.5
          }
        },
        "required": [
          "bioPageId",
          "creatorName",
          "views",
          "uniqueVisitors",
          "linkClicks",
          "bounceRate"
        ]
      },
      "BioPagePerformanceDto": {
        "type": "object",
        "properties": {
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BioPagePerformanceItemDto"
            }
          },
          "avgViewsPerPage": {
            "type": "number",
            "example": 350.75
          }
        },
        "required": [
          "pages",
          "avgViewsPerPage"
        ]
      },
      "ApiResponse_BioPagePerformanceDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BioPagePerformanceDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LinkPerformanceItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "My Portfolio"
          },
          "url": {
            "type": "string",
            "example": "https://example.com"
          },
          "clicks": {
            "type": "number",
            "example": 120
          },
          "ctr": {
            "type": "number",
            "example": 4.8
          }
        },
        "required": [
          "id",
          "title",
          "url",
          "clicks",
          "ctr"
        ]
      },
      "LinkPerformanceDto": {
        "type": "object",
        "properties": {
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkPerformanceItemDto"
            }
          },
          "totalViews": {
            "type": "number",
            "example": 2500
          }
        },
        "required": [
          "links",
          "totalViews"
        ]
      },
      "ApiResponse_LinkPerformanceDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LinkPerformanceDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GrowthTimePointDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "count": {
            "type": "number",
            "example": 15
          }
        },
        "required": [
          "date",
          "count"
        ]
      },
      "GrowthSummaryDto": {
        "type": "object",
        "properties": {
          "totalRegistrations": {
            "type": "number",
            "example": 120
          },
          "totalActive": {
            "type": "number",
            "example": 85
          },
          "growthRate": {
            "type": "number",
            "example": 12.5
          }
        },
        "required": [
          "totalRegistrations",
          "totalActive",
          "growthRate"
        ]
      },
      "GrowthTrendDto": {
        "type": "object",
        "properties": {
          "registrations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrowthTimePointDto"
            }
          },
          "activeUsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GrowthTimePointDto"
            }
          },
          "summary": {
            "$ref": "#/components/schemas/GrowthSummaryDto"
          }
        },
        "required": [
          "registrations",
          "activeUsers",
          "summary"
        ]
      },
      "ApiResponse_GrowthTrendDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GrowthTrendDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RevenueBreakdownItemDto": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "example": "CREDIT"
          },
          "amount": {
            "type": "number",
            "example": 2500,
            "description": "Amount (number — aggregated from Decimal)"
          },
          "count": {
            "type": "number",
            "example": 45
          },
          "percentage": {
            "type": "number",
            "example": 62.5
          }
        },
        "required": [
          "label",
          "amount",
          "count",
          "percentage"
        ]
      },
      "RevenueDailyTrendDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "amount": {
            "type": "number",
            "example": 450,
            "description": "Amount (number — aggregated from Decimal)"
          }
        },
        "required": [
          "date",
          "amount"
        ]
      },
      "RevenueSummaryDto": {
        "type": "object",
        "properties": {
          "breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RevenueBreakdownItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 4000,
            "description": "Total (number — aggregated from Decimal)"
          },
          "dailyTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RevenueDailyTrendDto"
            }
          }
        },
        "required": [
          "breakdown",
          "total",
          "dailyTrend"
        ]
      },
      "ApiResponse_RevenueSummaryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RevenueSummaryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RealtimeStatsDto": {
        "type": "object",
        "properties": {
          "activeSessions": {
            "type": "number",
            "example": 142
          },
          "activeAdminSessions": {
            "type": "number",
            "example": 3
          },
          "onlineCreators": {
            "type": "number",
            "example": 28
          }
        },
        "required": [
          "activeSessions",
          "activeAdminSessions",
          "onlineCreators"
        ]
      },
      "ApiResponse_RealtimeStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RealtimeStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PeriodComparisonDto": {
        "type": "object",
        "properties": {
          "current": {
            "type": "number",
            "example": 1200
          },
          "previous": {
            "type": "number",
            "example": 980
          },
          "delta": {
            "type": "number",
            "example": 220
          },
          "changePercent": {
            "type": "number",
            "example": 22.45
          },
          "trend": {
            "type": "string",
            "enum": [
              "up",
              "down",
              "flat"
            ],
            "example": "up"
          }
        },
        "required": [
          "current",
          "previous",
          "delta",
          "changePercent",
          "trend"
        ]
      },
      "ApiResponse_PeriodComparisonDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PeriodComparisonDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RetentionCohortItemDto": {
        "type": "object",
        "properties": {
          "cohortWeek": {
            "type": "string",
            "example": "2026-03-11",
            "format": "date"
          },
          "size": {
            "type": "number",
            "example": 50
          },
          "retention": {
            "example": [
              100,
              72.5,
              45
            ],
            "description": "Retention % per subsequent week",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "cohortWeek",
          "size",
          "retention"
        ]
      },
      "RetentionCohortDto": {
        "type": "object",
        "properties": {
          "cohorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RetentionCohortItemDto"
            }
          }
        },
        "required": [
          "cohorts"
        ]
      },
      "ApiResponse_RetentionCohortDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RetentionCohortDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CommissionByLevelDto": {
        "type": "object",
        "properties": {
          "level": {
            "type": "string",
            "example": "GOLD"
          },
          "amount": {
            "type": "number",
            "example": 1500,
            "description": "Amount (number — aggregated from Decimal)"
          },
          "count": {
            "type": "number",
            "example": 25
          }
        },
        "required": [
          "level",
          "amount",
          "count"
        ]
      },
      "CommissionDailyTrendDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "amount": {
            "type": "number",
            "example": 120,
            "description": "Amount (number — aggregated from Decimal)"
          }
        },
        "required": [
          "date",
          "amount"
        ]
      },
      "CommissionAnalyticsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 5000,
            "description": "Total (number — aggregated from Decimal)"
          },
          "platformCommission": {
            "type": "number",
            "example": 4000,
            "description": "Platform commission (number — aggregated from Decimal)"
          },
          "referrerCommission": {
            "type": "number",
            "example": 1000,
            "description": "Referrer commission (number — aggregated from Decimal)"
          },
          "byCreatorLevel": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommissionByLevelDto"
            }
          },
          "dailyTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommissionDailyTrendDto"
            }
          }
        },
        "required": [
          "total",
          "platformCommission",
          "referrerCommission",
          "byCreatorLevel",
          "dailyTrend"
        ]
      },
      "ApiResponse_CommissionAnalyticsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CommissionAnalyticsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ResponseTimeByCreatorDto": {
        "type": "object",
        "properties": {
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "example": "Jane Creator"
          },
          "avgMinutes": {
            "type": "number",
            "example": 8.5
          },
          "totalReplied": {
            "type": "number",
            "example": 120
          },
          "totalReceived": {
            "type": "number",
            "example": 150
          },
          "replyRate": {
            "type": "number",
            "example": 80
          }
        },
        "required": [
          "creatorId",
          "displayName",
          "avgMinutes",
          "totalReplied",
          "totalReceived",
          "replyRate"
        ]
      },
      "ResponseTimeDistributionDto": {
        "type": "object",
        "properties": {
          "bucket": {
            "type": "string",
            "example": "<5min"
          },
          "count": {
            "type": "number",
            "example": 45
          }
        },
        "required": [
          "bucket",
          "count"
        ]
      },
      "ResponseTimeDto": {
        "type": "object",
        "properties": {
          "platformAvgMinutes": {
            "type": "number",
            "example": 12.5
          },
          "byCreator": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseTimeByCreatorDto"
            }
          },
          "distribution": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseTimeDistributionDto"
            }
          }
        },
        "required": [
          "platformAvgMinutes",
          "byCreator",
          "distribution"
        ]
      },
      "ApiResponse_ResponseTimeDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ResponseTimeDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ArpuLtvDto": {
        "type": "object",
        "properties": {
          "arpu": {
            "type": "number",
            "example": 3.25,
            "description": "Average revenue per user"
          },
          "ltv": {
            "type": "number",
            "example": 18.5,
            "description": "Lifetime value"
          },
          "payingUsersCount": {
            "type": "number",
            "example": 85
          },
          "totalUsers": {
            "type": "number",
            "example": 420
          },
          "avgTransactionsPerUser": {
            "type": "number",
            "example": 2.3
          }
        },
        "required": [
          "arpu",
          "ltv",
          "payingUsersCount",
          "totalUsers",
          "avgTransactionsPerUser"
        ]
      },
      "ApiResponse_ArpuLtvDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ArpuLtvDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChurnMonthlyTrendDto": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "example": "2026-03",
            "description": "YYYY-MM format"
          },
          "churnRate": {
            "type": "number",
            "example": 8.5
          }
        },
        "required": [
          "month",
          "churnRate"
        ]
      },
      "ChurnDto": {
        "type": "object",
        "properties": {
          "churnRate": {
            "type": "number",
            "example": 8.5
          },
          "churned": {
            "type": "number",
            "example": 34
          },
          "retained": {
            "type": "number",
            "example": 366
          },
          "totalActive": {
            "type": "number",
            "example": 400
          },
          "monthlyTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChurnMonthlyTrendDto"
            }
          }
        },
        "required": [
          "churnRate",
          "churned",
          "retained",
          "totalActive",
          "monthlyTrend"
        ]
      },
      "ApiResponse_ChurnDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ChurnDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PayoutDailyTrendDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "amount": {
            "type": "number",
            "example": 350,
            "description": "Amount (number — aggregated from Decimal)"
          }
        },
        "required": [
          "date",
          "amount"
        ]
      },
      "PayoutAnalyticsDto": {
        "type": "object",
        "properties": {
          "totalPayout": {
            "type": "number",
            "example": 12500,
            "description": "Total payout (number — aggregated from Decimal)"
          },
          "payoutCount": {
            "type": "number",
            "example": 45
          },
          "avgPayout": {
            "type": "number",
            "example": 277.78
          },
          "pendingPayouts": {
            "type": "number",
            "example": 3
          },
          "dailyTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayoutDailyTrendDto"
            }
          }
        },
        "required": [
          "totalPayout",
          "payoutCount",
          "avgPayout",
          "pendingPayouts",
          "dailyTrend"
        ]
      },
      "ApiResponse_PayoutAnalyticsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PayoutAnalyticsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChargebackDailyTrendDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2026-03-22",
            "format": "date"
          },
          "count": {
            "type": "number",
            "example": 2
          }
        },
        "required": [
          "date",
          "count"
        ]
      },
      "ChargebackAnalyticsDto": {
        "type": "object",
        "properties": {
          "chargebackCount": {
            "type": "number",
            "example": 8
          },
          "chargebackAmount": {
            "type": "number",
            "example": 450,
            "description": "Amount (number — aggregated from Decimal)"
          },
          "totalTransactions": {
            "type": "number",
            "example": 1200
          },
          "rate": {
            "type": "number",
            "example": 0.67
          },
          "dailyTrend": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChargebackDailyTrendDto"
            }
          }
        },
        "required": [
          "chargebackCount",
          "chargebackAmount",
          "totalTransactions",
          "rate",
          "dailyTrend"
        ]
      },
      "ApiResponse_ChargebackAnalyticsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ChargebackAnalyticsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "FanEngagementCreatorDto": {
        "type": "object",
        "properties": {
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "example": "Jane Creator"
          },
          "uniqueFans": {
            "type": "number",
            "example": 85
          },
          "repeatFans": {
            "type": "number",
            "example": 32
          },
          "avgMessagesPerFan": {
            "type": "number",
            "example": 3.2
          },
          "totalMessages": {
            "type": "number",
            "example": 272
          }
        },
        "required": [
          "creatorId",
          "displayName",
          "uniqueFans",
          "repeatFans",
          "avgMessagesPerFan",
          "totalMessages"
        ]
      },
      "FanEngagementDto": {
        "type": "object",
        "properties": {
          "creators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FanEngagementCreatorDto"
            }
          }
        },
        "required": [
          "creators"
        ]
      },
      "ApiResponse_FanEngagementDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/FanEngagementDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RefundByCreatorDto": {
        "type": "object",
        "properties": {
          "creatorId": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "example": "Jane Creator"
          },
          "refundCount": {
            "type": "number",
            "example": 5
          },
          "refundRate": {
            "type": "number",
            "example": 2.5
          }
        },
        "required": [
          "creatorId",
          "displayName",
          "refundCount",
          "refundRate"
        ]
      },
      "RefundReasonDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "example": "no_reply"
          },
          "count": {
            "type": "number",
            "example": 12
          }
        },
        "required": [
          "reason",
          "count"
        ]
      },
      "RefundAnalyticsDto": {
        "type": "object",
        "properties": {
          "totalRefunds": {
            "type": "number",
            "example": 18
          },
          "refundAmount": {
            "type": "number",
            "example": 450,
            "description": "Amount (number — aggregated from Decimal)"
          },
          "refundRate": {
            "type": "number",
            "example": 1.5
          },
          "byCreator": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundByCreatorDto"
            }
          },
          "reasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundReasonDto"
            }
          }
        },
        "required": [
          "totalRefunds",
          "refundAmount",
          "refundRate",
          "byCreator",
          "reasons"
        ]
      },
      "ApiResponse_RefundAnalyticsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RefundAnalyticsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "HourlyActivityDto": {
        "type": "object",
        "properties": {
          "hour": {
            "type": "number",
            "example": 14,
            "minimum": 0,
            "maximum": 23
          },
          "views": {
            "type": "number",
            "example": 320
          },
          "messages": {
            "type": "number",
            "example": 45
          }
        },
        "required": [
          "hour",
          "views",
          "messages"
        ]
      },
      "DayPatternDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "example": "Monday"
          },
          "count": {
            "type": "number",
            "example": 850
          }
        },
        "required": [
          "day",
          "count"
        ]
      },
      "PeakHoursDto": {
        "type": "object",
        "properties": {
          "hourly": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HourlyActivityDto"
            }
          },
          "bestHour": {
            "type": "number",
            "example": 14,
            "description": "Hour with highest activity (0-23)"
          },
          "bestDay": {
            "type": "string",
            "example": "Wednesday"
          },
          "dailyPattern": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DayPatternDto"
            }
          }
        },
        "required": [
          "hourly",
          "bestHour",
          "bestDay",
          "dailyPattern"
        ]
      },
      "ApiResponse_PeakHoursDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PeakHoursDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SessionSummaryDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 7
          },
          "totalSessions": {
            "type": "number",
            "example": 4200
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 1850
          },
          "bounceRate": {
            "type": "number",
            "example": 38,
            "description": "Bounce rate as integer percentage"
          },
          "avgDuration": {
            "type": "number",
            "example": 185,
            "description": "Average session duration in seconds"
          },
          "pagesPerSession": {
            "type": "number",
            "example": 2.4
          },
          "totalPageViews": {
            "type": "number",
            "example": 9800
          }
        },
        "required": [
          "days",
          "totalSessions",
          "uniqueVisitors",
          "bounceRate",
          "avgDuration",
          "pagesPerSession",
          "totalPageViews"
        ]
      },
      "ApiResponse_SessionSummaryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionSummaryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SessionTrendDayDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "sessions": {
            "type": "number",
            "example": 320
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 210
          },
          "avgDuration": {
            "type": "number",
            "example": 145
          },
          "bounceRate": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "date",
          "sessions",
          "uniqueVisitors",
          "avgDuration",
          "bounceRate"
        ]
      },
      "SessionTrendDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 30
          },
          "daily": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionTrendDayDto"
            }
          }
        },
        "required": [
          "days",
          "daily"
        ]
      },
      "ApiResponse_SessionTrendDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionTrendDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TopPageItemDto": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "example": "/home"
          },
          "views": {
            "type": "number",
            "example": 1200
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 850
          },
          "avgDuration": {
            "type": "number",
            "nullable": true,
            "example": 95
          },
          "avgScroll": {
            "type": "number",
            "nullable": true,
            "example": 65
          }
        },
        "required": [
          "path",
          "views",
          "uniqueVisitors"
        ]
      },
      "TopPagesDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 7
          },
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopPageItemDto"
            }
          }
        },
        "required": [
          "days",
          "pages"
        ]
      },
      "ApiResponse_TopPagesDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TopPagesDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "BounceRateDayDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date-time"
          },
          "total": {
            "type": "number",
            "example": 320
          },
          "bounced": {
            "type": "number",
            "example": 120
          },
          "bounce_rate": {
            "type": "number",
            "example": 38
          }
        },
        "required": [
          "day",
          "total",
          "bounced",
          "bounce_rate"
        ]
      },
      "BounceRateTrendDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 30
          },
          "daily": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BounceRateDayDto"
            }
          }
        },
        "required": [
          "days",
          "daily"
        ]
      },
      "ApiResponse_BounceRateTrendDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BounceRateTrendDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CampaignItemDto": {
        "type": "object",
        "properties": {
          "campaign": {
            "type": "string",
            "nullable": true,
            "example": "spring2026"
          },
          "source": {
            "type": "string",
            "nullable": true,
            "example": "instagram"
          },
          "medium": {
            "type": "string",
            "nullable": true,
            "example": "social"
          },
          "sessions": {
            "type": "number",
            "example": 450
          },
          "visitors": {
            "type": "number",
            "example": 320
          },
          "avgDuration": {
            "type": "number",
            "nullable": true,
            "example": 185
          },
          "bounceRate": {
            "type": "number",
            "nullable": true,
            "example": 35
          },
          "conversions": {
            "type": "number",
            "example": 28
          }
        },
        "required": [
          "sessions",
          "visitors",
          "conversions"
        ]
      },
      "CampaignPerformanceDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 30
          },
          "campaigns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CampaignItemDto"
            }
          }
        },
        "required": [
          "days",
          "campaigns"
        ]
      },
      "ApiResponse_CampaignPerformanceDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CampaignPerformanceDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TrafficSourceSessionItemDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "example": "google.com"
          },
          "sessions": {
            "type": "number",
            "example": 800
          },
          "visitors": {
            "type": "number",
            "example": 600
          },
          "bounceRate": {
            "type": "number",
            "nullable": true,
            "example": 42
          }
        },
        "required": [
          "source",
          "sessions",
          "visitors"
        ]
      },
      "SessionTrafficSourcesDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 7
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficSourceSessionItemDto"
            }
          }
        },
        "required": [
          "days",
          "sources"
        ]
      },
      "ApiResponse_SessionTrafficSourcesDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionTrafficSourcesDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GeoCountryItemDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "example": "Turkey"
          },
          "sessions": {
            "type": "number",
            "example": 800
          },
          "visitors": {
            "type": "number",
            "example": 550
          }
        },
        "required": [
          "country",
          "sessions",
          "visitors"
        ]
      },
      "SessionGeoDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 7
          },
          "countries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GeoCountryItemDto"
            }
          }
        },
        "required": [
          "days",
          "countries"
        ]
      },
      "ApiResponse_SessionGeoDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionGeoDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "DeviceNameCountDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "mobile"
          },
          "count": {
            "type": "number",
            "example": 1500
          }
        },
        "required": [
          "name",
          "count"
        ]
      },
      "SessionDevicesDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 7
          },
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceNameCountDto"
            }
          },
          "browsers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceNameCountDto"
            }
          },
          "operatingSystems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceNameCountDto"
            }
          }
        },
        "required": [
          "days",
          "devices",
          "browsers",
          "operatingSystems"
        ]
      },
      "ApiResponse_SessionDevicesDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SessionDevicesDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ABTestSessionTestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "signup-flow-v2"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "RUNNING",
              "STOPPED",
              "ARCHIVED"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "status"
        ]
      },
      "ABTestSessionVariantDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "A"
          },
          "users": {
            "type": "number",
            "example": 120
          },
          "sessions": {
            "type": "number",
            "example": 450
          },
          "conversions": {
            "type": "number",
            "example": 28
          },
          "conversionRate": {
            "type": "number",
            "example": 6.22
          }
        },
        "required": [
          "name",
          "users",
          "sessions",
          "conversions",
          "conversionRate"
        ]
      },
      "ABTestSessionResultsDto": {
        "type": "object",
        "properties": {
          "test": {
            "$ref": "#/components/schemas/ABTestSessionTestDto"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ABTestSessionVariantDto"
            }
          }
        },
        "required": [
          "test",
          "variants"
        ]
      },
      "ApiResponse_ABTestSessionResultsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ABTestSessionResultsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CouponAnalyticsItemDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "SPRING20"
          },
          "type": {
            "type": "string",
            "example": "PERCENTAGE"
          },
          "value": {
            "type": "number",
            "example": 20
          },
          "active": {
            "type": "boolean"
          },
          "totalUses": {
            "type": "number",
            "example": 142
          }
        },
        "required": [
          "code",
          "type",
          "value",
          "active",
          "totalUses"
        ]
      },
      "CouponAnalyticsDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 30
          },
          "coupons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CouponAnalyticsItemDto"
            }
          }
        },
        "required": [
          "days",
          "coupons"
        ]
      },
      "ApiResponse_CouponAnalyticsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CouponAnalyticsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorAnalyticsOverviewDto": {
        "type": "object",
        "properties": {
          "totalViews": {
            "type": "number",
            "example": 4200,
            "description": "Total page views in the period"
          },
          "uniqueVisitors": {
            "type": "number",
            "example": 1800,
            "description": "Unique visitor count"
          },
          "totalClicks": {
            "type": "number",
            "example": 320,
            "description": "Total link clicks"
          },
          "ctr": {
            "type": "number",
            "example": 7.62,
            "description": "Click-through rate (%)"
          },
          "days": {
            "type": "number",
            "example": 30,
            "description": "Number of days in the period"
          }
        },
        "required": [
          "totalViews",
          "uniqueVisitors",
          "totalClicks",
          "ctr",
          "days"
        ]
      },
      "ApiResponse_CreatorAnalyticsOverviewDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorAnalyticsOverviewDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorTrafficDto": {
        "type": "object",
        "properties": {
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorTrafficSourceItemDto"
            }
          }
        },
        "required": [
          "sources"
        ]
      },
      "ApiResponse_CreatorTrafficDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorTrafficDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorGeoLocationItemDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "example": "Turkey",
            "description": "Country name or \"Unknown\""
          },
          "visits": {
            "type": "number",
            "example": 400
          },
          "percentage": {
            "type": "number",
            "example": 22.2,
            "description": "Percentage of total"
          }
        },
        "required": [
          "country",
          "visits",
          "percentage"
        ]
      },
      "CreatorGeoDto": {
        "type": "object",
        "properties": {
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorGeoLocationItemDto"
            }
          }
        },
        "required": [
          "locations"
        ]
      },
      "ApiResponse_CreatorGeoDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorGeoDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorDeviceSegmentDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "mobile",
            "description": "Device type or \"unknown\""
          },
          "count": {
            "type": "number",
            "example": 1200
          },
          "percentage": {
            "type": "number",
            "example": 66.7,
            "description": "Percentage of total"
          }
        },
        "required": [
          "name",
          "count",
          "percentage"
        ]
      },
      "CreatorDevicesDto": {
        "type": "object",
        "properties": {
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorDeviceSegmentDto"
            }
          }
        },
        "required": [
          "segments"
        ]
      },
      "ApiResponse_CreatorDevicesDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorDevicesDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorDailyTrendPointDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date-time",
            "description": "Date (day truncated)"
          },
          "views": {
            "type": "number",
            "example": 145
          },
          "clicks": {
            "type": "number",
            "example": 12
          }
        },
        "required": [
          "day",
          "views",
          "clicks"
        ]
      },
      "CreatorTrendDto": {
        "type": "object",
        "properties": {
          "days": {
            "type": "number",
            "example": 30
          },
          "daily": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorDailyTrendPointDto"
            }
          }
        },
        "required": [
          "days",
          "daily"
        ]
      },
      "ApiResponse_CreatorTrendDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorTrendDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorSessionsDto": {
        "type": "object",
        "properties": {
          "totalSessions": {
            "type": "number",
            "example": 1800
          },
          "bounceRate": {
            "type": "number",
            "example": 42.5,
            "description": "Bounce rate (%)"
          },
          "avgDuration": {
            "type": "number",
            "example": 145,
            "description": "Average session duration in seconds"
          },
          "pagesPerSession": {
            "type": "number",
            "example": 1.8,
            "description": "Average page views per session"
          }
        },
        "required": [
          "totalSessions",
          "bounceRate",
          "avgDuration",
          "pagesPerSession"
        ]
      },
      "ApiResponse_CreatorSessionsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorSessionsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorLinkItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "My Portfolio"
          },
          "url": {
            "type": "string",
            "example": "https://example.com"
          },
          "clicks": {
            "type": "number",
            "example": 120
          },
          "ctr": {
            "type": "number",
            "example": 4.8,
            "description": "Click-through rate (%)"
          }
        },
        "required": [
          "id",
          "title",
          "url",
          "clicks",
          "ctr"
        ]
      },
      "CreatorLinksDto": {
        "type": "object",
        "properties": {
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorLinkItemDto"
            }
          },
          "totalViews": {
            "type": "number",
            "example": 2500,
            "description": "Total page views (denominator for CTR)"
          }
        },
        "required": [
          "links",
          "totalViews"
        ]
      },
      "ApiResponse_CreatorLinksDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorLinksDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorCardDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "cuid_creator_123"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "avatarUrl": {
            "type": "string",
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "level": {
            "type": "string",
            "enum": [
              "BRONZE",
              "SILVER",
              "GOLD",
              "PLATINUM"
            ]
          },
          "dmActive": {
            "type": "boolean",
            "example": false
          },
          "totalFollowers": {
            "type": "number",
            "example": 0,
            "description": "Total follower count across all connected social accounts"
          }
        },
        "required": [
          "id",
          "dmActive",
          "totalFollowers"
        ]
      },
      "CursorPaginatedCreatorsDto": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorCardDto"
            }
          },
          "nextCursor": {
            "type": "string",
            "nullable": true,
            "description": "Cursor for next page"
          },
          "hasMore": {
            "type": "boolean",
            "example": false
          }
        },
        "required": [
          "results",
          "hasMore"
        ]
      },
      "ApiResponse_CursorPaginatedCreatorsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CursorPaginatedCreatorsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatorListDto": {
        "type": "object",
        "properties": {
          "creators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreatorCardDto"
            }
          }
        },
        "required": [
          "creators"
        ]
      },
      "ApiResponse_CreatorListDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreatorListDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RecordViewResultDto": {
        "type": "object",
        "properties": {
          "recorded": {
            "type": "boolean",
            "example": true,
            "description": "View was recorded"
          }
        },
        "required": [
          "recorded"
        ]
      },
      "ApiResponse_RecordViewResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/RecordViewResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "AddFeaturedDto": {
        "type": "object",
        "properties": {
          "creatorId": {
            "type": "string",
            "description": "Creator profile ID to feature",
            "example": "cuid_creator_789"
          },
          "position": {
            "type": "number",
            "description": "Display position (0-based)",
            "example": 0
          }
        },
        "required": [
          "creatorId"
        ]
      },
      "SocialAccountDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "example": "INSTAGRAM"
          },
          "platformUsername": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "connectedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "platform",
          "connectedAt"
        ]
      },
      "UserProfileDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "bio": {
            "type": "string",
            "nullable": true,
            "example": "Software engineer and creator."
          },
          "status": {
            "type": "string",
            "example": "ACTIVE",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DEACTIVATED",
              "DELETED"
            ]
          },
          "emailVerified": {
            "type": "boolean",
            "example": true
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "twoFactorEnabled": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isCreator": {
            "type": "boolean",
            "example": false
          },
          "socialAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SocialAccountDto"
            }
          },
          "referralCode": {
            "type": "string",
            "nullable": true,
            "example": "REF123"
          },
          "firstReferrerUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://example.com/ref"
          },
          "firstLandingPage": {
            "type": "string",
            "nullable": true,
            "example": "/landing"
          },
          "utmSource": {
            "type": "string",
            "nullable": true,
            "example": "google"
          },
          "utmMedium": {
            "type": "string",
            "nullable": true,
            "example": "cpc"
          },
          "utmCampaign": {
            "type": "string",
            "nullable": true,
            "example": "spring_promo"
          },
          "registrationDevice": {
            "type": "string",
            "nullable": true,
            "example": "mobile"
          },
          "registrationCountry": {
            "type": "string",
            "nullable": true,
            "example": "TR"
          }
        },
        "required": [
          "id",
          "email",
          "status",
          "emailVerified",
          "twoFactorEnabled",
          "createdAt",
          "isCreator",
          "socialAccounts"
        ]
      },
      "ApiResponse_UserProfileDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UserProfileDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateProfileDto": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 100,
            "description": "Display name"
          },
          "bio": {
            "type": "string",
            "maxLength": 500,
            "description": "User bio"
          },
          "avatarUrl": {
            "type": "string",
            "format": "uri",
            "description": "Avatar URL"
          }
        }
      },
      "UpdatedProfileDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          },
          "bio": {
            "type": "string",
            "nullable": true,
            "example": "Software engineer."
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/avatars/abc.jpg"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          }
        },
        "required": [
          "id",
          "email"
        ]
      },
      "ApiResponse_UpdatedProfileDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UpdatedProfileDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetAvatarDto": {
        "type": "object",
        "properties": {
          "avatarUrl": {
            "type": "string",
            "maxLength": 2048,
            "format": "uri"
          }
        },
        "required": [
          "avatarUrl"
        ]
      },
      "AvatarUrlResponseDto": {
        "type": "object",
        "properties": {
          "avatarUrl": {
            "type": "string",
            "example": "https://cdn.bio.re/avatars/user/uuid.webp"
          }
        },
        "required": [
          "avatarUrl"
        ]
      },
      "ApiResponse_AvatarUrlResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AvatarUrlResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SetIntentDto": {
        "type": "object",
        "properties": {
          "intent": {
            "type": "string",
            "description": "User intent",
            "enum": [
              "FAN",
              "CREATOR"
            ]
          }
        },
        "required": [
          "intent"
        ]
      },
      "ChangeUsernameDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "minLength": 3,
            "maxLength": 30,
            "pattern": "^[a-z0-9._-]+$"
          }
        },
        "required": [
          "username"
        ]
      },
      "UsernameAvailabilityDto": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean",
            "example": true,
            "description": "True if the username is available"
          }
        },
        "required": [
          "available"
        ]
      },
      "ApiResponse_UsernameAvailabilityDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UsernameAvailabilityDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ChangeEmailDto": {
        "type": "object",
        "properties": {
          "newEmail": {
            "type": "string",
            "format": "email",
            "description": "New email address"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "description": "Current password for verification"
          }
        },
        "required": [
          "newEmail",
          "password"
        ]
      },
      "EmailChangeMessageDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Verification email sent to your new address. Please check your inbox."
          }
        },
        "required": [
          "message"
        ]
      },
      "ApiResponse_EmailChangeMessageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/EmailChangeMessageDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UserSettingsDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "theme": {
            "type": "string",
            "nullable": true,
            "example": "dark"
          },
          "emailNotifications": {
            "type": "boolean",
            "example": true
          },
          "pushNotifications": {
            "type": "boolean",
            "example": true
          },
          "inAppNotifications": {
            "type": "boolean",
            "example": true
          },
          "digestMode": {
            "type": "string",
            "nullable": true,
            "example": "DAILY",
            "enum": [
              "DAILY",
              "WEEKLY",
              "NONE"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "userId",
          "emailNotifications",
          "pushNotifications",
          "inAppNotifications",
          "createdAt",
          "updatedAt"
        ]
      },
      "ApiResponse_UserSettingsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UserSettingsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateSettingsDto": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 10,
            "description": "Preferred locale",
            "example": "en"
          },
          "theme": {
            "type": "string",
            "maxLength": 20,
            "description": "UI theme",
            "example": "dark"
          },
          "emailNotifications": {
            "type": "boolean",
            "description": "Email notifications enabled"
          },
          "pushNotifications": {
            "type": "boolean",
            "description": "Push notifications enabled"
          },
          "inAppNotifications": {
            "type": "boolean",
            "description": "In-app notifications enabled"
          },
          "digestMode": {
            "type": "string",
            "enum": [
              "DAILY",
              "WEEKLY",
              "NONE"
            ],
            "description": "Digest mode"
          }
        }
      },
      "ReactivateTokenBearerDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Reactivation token from email link (alternative to X-Reactivate-Token header)"
          }
        }
      },
      "RequestDeletionDto": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "minLength": 8
          }
        },
        "required": [
          "password"
        ]
      },
      "DeletionScheduledDto": {
        "type": "object",
        "properties": {
          "scheduledAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the account will be deleted"
          }
        },
        "required": [
          "scheduledAt"
        ]
      },
      "ApiResponse_DeletionScheduledDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/DeletionScheduledDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ExportRequestedDto": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "format": "uuid",
            "description": "GDPR request ID"
          }
        },
        "required": [
          "requestId"
        ]
      },
      "ApiResponse_ExportRequestedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ExportRequestedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "RecordConsentDto": {
        "type": "object",
        "properties": {
          "documentType": {
            "type": "string"
          },
          "documentVersion": {
            "type": "string"
          },
          "accepted": {
            "type": "boolean"
          }
        },
        "required": [
          "documentType",
          "documentVersion",
          "accepted"
        ]
      },
      "ConsentRecordedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Consent record ID"
          }
        },
        "required": [
          "id"
        ]
      },
      "ApiResponse_ConsentRecordedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ConsentRecordedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ConsentHistoryItemDto": {
        "type": "object",
        "properties": {
          "documentType": {
            "type": "string",
            "example": "tos",
            "description": "Document type (tos, privacy, cookies)"
          },
          "documentVersion": {
            "type": "string",
            "example": "2.1"
          },
          "accepted": {
            "type": "boolean",
            "example": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "documentType",
          "documentVersion",
          "accepted",
          "createdAt"
        ]
      },
      "ArrayApiResponse_ConsentHistoryItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConsentHistoryItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SubmitAppealDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "ban",
              "fraud_flag",
              "content_removal",
              "report_action"
            ],
            "description": "Appeal type",
            "example": "ban"
          },
          "reason": {
            "type": "string",
            "maxLength": 5000,
            "description": "Reason for the appeal",
            "example": "I believe my ban was issued in error."
          },
          "banId": {
            "type": "string",
            "format": "uuid",
            "description": "Related ban ID (for ban appeals)"
          },
          "evidence": {
            "type": "string",
            "maxLength": 5000,
            "description": "Supporting evidence or additional information"
          }
        },
        "required": [
          "type",
          "reason"
        ]
      },
      "AppealSubmittedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "example": "PENDING",
            "enum": [
              "PENDING",
              "REVIEWING",
              "RESOLVED",
              "DISMISSED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "status",
          "createdAt"
        ]
      },
      "ApiResponse_AppealSubmittedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/AppealSubmittedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "BlockedUserItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "example": "John Doe"
          },
          "blockedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "blockedAt"
        ]
      },
      "BlockedUsersResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlockedUserItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 3,
            "description": "Total number of blocked users"
          }
        },
        "required": [
          "items",
          "total"
        ]
      },
      "ApiResponse_BlockedUsersResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BlockedUsersResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UserAttributionDto": {
        "type": "object",
        "properties": {
          "referredBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "referralCode": {
            "type": "string",
            "nullable": true,
            "example": "REF123"
          },
          "firstReferrerUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://example.com/ref"
          },
          "firstLandingPage": {
            "type": "string",
            "nullable": true,
            "example": "/landing"
          },
          "acquiredViaCreatorId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "utmSource": {
            "type": "string",
            "nullable": true,
            "example": "google"
          },
          "utmMedium": {
            "type": "string",
            "nullable": true,
            "example": "cpc"
          },
          "utmCampaign": {
            "type": "string",
            "nullable": true,
            "example": "spring_promo"
          },
          "utmTerm": {
            "type": "string",
            "nullable": true,
            "example": "keyword"
          },
          "utmContent": {
            "type": "string",
            "nullable": true,
            "example": "banner"
          },
          "registrationDevice": {
            "type": "string",
            "nullable": true,
            "example": "mobile"
          },
          "registrationCountry": {
            "type": "string",
            "nullable": true,
            "example": "TR"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "createdAt"
        ]
      },
      "ApiResponse_UserAttributionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/UserAttributionDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GdprExportRequestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "GDPR request ID"
          },
          "status": {
            "type": "string",
            "example": "PENDING",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED",
              "CANCELLED"
            ],
            "description": "Current status of the export request"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "status",
          "createdAt"
        ]
      },
      "ApiResponse_GdprExportRequestDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprExportRequestDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GdprExportStatusDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "example": "PROCESSING",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED",
              "CANCELLED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "completedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "status",
          "createdAt"
        ]
      },
      "ApiResponse_GdprExportStatusDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprExportStatusDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GdprExportDownloadDto": {
        "type": "object",
        "properties": {
          "downloadUrl": {
            "type": "string",
            "example": "https://cdn.bio.re/exports/uuid/export.zip?sig=...",
            "description": "Signed download URL"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the download URL expires"
          }
        },
        "required": [
          "downloadUrl",
          "expiresAt"
        ]
      },
      "ApiResponse_GdprExportDownloadDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprExportDownloadDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "GdprDeletionRequestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "example": "PENDING",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED",
              "CANCELLED"
            ]
          },
          "gracePeriodEnds": {
            "type": "string",
            "format": "date-time",
            "description": "When the grace period ends and account will be deleted"
          }
        },
        "required": [
          "id",
          "status",
          "gracePeriodEnds"
        ]
      },
      "ApiResponse_GdprDeletionRequestDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/GdprDeletionRequestDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UserListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "emailVerified": {
            "type": "boolean",
            "example": true
          },
          "twoFactorEnabled": {
            "type": "boolean",
            "example": false
          },
          "intent": {
            "type": "string",
            "nullable": true,
            "enum": [
              "FAN",
              "CREATOR"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status",
          "emailVerified",
          "twoFactorEnabled",
          "createdAt"
        ]
      },
      "PaginatedData_UserListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_UserListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_UserListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UserStatsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 15000
          },
          "active": {
            "type": "number",
            "example": 12000
          },
          "suspended": {
            "type": "number",
            "example": 200
          },
          "banned": {
            "type": "number",
            "example": 50
          },
          "deactivated": {
            "type": "number",
            "example": 100
          },
          "locked": {
            "type": "number",
            "example": 5
          },
          "activeSessions": {
            "type": "number",
            "example": 3000
          },
          "fanCount": {
            "type": "number"
          },
          "creatorCount": {
            "type": "number"
          },
          "noIntentCount": {
            "type": "number"
          }
        },
        "required": [
          "total",
          "active",
          "suspended",
          "banned",
          "deactivated",
          "locked",
          "activeSessions",
          "fanCount",
          "creatorCount",
          "noIntentCount"
        ]
      },
      "SocialAccountEmbedDto": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "example": "GOOGLE"
          },
          "platformUsername": {
            "type": "string",
            "nullable": true
          },
          "verified": {
            "type": "boolean",
            "example": true
          },
          "connectedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "platform",
          "verified",
          "connectedAt"
        ]
      },
      "DeviceEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "lastSeenAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "trusted": {
            "type": "boolean",
            "example": false
          }
        },
        "required": [
          "id",
          "trusted"
        ]
      },
      "SessionEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "createdAt",
          "expiresAt"
        ]
      },
      "RoleAssignmentEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "roleId": {
            "type": "string",
            "format": "uuid"
          },
          "assignedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "role": {
            "$ref": "#/components/schemas/RoleEmbedDto"
          }
        },
        "required": [
          "id",
          "userId",
          "roleId",
          "createdAt",
          "role"
        ]
      },
      "UserDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "example": "user@example.com"
          },
          "username": {
            "type": "string",
            "nullable": true,
            "example": "johndoe"
          },
          "displayName": {
            "type": "string",
            "example": "John Doe"
          },
          "bio": {
            "type": "string",
            "nullable": true
          },
          "avatarUrl": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "BANNED",
              "DELETED",
              "DEACTIVATED"
            ]
          },
          "emailVerified": {
            "type": "boolean",
            "example": true
          },
          "twoFactorEnabled": {
            "type": "boolean",
            "example": false
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "lastLoginAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "loginAttempts": {
            "type": "number",
            "example": 0
          },
          "lockedUntil": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "referredBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "referralCode": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "intent": {
            "type": "string",
            "nullable": true,
            "enum": [
              "FAN",
              "CREATOR"
            ]
          },
          "deletedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "settings": {
            "type": "object",
            "nullable": true
          },
          "socialAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SocialAccountEmbedDto"
            }
          },
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceEmbedDto"
            }
          },
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionEmbedDto"
            }
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoleAssignmentEmbedDto"
            }
          }
        },
        "required": [
          "id",
          "email",
          "displayName",
          "status",
          "emailVerified",
          "twoFactorEnabled",
          "loginAttempts",
          "createdAt",
          "updatedAt",
          "socialAccounts",
          "devices",
          "sessions",
          "roles"
        ]
      },
      "AdminActionDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "ForceLogoutResultDto": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "example": 3,
            "description": "Number of sessions that were revoked"
          }
        },
        "required": [
          "count"
        ]
      },
      "AdminActionRequiredReasonDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "minLength": 3
          }
        },
        "required": [
          "reason"
        ]
      },
      "BulkUserActionDto": {
        "type": "object",
        "properties": {
          "userIds": {
            "maxItems": 50,
            "description": "User IDs to act on (max 50)",
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "action": {
            "type": "string",
            "enum": [
              "suspend",
              "ban",
              "restore"
            ],
            "description": "Action to perform"
          },
          "reason": {
            "type": "string",
            "maxLength": 500,
            "description": "Reason for action"
          }
        },
        "required": [
          "userIds",
          "action"
        ]
      },
      "BulkActionFailedItemDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "error": {
            "type": "string",
            "example": "Cannot transition from ACTIVE to ACTIVE"
          }
        },
        "required": [
          "userId",
          "error"
        ]
      },
      "BulkActionResultDto": {
        "type": "object",
        "properties": {
          "processed": {
            "type": "number",
            "example": 45,
            "description": "Number of users successfully processed"
          },
          "failed": {
            "description": "Items that failed with reason",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkActionFailedItemDto"
            }
          }
        },
        "required": [
          "processed",
          "failed"
        ]
      },
      "CmsPageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string",
            "example": "terms"
          },
          "title": {
            "type": "string",
            "example": "Terms of Service"
          },
          "content": {
            "type": "string",
            "example": "Draft content for Terms of Service."
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "PREVIEW",
              "PUBLISHED",
              "ARCHIVED"
            ]
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "publishedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "slug",
          "title",
          "content",
          "locale",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_CmsPageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CmsPageDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_CmsPageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CmsPageDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreatePageDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "content": {
            "type": "string",
            "minLength": 1
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "slug",
          "title",
          "content"
        ]
      },
      "CreatedIdDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the newly created resource"
          }
        },
        "required": [
          "id"
        ]
      },
      "UpdatePageDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200
          },
          "content": {
            "type": "string"
          }
        }
      },
      "PageVersionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "pageId": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "Terms of Service"
          },
          "content": {
            "type": "string",
            "example": "Previous version content."
          },
          "version": {
            "type": "number",
            "example": 1
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "pageId",
          "title",
          "content",
          "version",
          "createdAt"
        ]
      },
      "ArrayApiResponse_PageVersionDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PageVersionDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpsertEmailTemplateDto": {
        "type": "object",
        "properties": {
          "eventKey": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "subject": {
            "type": "string"
          },
          "bodyHtml": {
            "type": "string"
          },
          "bodyText": {
            "type": "string"
          }
        },
        "required": [
          "eventKey",
          "locale",
          "subject",
          "bodyHtml"
        ]
      },
      "UpdateEmailTemplateDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string"
          },
          "bodyHtml": {
            "type": "string"
          },
          "bodyText": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "UpsertPushTemplateDto": {
        "type": "object",
        "properties": {
          "eventKey": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "required": [
          "eventKey",
          "locale",
          "title",
          "body"
        ]
      },
      "UpdatePushTemplateDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "NoticeDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string",
            "example": "payment_warning"
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "title": {
            "type": "string",
            "example": "Payment Warning"
          },
          "body": {
            "type": "string",
            "example": "Please verify your payment method."
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "updatedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "key",
          "locale",
          "title",
          "body",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_NoticeDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoticeDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpsertNoticeDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "locale",
          "title",
          "body"
        ]
      },
      "BannerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "Holiday Sale"
          },
          "content": {
            "type": "string",
            "example": "Up to 50% off!"
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "type": {
            "type": "string",
            "example": "INFO"
          },
          "placement": {
            "type": "string",
            "example": "TOP_BAR"
          },
          "active": {
            "type": "boolean",
            "example": false
          },
          "startsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "content",
          "locale",
          "type",
          "placement",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_BannerDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BannerDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_BannerDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BannerDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateBannerDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "placement": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "startsAt": {
            "type": "string"
          },
          "endsAt": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "content",
          "type",
          "placement"
        ]
      },
      "UpdateBannerDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "placement": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "active": {
            "type": "boolean"
          },
          "startsAt": {
            "type": "string"
          },
          "endsAt": {
            "type": "string"
          }
        }
      },
      "RedirectDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "fromPath": {
            "type": "string",
            "example": "/old-page"
          },
          "toUrl": {
            "type": "string",
            "example": "https://bio.re/new-page"
          },
          "statusCode": {
            "type": "number",
            "example": 301
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "fromPath",
          "toUrl",
          "statusCode",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_RedirectDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RedirectDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateRedirectDto": {
        "type": "object",
        "properties": {
          "fromPath": {
            "type": "string",
            "minLength": 1
          },
          "toUrl": {
            "type": "string",
            "minLength": 1
          },
          "statusCode": {
            "type": "number"
          },
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "fromPath",
          "toUrl"
        ]
      },
      "AnnouncementDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "System Maintenance"
          },
          "content": {
            "type": "string",
            "example": "Scheduled downtime on Sunday."
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "type": {
            "type": "string",
            "example": "INFO"
          },
          "active": {
            "type": "boolean",
            "example": false
          },
          "startsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "content",
          "locale",
          "type",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_AnnouncementDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnnouncementDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateAnnouncementDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "type": {
            "type": "string"
          },
          "startsAt": {
            "type": "string"
          },
          "endsAt": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "content"
        ]
      },
      "UpdateAnnouncementDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          },
          "type": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "startsAt": {
            "type": "string"
          },
          "endsAt": {
            "type": "string"
          }
        }
      },
      "ThemeDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Midnight"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "tokens": {
            "type": "object",
            "description": "JSON token object"
          },
          "thumbnail": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "example": true
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "tokens",
          "active",
          "sortOrder",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_ThemeDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ThemeDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpsertThemeDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "tokens": {
            "type": "object"
          },
          "thumbnail": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "tokens"
        ]
      },
      "ThemeTokenDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string",
            "example": "primary"
          },
          "value": {
            "type": "string",
            "example": "#6366f1"
          },
          "group": {
            "type": "string",
            "example": "color"
          },
          "mode": {
            "type": "string",
            "example": "light"
          },
          "published": {
            "type": "boolean",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "key",
          "value",
          "group",
          "mode",
          "published",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_ThemeTokenDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ThemeTokenDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpsertThemeTokenDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "group": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ErrorPageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": "number",
            "example": 404
          },
          "title": {
            "type": "string",
            "example": "Page Not Found"
          },
          "body": {
            "type": "string",
            "example": "The page you are looking for does not exist."
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "code",
          "title",
          "body",
          "locale",
          "createdAt",
          "updatedAt"
        ]
      },
      "ApiResponse_ErrorPageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ErrorPageDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpsertErrorPageDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "code",
          "title",
          "body"
        ]
      },
      "BlogCategoryEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Tech"
          },
          "slug": {
            "type": "string",
            "example": "tech"
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "sortOrder",
          "createdAt"
        ]
      },
      "BlogPostCategoryJoinDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "postId": {
            "type": "string",
            "format": "uuid"
          },
          "categoryId": {
            "type": "string",
            "format": "uuid"
          },
          "category": {
            "$ref": "#/components/schemas/BlogCategoryEmbedDto"
          }
        },
        "required": [
          "id",
          "postId",
          "categoryId",
          "category"
        ]
      },
      "BlogPostDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string",
            "example": "getting-started"
          },
          "title": {
            "type": "string",
            "example": "Getting Started with BIO.RE"
          },
          "excerpt": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "example": "Blog post content here."
          },
          "featuredImage": {
            "type": "string",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "PREVIEW",
              "PUBLISHED",
              "ARCHIVED"
            ]
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "publishedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "authorId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlogPostCategoryJoinDto"
            }
          }
        },
        "required": [
          "id",
          "slug",
          "title",
          "content",
          "locale",
          "status",
          "createdAt",
          "updatedAt",
          "categories"
        ]
      },
      "ArrayApiResponse_BlogPostDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlogPostDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_BlogPostDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BlogPostDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateBlogPostDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "content": {
            "type": "string",
            "minLength": 1
          },
          "excerpt": {
            "type": "string"
          },
          "featuredImage": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "slug",
          "title",
          "content"
        ]
      },
      "UpdateBlogPostDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "featuredImage": {
            "type": "string"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        }
      },
      "BlogCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Tech"
          },
          "slug": {
            "type": "string",
            "example": "tech"
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "sortOrder",
          "createdAt"
        ]
      },
      "ArrayApiResponse_BlogCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlogCategoryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpsertBlogCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "slug"
        ]
      },
      "HelpCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string",
            "example": "getting-started"
          },
          "name": {
            "type": "string",
            "example": "Getting Started"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "iconBackground": {
            "type": "string",
            "nullable": true
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "PREVIEW",
              "PUBLISHED",
              "ARCHIVED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "sortOrder",
          "locale",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_HelpCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HelpCategoryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_HelpCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/HelpCategoryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateHelpCategoryDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "iconBackground": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "slug",
          "name"
        ]
      },
      "UpdateHelpCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "description": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "iconBackground": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          }
        }
      },
      "HelpArticleDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string",
            "example": "how-to-change-handle"
          },
          "title": {
            "type": "string",
            "example": "How to change your handle"
          },
          "content": {
            "type": "string",
            "example": "Article content here."
          },
          "excerpt": {
            "type": "string",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "categoryId": {
            "type": "string",
            "format": "uuid"
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "PREVIEW",
              "PUBLISHED",
              "ARCHIVED"
            ]
          },
          "readTimeMinutes": {
            "type": "number",
            "example": 3
          },
          "isFeatured": {
            "type": "boolean",
            "example": false
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "publishedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/HelpCategoryDto"
          }
        },
        "required": [
          "id",
          "slug",
          "title",
          "content",
          "categoryId",
          "locale",
          "status",
          "readTimeMinutes",
          "isFeatured",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_HelpArticleDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HelpArticleDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_HelpArticleDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/HelpArticleDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateHelpArticleDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "content": {
            "type": "string",
            "minLength": 1
          },
          "excerpt": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "categoryId": {
            "type": "string"
          },
          "readTimeMinutes": {
            "type": "number"
          },
          "isFeatured": {
            "type": "boolean"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "slug",
          "title",
          "content",
          "categoryId"
        ]
      },
      "UpdateHelpArticleDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "icon": {
            "type": "string"
          },
          "categoryId": {
            "type": "string"
          },
          "readTimeMinutes": {
            "type": "number"
          },
          "isFeatured": {
            "type": "boolean"
          }
        }
      },
      "FaqCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string",
            "example": "getting-started"
          },
          "name": {
            "type": "string",
            "example": "Getting Started"
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "sortOrder",
          "locale",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_FaqCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaqCategoryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateFaqCategoryDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "sortOrder": {
            "type": "number"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "slug",
          "name"
        ]
      },
      "UpdateFaqCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "sortOrder": {
            "type": "number"
          }
        }
      },
      "FaqItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "question": {
            "type": "string",
            "example": "What is bio.re?"
          },
          "answer": {
            "type": "string",
            "example": "bio.re is a link-in-bio platform..."
          },
          "categoryId": {
            "type": "string",
            "format": "uuid"
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "PREVIEW",
              "PUBLISHED",
              "ARCHIVED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/FaqCategoryDto"
          }
        },
        "required": [
          "id",
          "question",
          "answer",
          "categoryId",
          "sortOrder",
          "locale",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_FaqItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaqItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_FaqItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/FaqItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateFaqItemDto": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "minLength": 1
          },
          "answer": {
            "type": "string",
            "minLength": 1
          },
          "categoryId": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "tr",
              "de",
              "es",
              "fr",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru",
              "pl",
              "nl",
              "sv",
              "no",
              "da",
              "fi",
              "he",
              "uk"
            ]
          }
        },
        "required": [
          "question",
          "answer",
          "categoryId"
        ]
      },
      "UpdateFaqItemDto": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string"
          },
          "answer": {
            "type": "string"
          },
          "categoryId": {
            "type": "string"
          },
          "sortOrder": {
            "type": "number"
          }
        }
      },
      "ContactMessageListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "READ",
              "RESOLVED",
              "ARCHIVED"
            ]
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "email",
          "subject",
          "status",
          "createdAt"
        ]
      },
      "PaginatedData_ContactMessageListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactMessageListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_ContactMessageListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_ContactMessageListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ContactMessageStatsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "pending": {
            "type": "number"
          },
          "read": {
            "type": "number"
          },
          "resolved": {
            "type": "number"
          },
          "archived": {
            "type": "number"
          }
        },
        "required": [
          "total",
          "pending",
          "read",
          "resolved",
          "archived"
        ]
      },
      "ApiResponse_ContactMessageStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ContactMessageStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ContactMessageDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "READ",
              "RESOLVED",
              "ARCHIVED"
            ]
          },
          "ipAddress": {
            "type": "string",
            "nullable": true
          },
          "userAgent": {
            "type": "string",
            "nullable": true
          },
          "adminNotes": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "repliedAt": {
            "format": "date-time",
            "type": "string",
            "nullable": true
          },
          "repliedBy": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "email",
          "subject",
          "message",
          "status",
          "createdAt",
          "updatedAt"
        ]
      },
      "ApiResponse_ContactMessageDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ContactMessageDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateContactStatusDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "READ",
              "RESOLVED",
              "ARCHIVED"
            ],
            "description": "New status"
          }
        },
        "required": [
          "status"
        ]
      },
      "ReplyContactMessageDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string",
            "minLength": 10,
            "maxLength": 5000,
            "description": "Reply message body (min 10, max 5000 chars)"
          }
        },
        "required": [
          "body"
        ]
      },
      "BulkUpdateContactStatusDto": {
        "type": "object",
        "properties": {
          "ids": {
            "description": "Array of contact message IDs",
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "READ",
              "RESOLVED",
              "ARCHIVED"
            ],
            "description": "Target status for bulk update"
          }
        },
        "required": [
          "ids",
          "status"
        ]
      },
      "BulkUpdateResultDto": {
        "type": "object",
        "properties": {
          "processed": {
            "type": "number",
            "description": "Number of successfully processed items"
          },
          "failed": {
            "description": "Array of failed items with error details",
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "processed",
          "failed"
        ]
      },
      "ApiResponse_BulkUpdateResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BulkUpdateResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CookieCategoryNameDto": {
        "type": "object",
        "properties": {
          "en": {
            "type": "string",
            "example": "Essential"
          },
          "tr": {
            "type": "string",
            "example": "Zorunlu"
          }
        },
        "required": [
          "en",
          "tr"
        ]
      },
      "CookieCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "essential"
          },
          "required": {
            "type": "boolean",
            "example": true
          },
          "name": {
            "$ref": "#/components/schemas/CookieCategoryNameDto"
          },
          "description": {
            "$ref": "#/components/schemas/CookieCategoryNameDto"
          }
        },
        "required": [
          "id",
          "required",
          "name",
          "description"
        ]
      },
      "CookiePolicyDto": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CookieCategoryDto"
            }
          }
        },
        "required": [
          "categories"
        ]
      },
      "ApiResponse_CookiePolicyDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CookiePolicyDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CookieConsentDto": {
        "type": "object",
        "properties": {}
      },
      "ConsentSavedDto": {
        "type": "object",
        "properties": {
          "saved": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "saved"
        ]
      },
      "ApiResponse_ConsentSavedDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ConsentSavedDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicCmsPageListItemDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "about-us"
          },
          "title": {
            "type": "string",
            "example": "About Us"
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "slug",
          "title",
          "locale"
        ]
      },
      "ArrayApiResponse_PublicCmsPageListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicCmsPageListItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicCmsPageDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "about-us"
          },
          "title": {
            "type": "string",
            "example": "About Us"
          },
          "content": {
            "type": "string",
            "example": "<p>Sanitized HTML content</p>",
            "description": "Server-side sanitized HTML"
          },
          "locale": {
            "type": "string",
            "example": "en"
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "slug",
          "title",
          "content",
          "locale"
        ]
      },
      "ApiResponse_PublicCmsPageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicCmsPageDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicBlogCategoryEmbedDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "product-updates"
          },
          "name": {
            "type": "string",
            "example": "Product Updates"
          }
        },
        "required": [
          "slug",
          "name"
        ]
      },
      "PublicBlogListItemDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "introducing-biore"
          },
          "title": {
            "type": "string",
            "example": "Introducing BIO.RE"
          },
          "excerpt": {
            "type": "string",
            "nullable": true,
            "example": "A short excerpt of the post..."
          },
          "featuredImage": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/blog/cover.jpg"
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicBlogCategoryEmbedDto"
            }
          }
        },
        "required": [
          "slug",
          "title",
          "categories"
        ]
      },
      "PublicBlogListDataDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicBlogListItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 42
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "totalPages": {
            "type": "number",
            "example": 3
          }
        },
        "required": [
          "items",
          "total",
          "page",
          "limit",
          "totalPages"
        ]
      },
      "ApiResponse_PublicBlogListDataDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicBlogListDataDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicBlogPostDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "introducing-biore"
          },
          "title": {
            "type": "string",
            "example": "Introducing BIO.RE"
          },
          "excerpt": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "example": "<p>Sanitized HTML content</p>",
            "description": "Server-side sanitized HTML"
          },
          "featuredImage": {
            "type": "string",
            "nullable": true,
            "example": "https://cdn.bio.re/blog/cover.jpg"
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicBlogCategoryEmbedDto"
            }
          }
        },
        "required": [
          "slug",
          "title",
          "content",
          "categories"
        ]
      },
      "ApiResponse_PublicBlogPostDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicBlogPostDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicAnnouncementDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "example": "Scheduled Maintenance"
          },
          "content": {
            "type": "string",
            "example": "<p>We will be down for maintenance...</p>",
            "description": "Server-side sanitized HTML"
          },
          "type": {
            "type": "string",
            "example": "INFO",
            "description": "INFO | WARNING | CRITICAL | MAINTENANCE"
          },
          "locale": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "startsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "endsAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "title",
          "content",
          "type"
        ]
      },
      "ArrayApiResponse_PublicAnnouncementDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAnnouncementDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicHelpCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string",
            "example": "payments"
          },
          "name": {
            "type": "string",
            "example": "Payments & Billing"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true,
            "example": "credit-card"
          },
          "iconBackground": {
            "type": "string",
            "nullable": true,
            "example": "#F0F4FF"
          },
          "sortOrder": {
            "type": "number",
            "example": 1
          },
          "articleCount": {
            "type": "number",
            "example": 12,
            "description": "Number of published articles in this category"
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "sortOrder",
          "articleCount"
        ]
      },
      "ArrayApiResponse_PublicHelpCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicHelpCategoryDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicHelpCategoryEmbedDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "payments"
          },
          "name": {
            "type": "string",
            "example": "Payments & Billing"
          }
        },
        "required": [
          "slug",
          "name"
        ]
      },
      "PublicHelpArticleListItemDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "how-to-withdraw"
          },
          "title": {
            "type": "string",
            "example": "How to Withdraw Funds"
          },
          "excerpt": {
            "type": "string",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "readTimeMinutes": {
            "type": "number",
            "nullable": true
          },
          "isFeatured": {
            "type": "boolean",
            "example": false
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/PublicHelpCategoryEmbedDto"
          }
        },
        "required": [
          "slug",
          "title",
          "isFeatured",
          "category"
        ]
      },
      "PublicHelpArticleListDataDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicHelpArticleListItemDto"
            }
          },
          "total": {
            "type": "number",
            "example": 30
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "totalPages": {
            "type": "number",
            "example": 2
          }
        },
        "required": [
          "items",
          "total",
          "page",
          "limit",
          "totalPages"
        ]
      },
      "ApiResponse_PublicHelpArticleListDataDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicHelpArticleListDataDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicHelpArticleDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "how-to-withdraw"
          },
          "title": {
            "type": "string",
            "example": "How to Withdraw Funds"
          },
          "content": {
            "type": "string",
            "example": "<p>Sanitized HTML content</p>",
            "description": "Server-side sanitized HTML"
          },
          "excerpt": {
            "type": "string",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "readTimeMinutes": {
            "type": "number",
            "nullable": true
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/PublicHelpCategoryEmbedDto"
          }
        },
        "required": [
          "slug",
          "title",
          "content",
          "category"
        ]
      },
      "ApiResponse_PublicHelpArticleDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicHelpArticleDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PublicFaqItemDto": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "example": "How do I reset my password?"
          },
          "answer": {
            "type": "string",
            "example": "<p>Click Forgot Password...</p>",
            "description": "Server-side sanitized HTML"
          }
        },
        "required": [
          "question",
          "answer"
        ]
      },
      "PublicFaqGroupDto": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "example": "account"
          },
          "name": {
            "type": "string",
            "example": "Account"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicFaqItemDto"
            }
          }
        },
        "required": [
          "slug",
          "name",
          "items"
        ]
      },
      "ArrayApiResponse_PublicFaqGroupDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicFaqGroupDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SubmitContactDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "example": "John Doe"
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "john@example.com"
          },
          "subject": {
            "type": "string",
            "minLength": 3,
            "maxLength": 200,
            "example": "Feature Request"
          },
          "message": {
            "type": "string",
            "minLength": 10,
            "maxLength": 5000,
            "example": "I would like to suggest a new feature for the platform."
          },
          "captchaToken": {
            "type": "string",
            "description": "Captcha token from active provider (Turnstile | reCAPTCHA — admin selects via external.captcha.active_provider)"
          },
          "turnstileToken": {
            "type": "string",
            "deprecated": true,
            "description": "Deprecated alias for captchaToken — accepted for 1 sprint backwards-compat"
          }
        },
        "required": [
          "email",
          "subject",
          "message"
        ]
      },
      "PresenceLastSeenDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "example": "00000000-0000-4000-8000-000000000001",
            "description": "Target user UUID"
          },
          "lastSeen": {
            "type": "string",
            "nullable": true,
            "example": "2026-04-24T12:34:56.000Z",
            "description": "ISO-8601 timestamp of the last time the user disconnected. null when never online, TTL expired, or suppressed for privacy."
          },
          "isOnline": {
            "type": "boolean",
            "example": false,
            "description": "True when the user currently has at least one connected socket."
          }
        },
        "required": [
          "userId",
          "isOnline"
        ]
      },
      "ApiResponse_PresenceLastSeenDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PresenceLastSeenDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TicketCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Billing & Payments"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "active": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "number",
            "example": 1
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "priority",
          "active",
          "sortOrder",
          "createdAt",
          "updatedAt"
        ]
      },
      "TicketListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "categoryId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "subject": {
            "type": "string",
            "example": "Payout delayed by 3 days"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "ASSIGNED",
              "IN_PROGRESS",
              "WAITING_USER",
              "WAITING_INTERNAL",
              "RESOLVED",
              "CLOSED"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "assignedTo": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "resolvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "closedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/TicketCategoryDto"
          }
        },
        "required": [
          "id",
          "userId",
          "subject",
          "status",
          "priority",
          "createdAt",
          "updatedAt",
          "category"
        ]
      },
      "PaginatedData_TicketListItemDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TicketListItemDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_TicketListItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_TicketListItemDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateTicketDto": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "minLength": 3,
            "maxLength": 200,
            "description": "Ticket subject",
            "example": "Payment not received"
          },
          "content": {
            "type": "string",
            "minLength": 10,
            "maxLength": 5000,
            "description": "Ticket content / description",
            "example": "I sent a message 3 days ago but the creator has not responded and my payment is still held."
          },
          "categoryId": {
            "type": "string",
            "description": "Support category ID",
            "example": "cat_payments"
          },
          "priority": {
            "type": "string",
            "description": "Ticket priority",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ],
            "example": "MEDIUM"
          }
        },
        "required": [
          "subject",
          "content"
        ]
      },
      "CreateTicketResponseDto": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string",
            "format": "uuid",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          }
        },
        "required": [
          "ticketId"
        ]
      },
      "ApiResponse_CreateTicketResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreateTicketResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TicketMessageEmbedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "authorId": {
            "type": "string",
            "format": "uuid"
          },
          "authorType": {
            "type": "string",
            "enum": [
              "USER",
              "AGENT"
            ]
          },
          "content": {
            "type": "string",
            "example": "Details about: Payout delayed by 3 days"
          },
          "isInternal": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "ticketId",
          "authorId",
          "authorType",
          "content",
          "isInternal",
          "createdAt"
        ]
      },
      "TicketDetailDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "categoryId": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "subject": {
            "type": "string",
            "example": "Payout delayed by 3 days"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "ASSIGNED",
              "IN_PROGRESS",
              "WAITING_USER",
              "WAITING_INTERNAL",
              "RESOLVED",
              "CLOSED"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "assignedTo": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "resolvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "closedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "category": {
            "$ref": "#/components/schemas/TicketCategoryDto"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TicketMessageEmbedDto"
            }
          }
        },
        "required": [
          "id",
          "userId",
          "subject",
          "status",
          "priority",
          "createdAt",
          "updatedAt",
          "category",
          "messages"
        ]
      },
      "ApiResponse_TicketDetailDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TicketDetailDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ReplyTicketDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000,
            "description": "Reply content",
            "example": "We are looking into this issue."
          },
          "isInternal": {
            "type": "boolean",
            "description": "Whether this is an internal note (not visible to user)",
            "example": false,
            "default": false
          }
        },
        "required": [
          "content"
        ]
      },
      "SupportStatsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 150
          },
          "open": {
            "type": "number",
            "example": 20
          },
          "assigned": {
            "type": "number",
            "example": 30
          },
          "resolved": {
            "type": "number",
            "example": 60
          },
          "closed": {
            "type": "number",
            "example": 40
          }
        },
        "required": [
          "total",
          "open",
          "assigned",
          "resolved",
          "closed"
        ]
      },
      "ApiResponse_SupportStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SupportStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "SlaBreachTicketDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "ASSIGNED",
              "IN_PROGRESS"
            ]
          }
        },
        "required": [
          "id",
          "priority",
          "createdAt",
          "status"
        ]
      },
      "SlaBreachDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 50
          },
          "breached": {
            "type": "number",
            "example": 5
          },
          "tickets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlaBreachTicketDto"
            }
          }
        },
        "required": [
          "total",
          "breached",
          "tickets"
        ]
      },
      "ApiResponse_SlaBreachDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/SlaBreachDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PaginatedData_TicketCategoryDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TicketCategoryDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_TicketCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_TicketCategoryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_TicketCategoryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/TicketCategoryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateTicketCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Category name (unique)",
            "example": "Payments"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "description": "Category description",
            "example": "Payment-related issues"
          },
          "priority": {
            "type": "string",
            "description": "Default priority for tickets in this category",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ],
            "default": "MEDIUM"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the category is active",
            "default": true
          },
          "sortOrder": {
            "type": "number",
            "description": "Sort order for display",
            "default": 0
          }
        },
        "required": [
          "name"
        ]
      },
      "UpdateTicketCategoryDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Category name (unique)",
            "example": "Payments"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "description": "Category description",
            "example": "Payment-related issues"
          },
          "priority": {
            "type": "string",
            "description": "Default priority for tickets in this category",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              "URGENT"
            ]
          },
          "active": {
            "type": "boolean",
            "description": "Whether the category is active"
          },
          "sortOrder": {
            "type": "number",
            "description": "Sort order for display"
          }
        }
      },
      "AssignTicketDto": {
        "type": "object",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "Agent user ID to assign the ticket to",
            "example": "cuid_agent_456"
          }
        },
        "required": [
          "agentId"
        ]
      },
      "BulkAssignTicketsDto": {
        "type": "object",
        "properties": {
          "ticketIds": {
            "maxItems": 50,
            "description": "Ticket IDs to assign (max 50)",
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "assigneeId": {
            "type": "string",
            "format": "uuid",
            "description": "Agent ID to assign tickets to"
          }
        },
        "required": [
          "ticketIds",
          "assigneeId"
        ]
      },
      "BulkAssignFailedItemDto": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "error": {
            "type": "string",
            "example": "Ticket not found"
          }
        },
        "required": [
          "ticketId",
          "error"
        ]
      },
      "BulkAssignResultDto": {
        "type": "object",
        "properties": {
          "processed": {
            "type": "number",
            "example": 8,
            "description": "Number of tickets successfully assigned"
          },
          "failed": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkAssignFailedItemDto"
            }
          }
        },
        "required": [
          "processed",
          "failed"
        ]
      },
      "ApiResponse_BulkAssignResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/BulkAssignResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CannedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "example": "Payment Delay"
          },
          "content": {
            "type": "string",
            "example": "We apologize for the delay. Your payment is being processed."
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "locale": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "sortOrder": {
            "type": "number",
            "example": 0
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "title",
          "content",
          "active",
          "sortOrder",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_CannedResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CannedResponseDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateCannedResponseDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Canned response title",
            "example": "Payment Delay"
          },
          "content": {
            "type": "string",
            "description": "Canned response content template",
            "example": "We apologize for the delay. Your payment is being processed and should arrive within 24 hours."
          },
          "category": {
            "type": "string",
            "description": "Category for organizing canned responses",
            "example": "payments"
          },
          "locale": {
            "type": "string",
            "description": "Locale code for the response",
            "example": "en"
          }
        },
        "required": [
          "title",
          "content"
        ]
      },
      "CreateIdResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id"
        ]
      },
      "ApiResponse_CreateIdResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CreateIdResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateCannedResponseDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Updated title",
            "example": "Payment Delay v2"
          },
          "content": {
            "type": "string",
            "description": "Updated content template",
            "example": "We apologize for the delay..."
          },
          "category": {
            "type": "string",
            "description": "Updated category",
            "example": "payments"
          }
        }
      },
      "ApiResponse_CannedResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/CannedResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LegalDocumentDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "example": "<p>Privacy Policy content...</p>",
            "description": "HTML content of the legal document"
          },
          "lastUpdated": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "description": "ISO timestamp of last update, or null if never updated"
          }
        },
        "required": [
          "content"
        ]
      },
      "ApiResponse_LegalDocumentDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LegalDocumentDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ArrayApiResponse_ThemePresetDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ThemePresetDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_ThemePresetDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ThemePresetDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateThemePresetDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "target": {
            "type": "string",
            "enum": [
              "ADMIN",
              "CLIENT"
            ]
          },
          "lightTokens": {
            "type": "object"
          },
          "darkTokens": {
            "type": "object"
          },
          "typography": {
            "type": "object"
          },
          "layout": {
            "type": "object"
          },
          "assets": {
            "type": "object"
          },
          "description": {
            "type": "string"
          },
          "thumbnail": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "target",
          "lightTokens",
          "darkTokens",
          "typography",
          "layout"
        ]
      },
      "UpdateThemePresetDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "lightTokens": {
            "type": "object"
          },
          "darkTokens": {
            "type": "object"
          },
          "typography": {
            "type": "object"
          },
          "layout": {
            "type": "object"
          },
          "assets": {
            "type": "object"
          },
          "description": {
            "type": "string"
          },
          "thumbnail": {
            "type": "string"
          }
        }
      },
      "PublicThemePresetDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Default Light"
          },
          "slug": {
            "type": "string",
            "example": "default-light"
          },
          "lightTokens": {
            "type": "object",
            "description": "JSON light mode color tokens"
          },
          "darkTokens": {
            "type": "object",
            "description": "JSON dark mode color tokens"
          },
          "typography": {
            "type": "object",
            "description": "JSON typography settings"
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "lightTokens",
          "darkTokens",
          "typography"
        ]
      },
      "PublicThemeListResponseDto": {
        "type": "object",
        "properties": {
          "themes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicThemePresetDto"
            }
          }
        },
        "required": [
          "themes"
        ]
      },
      "ApiResponse_PublicThemeListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PublicThemeListResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ActiveThemePresetDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "example": "Default Light"
          },
          "slug": {
            "type": "string",
            "example": "default-light"
          },
          "target": {
            "type": "string",
            "enum": [
              "CLIENT",
              "ADMIN"
            ]
          },
          "lightTokens": {
            "type": "object",
            "description": "JSON light mode color tokens"
          },
          "darkTokens": {
            "type": "object",
            "description": "JSON dark mode color tokens"
          },
          "typography": {
            "type": "object",
            "description": "JSON typography settings"
          },
          "layout": {
            "type": "object",
            "description": "JSON layout settings"
          },
          "assets": {
            "type": "object",
            "description": "JSON asset references"
          },
          "publishedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "target",
          "lightTokens",
          "darkTokens",
          "typography",
          "layout",
          "assets"
        ]
      },
      "ActiveThemeResponseDto": {
        "type": "object",
        "properties": {
          "preset": {
            "nullable": true,
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/ActiveThemePresetDto"
              }
            ]
          }
        }
      },
      "ApiResponse_ActiveThemeResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ActiveThemeResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WebhookEndpointCountDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 5
          },
          "active": {
            "type": "number",
            "example": 3
          }
        },
        "required": [
          "total",
          "active"
        ]
      },
      "WebhookPeriodStatsDto": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "example": 120
          },
          "success": {
            "type": "number",
            "example": 110
          },
          "failed": {
            "type": "number",
            "example": 10
          },
          "successRate": {
            "type": "number",
            "example": 91.67,
            "description": "Success rate as percentage"
          }
        },
        "required": [
          "total",
          "success",
          "failed",
          "successRate"
        ]
      },
      "WebhookStatsDto": {
        "type": "object",
        "properties": {
          "endpoints": {
            "$ref": "#/components/schemas/WebhookEndpointCountDto"
          },
          "last24h": {
            "$ref": "#/components/schemas/WebhookPeriodStatsDto"
          },
          "last7d": {
            "$ref": "#/components/schemas/WebhookPeriodStatsDto"
          },
          "pendingRetries": {
            "type": "number",
            "example": 3
          }
        },
        "required": [
          "endpoints",
          "last24h",
          "last7d",
          "pendingRetries"
        ]
      },
      "ApiResponse_WebhookStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WebhookStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WebhookDeliveryCountDto": {
        "type": "object",
        "properties": {
          "deliveries": {
            "type": "number",
            "example": 42
          }
        },
        "required": [
          "deliveries"
        ]
      },
      "WebhookEndpointDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string",
            "example": "https://example.com/webhook"
          },
          "events": {
            "example": "user.created,payment.completed",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "My webhook endpoint"
          },
          "active": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "_count": {
            "$ref": "#/components/schemas/WebhookDeliveryCountDto"
          }
        },
        "required": [
          "id",
          "url",
          "events",
          "active",
          "createdAt",
          "updatedAt"
        ]
      },
      "ApiResponse_WebhookEndpointDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WebhookEndpointDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateWebhookDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Webhook endpoint URL (HTTPS only)",
            "example": "https://example.com/webhook"
          },
          "events": {
            "minItems": 1,
            "description": "Event types to subscribe to",
            "example": [
              "user.created",
              "message.sent"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string",
            "description": "Human-readable description"
          }
        },
        "required": [
          "url",
          "events"
        ]
      },
      "UpdateWebhookDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Webhook endpoint URL (HTTPS only)"
          },
          "events": {
            "minItems": 1,
            "description": "Event types to subscribe to",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "active": {
            "type": "boolean",
            "description": "Whether the endpoint is active"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description"
          }
        }
      },
      "WebhookTestResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "httpStatusCode": {
            "type": "number",
            "nullable": true,
            "example": 200
          },
          "responseBody": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string",
            "example": "Connection refused"
          }
        },
        "required": [
          "success"
        ]
      },
      "ApiResponse_WebhookTestResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WebhookTestResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "WebhookDeliveryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "endpointId": {
            "type": "string",
            "format": "uuid"
          },
          "event": {
            "type": "string",
            "example": "user.created"
          },
          "payload": {
            "type": "object",
            "description": "Delivery payload"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "SUCCESS",
              "FAILED"
            ]
          },
          "attempts": {
            "type": "number",
            "example": 1
          },
          "maxAttempts": {
            "type": "number",
            "example": 3
          },
          "httpStatusCode": {
            "type": "number",
            "nullable": true,
            "example": 200
          },
          "responseBody": {
            "type": "string",
            "nullable": true
          },
          "nextRetryAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "endpointId",
          "event",
          "payload",
          "status",
          "attempts",
          "maxAttempts",
          "createdAt",
          "updatedAt"
        ]
      },
      "PaginatedData_WebhookDeliveryDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookDeliveryDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_WebhookDeliveryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_WebhookDeliveryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ApiResponse_WebhookDeliveryDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/WebhookDeliveryDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "PlatformStatsDto": {
        "type": "object",
        "properties": {
          "totalCreators": {
            "type": "number",
            "example": 1250,
            "description": "Total number of active creators"
          },
          "totalMessagesSent": {
            "type": "number",
            "example": 48320,
            "description": "Total number of messages sent on the platform"
          },
          "totalEarned": {
            "type": "string",
            "example": "125400.00",
            "description": "Total earnings across all creators (Decimal as string)"
          },
          "cachedAt": {
            "type": "string",
            "example": "2026-04-23T12:00:00.000Z",
            "format": "date-time",
            "description": "Timestamp when stats were computed and cached"
          }
        },
        "required": [
          "totalCreators",
          "totalMessagesSent",
          "totalEarned",
          "cachedAt"
        ]
      },
      "ApiResponse_PlatformStatsDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PlatformStatsDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LocaleDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "en",
            "description": "ISO 639-1 language code"
          },
          "name": {
            "type": "string",
            "example": "English"
          },
          "nativeName": {
            "type": "string",
            "example": "English"
          },
          "isRtl": {
            "type": "boolean",
            "example": false,
            "description": "Right-to-left text direction"
          },
          "isDefault": {
            "type": "boolean",
            "example": true,
            "description": "Is this the default locale?"
          }
        },
        "required": [
          "code",
          "name",
          "nativeName",
          "isRtl",
          "isDefault"
        ]
      },
      "LocaleListResponseDto": {
        "type": "object",
        "properties": {
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocaleDto"
            }
          },
          "versions": {
            "type": "object",
            "description": "Version map per locale code — clients use to know when to re-fetch bundles",
            "example": {
              "en": 42,
              "tr": 15
            },
            "additionalProperties": {
              "type": "number"
            }
          }
        },
        "required": [
          "locales",
          "versions"
        ]
      },
      "ApiResponse_LocaleListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LocaleListResponseDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "LanguageDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": "en"
          },
          "name": {
            "type": "string",
            "example": "English"
          },
          "nativeName": {
            "type": "string",
            "example": "English"
          },
          "active": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          },
          "isRtl": {
            "type": "boolean"
          },
          "fallbackCode": {
            "type": "string",
            "nullable": true,
            "example": "en"
          },
          "sortOrder": {
            "type": "number",
            "example": 1
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "code",
          "name",
          "nativeName",
          "active",
          "isDefault",
          "isRtl",
          "sortOrder",
          "createdAt",
          "updatedAt"
        ]
      },
      "ArrayApiResponse_LanguageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LanguageDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "CreateLanguageDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "pattern": "^[a-z]{2,5}$",
            "example": "de",
            "description": "ISO 639-1 code (2-5 lowercase chars)"
          },
          "name": {
            "type": "string",
            "maxLength": 100,
            "example": "German"
          },
          "nativeName": {
            "type": "string",
            "maxLength": 100,
            "example": "Deutsch"
          },
          "active": {
            "type": "boolean",
            "default": false
          },
          "isRtl": {
            "type": "boolean",
            "default": false
          },
          "fallbackCode": {
            "type": "string",
            "maxLength": 5,
            "example": "en"
          },
          "sortOrder": {
            "type": "number",
            "minimum": 0,
            "maximum": 999,
            "example": 2
          }
        },
        "required": [
          "code",
          "name",
          "nativeName"
        ]
      },
      "ApiResponse_LanguageDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LanguageDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateLanguageDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "nativeName": {
            "type": "string",
            "maxLength": 100
          },
          "active": {
            "type": "boolean"
          },
          "isDefault": {
            "type": "boolean"
          },
          "isRtl": {
            "type": "boolean"
          },
          "fallbackCode": {
            "type": "string",
            "maxLength": 5
          },
          "sortOrder": {
            "type": "number",
            "minimum": 0,
            "maximum": 999
          }
        }
      },
      "LanguageDeleteResultDto": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "example": true
          },
          "translationsRemoved": {
            "type": "number",
            "example": 3661,
            "description": "Number of translations cascade-deleted"
          }
        },
        "required": [
          "deleted",
          "translationsRemoved"
        ]
      },
      "ApiResponse_LanguageDeleteResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/LanguageDeleteResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TranslationStatusSummaryDto": {
        "type": "object",
        "properties": {
          "languageCode": {
            "type": "string",
            "example": "en"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "APPROVED",
              "NEEDS_REVIEW"
            ]
          }
        },
        "required": [
          "languageCode",
          "status"
        ]
      },
      "TranslationKeyDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "namespace": {
            "type": "string",
            "example": "auth"
          },
          "key": {
            "type": "string",
            "example": "login.submit"
          },
          "context": {
            "type": "string",
            "nullable": true,
            "example": "Button label for login form"
          },
          "deprecated": {
            "type": "boolean"
          },
          "translations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationStatusSummaryDto"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "namespace",
          "key",
          "deprecated",
          "translations",
          "createdAt",
          "updatedAt"
        ]
      },
      "PaginatedData_TranslationKeyDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationKeyDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_TranslationKeyDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_TranslationKeyDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "TranslationKeyEmbedDto": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string",
            "example": "auth"
          },
          "key": {
            "type": "string",
            "example": "login.submit"
          },
          "context": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "namespace",
          "key"
        ]
      },
      "TranslationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "translationKeyId": {
            "type": "string",
            "format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "example": "en"
          },
          "value": {
            "type": "string",
            "example": "Sign in"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "APPROVED",
              "NEEDS_REVIEW"
            ]
          },
          "approvedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "approvedAt": {
            "type": "string",
            "nullable": true,
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "nullable": true,
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "translationKey": {
            "$ref": "#/components/schemas/TranslationKeyEmbedDto"
          }
        },
        "required": [
          "id",
          "translationKeyId",
          "languageCode",
          "value",
          "status",
          "createdAt",
          "updatedAt",
          "translationKey"
        ]
      },
      "PaginatedData_TranslationDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationDto"
            }
          },
          "page": {
            "type": "number",
            "example": 1
          },
          "limit": {
            "type": "number",
            "example": 20
          },
          "total": {
            "type": "number",
            "example": 150
          },
          "totalPages": {
            "type": "number",
            "example": 8
          }
        },
        "required": [
          "items",
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "PaginatedApiResponse_TranslationDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/PaginatedData_TranslationDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "UpdateTranslationDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "maxLength": 10000
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "APPROVED"
            ]
          }
        }
      },
      "BulkTranslationItemDto": {
        "type": "object",
        "properties": {
          "translationKeyId": {
            "type": "string"
          },
          "languageCode": {
            "type": "string",
            "maxLength": 5
          },
          "value": {
            "type": "string",
            "maxLength": 10000
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "APPROVED"
            ]
          }
        },
        "required": [
          "translationKeyId",
          "languageCode",
          "value"
        ]
      },
      "BulkUpdateTranslationsDto": {
        "type": "object",
        "properties": {
          "translations": {
            "minItems": 1,
            "maxItems": 500,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkTranslationItemDto"
            }
          }
        },
        "required": [
          "translations"
        ]
      },
      "TranslationCoverageItemDto": {
        "type": "object",
        "properties": {
          "languageCode": {
            "type": "string",
            "example": "en"
          },
          "namespace": {
            "type": "string",
            "example": "auth"
          },
          "total": {
            "type": "number",
            "example": 120
          },
          "translated": {
            "type": "number",
            "example": 118
          },
          "approved": {
            "type": "number",
            "example": 95
          },
          "percent": {
            "type": "number",
            "example": 98,
            "description": "Translated percentage (0-100)"
          }
        },
        "required": [
          "languageCode",
          "namespace",
          "total",
          "translated",
          "approved",
          "percent"
        ]
      },
      "ArrayApiResponse_TranslationCoverageItemDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationCoverageItemDto"
            }
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ImportJsonDto": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 5,
            "example": "de"
          },
          "namespace": {
            "type": "string",
            "maxLength": 50,
            "example": "common"
          },
          "data": {
            "type": "object",
            "description": "Flat key-value JSON object"
          }
        },
        "required": [
          "locale",
          "data"
        ]
      },
      "ImportResultDto": {
        "type": "object",
        "properties": {
          "created": {
            "type": "number",
            "example": 15
          },
          "updated": {
            "type": "number",
            "example": 42
          },
          "skipped": {
            "type": "number",
            "example": 3,
            "description": "Entries skipped (key not in registry or value unchanged)"
          }
        },
        "required": [
          "created",
          "updated",
          "skipped"
        ]
      },
      "ApiResponse_ImportResultDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "data": {
            "$ref": "#/components/schemas/ImportResultDto"
          }
        },
        "required": [
          "success",
          "data"
        ]
      },
      "ImportCsvDto": {
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 5,
            "example": "de"
          },
          "data": {
            "type": "string",
            "maxLength": 5000000,
            "description": "CSV string (namespace,key,value)"
          }
        },
        "required": [
          "locale",
          "data"
        ]
      }
    }
  },
  "tags": []
}