Skip to main content
POST
/
users
Create User
curl --request POST \
  --url https://api.example.com/users \
  --header 'Content-Type: application/json' \
  --data '
{
  "nombre": "<string>",
  "apellidos": "<string>",
  "password": "<string>",
  "dni": "<string>",
  "direccion": "<string>",
  "CP": "<string>",
  "provincia": "<string>",
  "poblacion": "<string>",
  "pais": "<string>",
  "email": "<string>",
  "telefono": "<string>",
  "fechaalta": "<string>",
  "fechabaja": "<string>",
  "formadepago": "<string>",
  "cuota": 123,
  "categoria": "<string>",
  "socio": "<string>"
}
'
{
  "IdUsuario": 123,
  "nombre": "<string>",
  "apellidos": "<string>",
  "password": "<string>",
  "dni": "<string>",
  "direccion": "<string>",
  "CP": "<string>",
  "provincia": "<string>",
  "poblacion": "<string>",
  "pais": "<string>",
  "email": "<string>",
  "telefono": "<string>",
  "fechaalta": "<string>",
  "fechabaja": "<string>",
  "formadepago": "<string>",
  "cuota": 123,
  "categoria": "<string>",
  "socio": "<string>",
  "isVerified": true,
  "verificationCode": "<string>",
  "verificationExpires": {}
}

Authentication

This endpoint requires JWT authentication and role-based authorization. Required Guards:
  • JwtAuthGuard - Valid JWT token required
  • RolesGuard - User must have one of the allowed roles
Allowed Roles:
  • monitor
  • admin

Request Body

nombre
string
required
User’s first name
apellidos
string
required
User’s last name
password
string
required
User’s password (will be hashed with bcrypt using 12 salt rounds)
dni
string
required
National identification number (DNI)
direccion
string
required
Street address
CP
string
required
Postal code
provincia
string
required
Province
poblacion
string
required
City/town
pais
string
required
Country
email
string
required
User’s email address (must be valid email format)
telefono
string
required
Phone number
fechaalta
string
required
Registration date in ISO 8601 date format (YYYY-MM-DD)
fechabaja
string
Deactivation date in ISO 8601 date format (YYYY-MM-DD). Optional field.
formadepago
string
required
Payment method (e.g., “Transferencia”, “Tarjeta”, “Efectivo”)
cuota
number
required
Membership fee amount
categoria
string
required
User category (e.g., “monitor”, “admin”, “socio”)
socio
string
required
Membership status - Must be either “Socio” or “NoSocio”. Also accepts numeric values: 0 for “NoSocio”, 1 for “Socio”

Response

Returns the created user object with all fields from the database entity.
IdUsuario
number
required
Auto-generated unique user identifier
nombre
string
required
User’s first name
apellidos
string
required
User’s last name
password
string
required
Hashed password (bcrypt)
dni
string
required
National identification number
direccion
string
required
Street address
CP
string
required
Postal code
provincia
string
required
Province
poblacion
string
required
City/town
pais
string
required
Country
email
string
required
User’s email address
telefono
string
required
Phone number
fechaalta
date
required
Registration date
fechabaja
date
Deactivation date (nullable)
formadepago
string
required
Payment method
cuota
number
required
Membership fee amount
categoria
string
required
User category
socio
string
required
Membership status - “Socio” or “NoSocio”
isVerified
boolean
required
Email verification status (automatically set to true for admin-created users)
verificationCode
string
Email verification code (null for admin-created users)
verificationExpires
timestamp
Verification code expiration (null for admin-created users)

Example Request

curl -X POST https://api.sociapp.com/users \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "María",
    "apellidos": "Rodríguez Pérez",
    "password": "SecurePassword123!",
    "dni": "45678912C",
    "direccion": "Calle Luna 67",
    "CP": "46001",
    "provincia": "Valencia",
    "poblacion": "Valencia",
    "pais": "España",
    "email": "[email protected]",
    "telefono": "622345678",
    "fechaalta": "2024-03-15",
    "formadepago": "Transferencia",
    "cuota": 28.50,
    "categoria": "socio",
    "socio": "Socio"
  }'

Example Response

{
  "IdUsuario": 15,
  "nombre": "María",
  "apellidos": "Rodríguez Pérez",
  "password": "$2b$12$abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGH",
  "dni": "45678912C",
  "direccion": "Calle Luna 67",
  "CP": "46001",
  "provincia": "Valencia",
  "poblacion": "Valencia",
  "pais": "España",
  "email": "[email protected]",
  "telefono": "622345678",
  "fechaalta": "2024-03-15",
  "fechabaja": null,
  "formadepago": "Transferencia",
  "cuota": 28.50,
  "categoria": "socio",
  "socio": "Socio",
  "isVerified": true,
  "verificationCode": null,
  "verificationExpires": null
}

Notes

  • Passwords are automatically hashed using bcrypt with 12 salt rounds before storage
  • Users created by administrators are automatically marked as verified (isVerified: true)
  • The socio field accepts both string values (“Socio”/“NoSocio”) and numeric values (1/0)
  • All fields except fechabaja are required
  • Email format is validated
  • Dates must be in ISO 8601 format (YYYY-MM-DD)

Build docs developers (and LLMs) love