Skip to main content
Version: 0.7.0 (Previous)

🔍 User Schemas

User schemas 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 schemas 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'
});

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
});