Skip to main content
Version: 0.4.2 (Previous)

🔍 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 address
    • name?: string - User display name
    • status?: 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
});