{
  "openapi": "3.0.0",
  "paths": {
    "/api/v1/health/live": {
      "get": {
        "operationId": "Health_live",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Process liveness",
        "tags": ["health"]
      }
    },
    "/api/v1/health/ready": {
      "get": {
        "operationId": "Health_ready",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Dependency readiness",
        "tags": ["health"]
      }
    },
    "/api/v1/version": {
      "get": {
        "operationId": "Version_version",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Application version",
        "tags": ["system"]
      }
    },
    "/api/v1/outbox/sample": {
      "post": {
        "operationId": "Outbox_create",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SampleOutboxDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create a sample transactional outbox event",
        "tags": ["outbox"]
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "operationId": "Auth_login",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordLoginDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Sign in with mobile, username, or Iranian national identity code",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/panel/login": {
      "post": {
        "operationId": "Auth_panelLogin",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordLoginDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Sign in to the management panel",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/registration/otp": {
      "post": {
        "operationId": "Auth_requestRegistrationOtp",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestRegistrationOtpDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Send an Iranian registration OTP",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/registration/otp/verify": {
      "post": {
        "operationId": "Auth_verifyRegistrationOtp",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyRegistrationOtpDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Verify an Iranian registration OTP",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/refresh": {
      "post": {
        "operationId": "Auth_refresh",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshTokenDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Rotate a refresh token and issue a new token pair",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "operationId": "Auth_logout",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshTokenDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Revoke an authentication session",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/password/forgot": {
      "post": {
        "operationId": "Auth_forgotPassword",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestPasswordResetDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Request a password reset OTP by SMS",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/password/verify": {
      "post": {
        "operationId": "Auth_verifyPasswordReset",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyPasswordResetDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Verify a password reset OTP",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/password/reset": {
      "post": {
        "operationId": "Auth_resetPassword",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompletePasswordResetDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Set a new password after OTP verification",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/password/change": {
      "post": {
        "operationId": "Auth_changePassword",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Change password using the current password",
        "tags": ["authentication"]
      }
    },
    "/api/v1/auth/development-login": {
      "post": {
        "operationId": "Auth_developmentLogin",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DevelopmentLoginDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Development-only login",
        "tags": ["authentication"]
      }
    },
    "/api/v1/users/me": {
      "get": {
        "operationId": "Auth_me",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Current authenticated user",
        "tags": ["authentication"]
      }
    },
    "/api/v1/panel/users": {
      "get": {
        "operationId": "PanelUsers_list",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List management panel users",
        "tags": ["panel-users"]
      },
      "post": {
        "operationId": "PanelUsers_create",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePanelUserDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create a management panel user",
        "tags": ["panel-users"]
      }
    },
    "/api/v1/panel/users/{userId}/access": {
      "post": {
        "operationId": "PanelUsers_updateAccess",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePanelUserAccessDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update panel user roles and permissions",
        "tags": ["panel-users"]
      }
    },
    "/api/v1/panel/app-users": {
      "get": {
        "operationId": "AppUsers_list",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "query",
            "required": false,
            "in": "query",
            "schema": {
              "maxLength": 100,
              "type": "string"
            }
          },
          {
            "name": "verificationLevel",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["LEVEL_1", "LEVEL_2", "LEVEL_3"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List application users for panel review",
        "tags": ["app-users"]
      }
    },
    "/api/v1/panel/app-users/{userId}": {
      "get": {
        "operationId": "AppUsers_get",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get an application user review detail",
        "tags": ["app-users"]
      },
      "patch": {
        "operationId": "AppUsers_update",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAppUserDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update editable application user profile fields",
        "tags": ["app-users"]
      }
    },
    "/api/v1/identity/usernames/{username}/availability": {
      "get": {
        "operationId": "Identity_usernameAvailability",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Check whether a public username is available",
        "tags": ["identity"]
      }
    },
    "/api/v1/identity/registrations": {
      "post": {
        "operationId": "Identity_register",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterIdentityDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Registration completed after required verification"
          }
        },
        "summary": "Register an app user; Iranian registrations include national identity verification",
        "tags": ["identity"]
      }
    },
    "/api/v1/identity/me/verification": {
      "get": {
        "operationId": "Identity_getMyProgress",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get the current app user's verification progress",
        "tags": ["identity"]
      }
    },
    "/api/v1/identity/me/verifications/biometric": {
      "post": {
        "operationId": "Identity_verifyMyBiometric",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartBiometricVerificationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Perform biometric verification for the current app user",
        "tags": ["identity"]
      }
    },
    "/api/v1/identity/users/{userId}/verification": {
      "get": {
        "operationId": "Identity_getProgress",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get the user's identity verification progress",
        "tags": ["identity"]
      }
    },
    "/api/v1/identity/users/{userId}/verifications/biometric": {
      "post": {
        "operationId": "Identity_verifyBiometric",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartBiometricVerificationDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Perform purpose-bound biometric step-up verification",
        "tags": ["identity"]
      }
    },
    "/api/v1/profile/me": {
      "get": {
        "operationId": "Profile_getMe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get the current application user's profile",
        "tags": ["profile"]
      },
      "patch": {
        "operationId": "Profile_updateMe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMyProfileDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update editable current-user profile fields",
        "tags": ["profile"]
      }
    },
    "/api/v1/profile/me/avatar": {
      "put": {
        "operationId": "Profile_updateAvatar",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": ["profileImage"],
                "properties": {
                  "profileImage": {
                    "type": "string",
                    "format": "binary",
                    "description": "JPEG, PNG or WebP; maximum 5 MiB"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Replace the current user's canonical avatar",
        "tags": ["profile"]
      },
      "delete": {
        "operationId": "Profile_remove",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Remove the current user's avatar",
        "tags": ["profile"]
      }
    },
    "/api/v1/profile/users/{userId}/avatar": {
      "get": {
        "operationId": "Profile_download",
        "parameters": [
          {
            "name": "userId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Read the canonical avatar used across the app",
        "tags": ["profile"]
      }
    },
    "/api/v1/social/profiles": {
      "get": {
        "operationId": "Social_searchProfiles",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "q",
            "required": true,
            "in": "query",
            "schema": {
              "minLength": 2,
              "maxLength": 100,
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Search personal social profiles",
        "tags": ["social"]
      }
    },
    "/api/v1/social/profiles/{username}": {
      "get": {
        "operationId": "Social_profile",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Read a personal social profile",
        "tags": ["social"]
      }
    },
    "/api/v1/social/profiles/{username}/report": {
      "post": {
        "operationId": "Social_reportProfile",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportSocialContentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Report another application user profile",
        "tags": ["social"]
      }
    },
    "/api/v1/social/me/profile": {
      "put": {
        "operationId": "Social_updateProfile",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSocialProfileDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update the current personal social profile",
        "tags": ["social"]
      }
    },
    "/api/v1/social/profiles/{username}/follow": {
      "post": {
        "operationId": "Social_follow",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Follow a profile or request access if private",
        "tags": ["social"]
      },
      "delete": {
        "operationId": "Social_unfollow",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Unfollow a profile or cancel a pending request",
        "tags": ["social"]
      }
    },
    "/api/v1/social/me/follow-requests": {
      "get": {
        "operationId": "Social_listRequests",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/me/follow-requests/{followerId}": {
      "put": {
        "operationId": "Social_decideRequest",
        "parameters": [
          {
            "name": "followerId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FollowDecisionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/profiles/{username}/followers": {
      "get": {
        "operationId": "Social_followers",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/profiles/{username}/following": {
      "get": {
        "operationId": "Social_following",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/media": {
      "post": {
        "operationId": "Social_createPostWithMedia",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": ["media"],
                "properties": {
                  "caption": {
                    "type": "string",
                    "maxLength": 2200
                  },
                  "visibility": {
                    "type": "string",
                    "enum": ["PUBLIC", "FOLLOWERS"]
                  },
                  "media": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 10,
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "1-10 JPEG/PNG/WebP images or MP4/MOV videos. Raw videos are converted asynchronously for playback."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create a social post with an image/video gallery",
        "tags": ["social"]
      }
    },
    "/api/v1/social/feed": {
      "get": {
        "operationId": "Social_feed",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/feed/unread-count": {
      "get": {
        "operationId": "Social_unreadFeedCount",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get unseen Capilagram feed post count",
        "tags": ["social"]
      }
    },
    "/api/v1/social/feed/read": {
      "put": {
        "operationId": "Social_markFeedSeen",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark the currently visible Capilagram feed as seen",
        "tags": ["social"]
      }
    },
    "/api/v1/social/profiles/{username}/posts": {
      "get": {
        "operationId": "Social_userPosts",
        "parameters": [
          {
            "name": "username",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/{postId}": {
      "get": {
        "operationId": "Social_post",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      },
      "delete": {
        "operationId": "Social_deletePost",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      },
      "patch": {
        "operationId": "Social_updatePostCaption",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSocialPostDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Edit only the caption of an owned social post",
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/{postId}/media/{mediaId}": {
      "get": {
        "operationId": "Social_postMedia",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mediaId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Download media after checking post visibility",
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/{postId}/media/{mediaId}/cover": {
      "get": {
        "operationId": "Social_postMediaCover",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mediaId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Download the generated video cover",
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/{postId}/report": {
      "post": {
        "operationId": "Social_reportPost",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportSocialContentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Report a visible social post",
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/{postId}/like": {
      "put": {
        "operationId": "Social_like",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      },
      "delete": {
        "operationId": "Social_unlike",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/posts/{postId}/comments": {
      "post": {
        "operationId": "Social_comment",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCommentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      },
      "get": {
        "operationId": "Social_comments",
        "parameters": [
          {
            "name": "postId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/comments/{commentId}": {
      "delete": {
        "operationId": "Social_deleteComment",
        "parameters": [
          {
            "name": "commentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["social"]
      }
    },
    "/api/v1/social/comments/{commentId}/report": {
      "post": {
        "operationId": "Social_reportComment",
        "parameters": [
          {
            "name": "commentId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportSocialContentDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Report a visible social comment",
        "tags": ["social"]
      }
    },
    "/api/v1/panel/social/reports": {
      "get": {
        "operationId": "SocialModeration_list",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "targetType",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["USER", "POST", "COMMENT"]
            }
          },
          {
            "name": "reason",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "SPAM",
                "NUDITY",
                "VIOLENCE",
                "HATE",
                "HARASSMENT",
                "FALSE_INFORMATION",
                "SCAM",
                "INTELLECTUAL_PROPERTY",
                "OTHER"
              ]
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["PENDING", "REVIEWING", "RESOLVED", "REJECTED"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List user, post and comment reports",
        "tags": ["social-moderation"]
      }
    },
    "/api/v1/panel/social/reports/{reportId}/status": {
      "patch": {
        "operationId": "SocialModeration_updateStatus",
        "parameters": [
          {
            "name": "reportId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSocialReportStatusDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update the moderation status of a report",
        "tags": ["social-moderation"]
      }
    },
    "/api/v1/messaging/conversations/direct": {
      "post": {
        "operationId": "Messaging_startDirect",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartDirectConversationDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create or return an existing direct conversation",
        "tags": ["messaging"]
      }
    },
    "/api/v1/messaging/conversations": {
      "get": {
        "operationId": "Messaging_list",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["messaging"]
      }
    },
    "/api/v1/messaging/conversations/unread-count": {
      "get": {
        "operationId": "Messaging_unreadCount",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get the total number of unread chat messages",
        "tags": ["messaging"]
      }
    },
    "/api/v1/messaging/conversations/{conversationId}/messages": {
      "get": {
        "operationId": "Messaging_messages",
        "parameters": [
          {
            "name": "conversationId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["messaging"]
      },
      "post": {
        "operationId": "Messaging_send",
        "parameters": [
          {
            "name": "conversationId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["messaging"]
      }
    },
    "/api/v1/messaging/conversations/{conversationId}/read": {
      "put": {
        "operationId": "Messaging_markRead",
        "parameters": [
          {
            "name": "conversationId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["messaging"]
      }
    },
    "/api/v1/messaging/messages/{messageId}": {
      "delete": {
        "operationId": "Messaging_deleteMessage",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "tags": ["messaging"]
      }
    },
    "/api/v1/cartable/notifications": {
      "get": {
        "operationId": "Cartable_list",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 1,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"]
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": ["SOCIAL_LIKE", "SOCIAL_COMMENT", "SOCIAL_FOLLOW"]
            }
          },
          {
            "name": "unreadOnly",
            "required": false,
            "in": "query",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List persistent user notifications",
        "tags": ["cartable"]
      }
    },
    "/api/v1/cartable/notifications/unread-count": {
      "get": {
        "operationId": "Cartable_unreadCount",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get unread cartable notification count",
        "tags": ["cartable"]
      }
    },
    "/api/v1/cartable/notifications/read-all": {
      "put": {
        "operationId": "Cartable_markAllRead",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark all cartable notifications as read",
        "tags": ["cartable"]
      }
    },
    "/api/v1/cartable/notifications/{notificationId}/read": {
      "put": {
        "operationId": "Cartable_markRead",
        "parameters": [
          {
            "name": "notificationId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark one cartable notification as read",
        "tags": ["cartable"]
      }
    },
    "/api/v1/domains/advertising": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "advertising domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/wallet": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "wallet domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/banking": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "banking domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/travel": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "travel domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/insurance": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "insurance domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/clinic": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "clinic domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/commerce": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "commerce domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/settings": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "settings domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/loyalty": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "loyalty domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/support": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "support domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/notifications": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "notifications domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/media": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "media domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/audit": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "audit domain scaffold",
        "tags": ["domains"]
      }
    },
    "/api/v1/domains/integrations": {
      "get": {
        "operationId": "Placeholder_describe",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "required": false,
            "description": "Response language (fa or en)",
            "schema": {
              "type": "string",
              "enum": ["fa", "en"],
              "default": "fa"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "integrations domain scaffold",
        "tags": ["domains"]
      }
    }
  },
  "info": {
    "title": "Capila Plus API",
    "description": "Versioned REST contracts for the Capila Plus modular monolith",
    "version": "0.1.0",
    "contact": {}
  },
  "tags": [],
  "servers": [],
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http"
      },
      "idempotency": {
        "type": "apiKey",
        "in": "header",
        "name": "Idempotency-Key"
      },
      "correlation": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Correlation-ID"
      }
    },
    "schemas": {
      "SampleOutboxDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "hello"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": ["message"]
      },
      "PasswordLoginDto": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "example": "milad_ahmadi",
            "description": "Mobile number, username, or 10-digit Iranian national identity code"
          },
          "phone": {
            "type": "string",
            "deprecated": true,
            "example": "+989121234567",
            "description": "Legacy panel-client alias; use identifier for new clients"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "writeOnly": true
          },
          "deviceId": {
            "type": "string",
            "maxLength": 120
          }
        },
        "required": ["identifier", "password"]
      },
      "RequestRegistrationOtpDto": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "example": "+989121234567"
          }
        },
        "required": ["phone"]
      },
      "VerifyRegistrationOtpDto": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          },
          "otp": {
            "type": "string",
            "example": "123456"
          }
        },
        "required": ["requestId", "otp"]
      },
      "RefreshTokenDto": {
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string",
            "writeOnly": true
          }
        },
        "required": ["refreshToken"]
      },
      "RequestPasswordResetDto": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "example": "+989121234567"
          }
        },
        "required": ["phone"]
      },
      "VerifyPasswordResetDto": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          },
          "otp": {
            "type": "string",
            "example": "123456"
          }
        },
        "required": ["requestId", "otp"]
      },
      "CompletePasswordResetDto": {
        "type": "object",
        "properties": {
          "resetToken": {
            "type": "string",
            "writeOnly": true
          },
          "newPassword": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "writeOnly": true
          }
        },
        "required": ["resetToken", "newPassword"]
      },
      "ChangePasswordDto": {
        "type": "object",
        "properties": {
          "currentPassword": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "writeOnly": true
          },
          "newPassword": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "writeOnly": true
          }
        },
        "required": ["currentPassword", "newPassword"]
      },
      "DevelopmentLoginDto": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "example": "+989120000000"
          }
        },
        "required": ["phone"]
      },
      "CreatePanelUserDto": {
        "type": "object",
        "properties": {
          "phoneCountryCode": {
            "type": "string",
            "example": "+98"
          },
          "phoneNumber": {
            "type": "string",
            "example": "09121234567"
          }
        },
        "required": ["phoneCountryCode", "phoneNumber"]
      },
      "UpdatePanelUserAccessDto": {
        "type": "object",
        "properties": {}
      },
      "Object": {
        "type": "object",
        "properties": {}
      },
      "UpdateAppUserDto": {
        "type": "object",
        "properties": {}
      },
      "RegisterIdentityDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "milad_ahmadi",
            "minLength": 3,
            "maxLength": 30,
            "description": "Unique, lowercase public username. It cannot be changed during registration."
          },
          "firstName": {
            "type": "string",
            "example": "میلاد",
            "maxLength": 80
          },
          "lastName": {
            "type": "string",
            "example": "احمدی",
            "maxLength": 80
          },
          "phoneCountryCode": {
            "type": "string",
            "example": "+98",
            "description": "E.164 calling code"
          },
          "phoneNumber": {
            "type": "string",
            "example": "09121234567"
          },
          "nationalCode": {
            "type": "string",
            "example": "0013547895",
            "description": "Required when phoneCountryCode is +98"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "writeOnly": true
          },
          "registrationToken": {
            "type": "string",
            "writeOnly": true,
            "description": "Required for Iranian registrations after OTP verification"
          }
        },
        "required": [
          "username",
          "firstName",
          "lastName",
          "phoneCountryCode",
          "phoneNumber",
          "password"
        ]
      },
      "StartBiometricVerificationDto": {
        "type": "object",
        "properties": {
          "purpose": {
            "type": "string",
            "example": "wallet.transfer",
            "description": "Sensitive operation requiring step-up verification"
          },
          "birthDate": {
            "type": "string",
            "example": "1992-03-21T00:00:00.000Z",
            "description": "Birth date as an ISO-8601 UTC timestamp. Calendar conversion is handled by the client and provider adapter."
          },
          "serialNumber": {
            "type": "string",
            "example": "i1R8389398",
            "minLength": 5
          },
          "speechText": {
            "type": "string",
            "example": "بهار فصل شکوفه‌هاست",
            "minLength": 10
          },
          "videoBase64": {
            "type": "string",
            "description": "Raw base64 video, maximum decoded size 5 MiB"
          },
          "consentAccepted": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "purpose",
          "birthDate",
          "serialNumber",
          "speechText",
          "videoBase64",
          "consentAccepted"
        ]
      },
      "UpdateMyProfileDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "lastName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80
          },
          "username": {
            "type": "string",
            "minLength": 3,
            "maxLength": 30,
            "pattern": "^[a-z][a-z0-9_]{2,29}$",
            "example": "milad_ahmadi"
          }
        }
      },
      "ReportSocialContentDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "SPAM",
              "NUDITY",
              "VIOLENCE",
              "HATE",
              "HARASSMENT",
              "FALSE_INFORMATION",
              "SCAM",
              "INTELLECTUAL_PROPERTY",
              "OTHER"
            ]
          },
          "details": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": ["reason"]
      },
      "UpdateSocialProfileDto": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 161
          },
          "bio": {
            "type": "string",
            "maxLength": 300,
            "nullable": true
          },
          "website": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "visibility": {
            "type": "string",
            "enum": ["PUBLIC", "PRIVATE"]
          }
        }
      },
      "FollowDecisionDto": {
        "type": "object",
        "properties": {
          "accept": {
            "type": "boolean",
            "example": true
          }
        },
        "required": ["accept"]
      },
      "UpdateSocialPostDto": {
        "type": "object",
        "properties": {
          "caption": {
            "type": "string",
            "maxLength": 2200,
            "nullable": true
          }
        },
        "required": ["caption"]
      },
      "CreateCommentDto": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string",
            "maxLength": 1000
          },
          "parentId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": ["body"]
      },
      "UpdateSocialReportStatusDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": ["PENDING", "REVIEWING", "RESOLVED", "REJECTED"]
          }
        },
        "required": ["status"]
      },
      "StartDirectConversationDto": {
        "type": "object",
        "properties": {
          "participantId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": ["participantId"]
      },
      "SendMessageDto": {
        "type": "object",
        "properties": {
          "clientMessageId": {
            "type": "string",
            "maxLength": 160,
            "description": "Client-generated idempotency key for safe retries"
          },
          "type": {
            "type": "string",
            "enum": ["TEXT", "STICKER"],
            "default": "TEXT",
            "description": "Message content type. STICKER body contains its stable key."
          },
          "body": {
            "type": "string",
            "maxLength": 4000
          },
          "replyToId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": ["clientMessageId", "body"]
      }
    }
  }
}
