🔍 User Schema Blocks
User schema blocks provide JSON Schema definitions for user data validation in Nodeblocks applications. These schemas ensure data integrity and provide clear contracts for user-related API endpoints.
🎯 Overview
User schema blocks are designed to:
- Validate user data before processing
- Ensure user data consistency across the application
- Provide clear contracts for user API endpoints
- Enable type safety with TypeScript integration
- Support composition with other user blocks
📋 User Schema Types
Base User Schemas
Core user entity structures used as foundations for other schemas.
User Creation Schemas
Schemas for user registration with required field validation.
User Update Schemas
Schemas for profile updates with optional field validation.
User Query Schemas
Schemas for user filtering and pagination parameters.
🔧 Available User Schemas
userSchema
Base user schema definition for JSON Schema validation.
Purpose: Base schema for user data validation across the application
Schema Details:
- Type:
object
- Additional Properties:
false
(strict validation) - Properties:
email?: string
- User email addressname?: string
- User display namestatus?: string
- User account status
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { userSchema } = schemas;
const userSchema = userSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
email: "user@example.com",
name: "John Doe",
status: "active"
});
createUserSchema
User creation schema with required fields for user registration.
Purpose: This schema enforces strict validation for user creation by requiring all essential user fields. It extends the base userSchema and adds required field validation to ensure complete user data during account registration.
Schema Details:
- Type:
object
- Required Fields:
email
,name
,status
(all fields mandatory) - Additional Properties:
false
(strict validation inherited from userSchema) - Content-Type:
application/json
- Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createUserSchema } = schemas;
const userSchema = createUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
email: "newuser@example.com",
name: "New User",
status: "active"
});
updateUserSchema
User update schema with optional fields for profile modification.
Purpose: This schema allows for partial updates to user profiles by accepting any valid JSON object. It's designed to be flexible for PATCH operations where only specific fields need to be updated.
Schema Details:
- Type:
object
- Required Fields: None (all fields are optional)
- Additional Properties:
false
(strict validation) - Content-Type:
application/json
- Parameters:
userId
(path parameter)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateUserSchema } = schemas;
const userSchema = updateUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
name: "Jane Doe",
status: "inactive"
});
getUserSchema
User retrieval schema for getting single users.
Purpose: Validates requests for retrieving specific users.
Schema Details:
- Parameters:
userId
(path parameter) - Purpose: Validates requests for retrieving specific users
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { getUserSchema } = schemas;
const userSchema = getUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});
deleteUserSchema
User deletion schema for removing users.
Purpose: Validates requests for deleting specific users.
Schema Details:
- Parameters:
userId
(path parameter) - Purpose: Validates requests for deleting specific users
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteUserSchema } = schemas;
const userSchema = deleteUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});
lockUserSchema
User lock schema for locking user accounts.
Purpose: Validates requests for locking specific user accounts.
Schema Details:
- Parameters:
userId
(path parameter) - Purpose: Validates requests for locking specific user accounts
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { lockUserSchema } = schemas;
const userSchema = lockUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});
unlockUserSchema
User unlock schema for unlocking user accounts.
Purpose: Validates requests for unlocking specific user accounts.
Schema Details:
- Parameters:
userId
(path parameter) - Purpose: Validates requests for unlocking specific user accounts
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { unlockUserSchema } = schemas;
const userSchema = unlockUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});
findUsersSchema
Users search schema for finding users with filtering and pagination.
Purpose: Validates requests for searching and paginating users.
Schema Details:
- Query Parameters:
email?: string
(optional filter by email)name?: string
(optional filter by name)status?: string
(optional filter by status)page?: number
(pagination)limit?: number
(pagination)
- Purpose: Validates requests for searching and paginating users
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { findUsersSchema } = schemas;
const usersSchema = findUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate({
status: 'active',
page: 1,
limit: 10
});
🔗 Related Documentation
- User Handler Blocks - User business logic functions