Saltar al contenido principal

Reglas de validación

Toda la validación de entradas se ejecuta del lado del servidor en apps/backend/validators/ antes de cualquier llamada a la base de datos o a un manager. Los errores se lanzan como UserInputError con mensajes traducidos mediante el servicio de traducción.

Campos de usuario

CampoRegla
username3–50 caracteres, regex /^[a-zA-Z0-9_-]+$/
emailRegex de correo estándar, máximo 255 caracteres
password8–128 caracteres, debe contener mayúscula, minúscula, dígito y uno de @$!%*?&
bioOpcional, máximo 100 caracteres
dateOfBirthEdad mínima 13, edad máxima 120
gendermale / female / other / prefer_not_to_say
accountTypepersonal / creator / business
phone7–15 dígitos (formato E.164, elimina espacios/guiones/paréntesis)
countryCode+ seguido de 1–3 dígitos
otp4–6 dígitos

Campos de publicación

CampoRegla
textMáximo 5000 caracteres; obligatorio a menos que haya contenido multimedia
visibilitypublic (por defecto) / followers / private / subscribers
limit (paginación)1–100, 20 por defecto
offset (paginación)≥ 0, 0 por defecto

Campos de comentario

CampoRegla
textMáximo 2000 caracteres
limit1–100, 20 por defecto

Campos de mensaje

CampoRegla
messageTextMáximo 10 000 caracteres
messageTypetext (por defecto) / image / video / audio / file / voice / gif / sticker / location / poll / coin_transfer
coinPrice≥ 0; permitido solo en mensajes de tipo image o video
limit1–100, 50 por defecto
before (cursor)Cursor basado en timestamp para paginación por keyset

Campos de hashtag

CampoRegla
nameMáximo 100 caracteres, solo alfanumérico y guiones bajos, en minúsculas, se elimina el # inicial

Campos de transmisión en vivo

CampoRegla
title3–255 caracteres
descriptionOpcional, máximo 5000 caracteres
visibilitypublic (por defecto) / private / followers_only / close_friends
scheduledStartTimeDebe ser una fecha futura
commentTextMáximo 500 caracteres
interactionTypelike / love / wow / haha / sad / angry
status (actualización)scheduled / live / ended / cancelled

Campos de paquete de monedas

CampoRegla
name3–100 caracteres
coinAmountEntero, 1–1 000 000
bonusCoinsEntero, ≥ 0, máximo 1 000 000
priceDecimal, > 0, máximo $10 000, máximo 2 decimales
currencyUSD / EUR / GBP / JPY / MXN (por defecto USD)

Campos de nivel de suscripción

CampoRegla
name1–100 caracteres
descriptionOpcional, máximo 500 caracteres
coinPriceEntero, 0–1 000 000; null = nivel gratuito
benefitsArreglo de strings

Campos de reporte de contenido

CampoValores permitidos
contentTypepost / comment / message / user
reasonspam / nudity / hate_speech / violence / harassment / false_information / scam / intellectual_property / self_harm / terrorism / other
detailsOpcional, máximo 1000 caracteres
status (ciclo de vida)pendingreviewingresolved / dismissed

Formato de error

Los errores de validación se devuelven como UserInputError de GraphQL con un string message. Todos los mensajes están internacionalizados mediante el servicio de traducción y respetan el locale del usuario en el contexto de GraphQL.