Skip to main content
Version: 0.6.0 (Latest)

🔍 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 profile data validation

Schema Details:

  • Type: object
  • Additional Properties: false (strict validation)
  • Properties:
    • identityId: string - Linked identity identifier
    • name: string - User display name
    • avatar?: Avatar | null - User avatar object or null

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { userSchema } = schemas;
const validate = ajv.compile(userSchema as SchemaDefinition);
const isValid = validate({
identityId: "identity-123",
name: "John Doe",
avatar: null
});

createUserSchema

User creation schema with required fields for user registration.

Purpose: Validates creation payload for user profiles linked to identities

Schema Details:

  • Type: object
  • Required Fields: identityId, name
  • Additional Properties: false (strict validation)
  • 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({
identityId: "identity-123",
name: "New User"
});

updateUserSchema

User update schema with optional fields for profile modification.

Purpose: Validates partial updates to user profiles

Schema Details:

  • Type: object
  • Required Fields: None (all fields optional)
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Parameters: profileId (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"
});

getUserSchema

User retrieval schema for getting single users.

Purpose: Validates requests for retrieving specific users.

Schema Details:

  • Parameters: profileId (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({
profileId: 'profile123'
});

deleteUserSchema

User deletion schema for removing users.

Purpose: Validates requests for deleting specific users.

Schema Details:

  • Parameters: profileId (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({
profileId: 'profile123'
});

lockUserSchema

User lock schema for locking user accounts.

Purpose: Validates requests for locking specific user accounts.

Schema Details:

  • Parameters: identityId (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({
identityId: 'identity123'
});

unlockUserSchema

User unlock schema for unlocking user accounts.

Purpose: Validates requests for unlocking specific user accounts.

Schema Details:

  • Parameters: identityId (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({
identityId: 'identity123'
});

findUsersSchema

Users search schema for finding users with filtering and pagination.

Purpose: Validates requests for searching and paginating users.

Schema Details:

  • Query Parameters:
    • identityId?: string (optional filter by identity)
    • name?: string (optional filter by name)
    • 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({
name: 'John',
page: 1,
limit: 10
});