Skip to main content
Version: 0.7.0 (Previous)

🔍 Identity Schemas

Identity schemas provide JSON Schema definitions for identity data validation in NodeBlocks applications. These schemas ensure data integrity and provide clear contracts for identity-related API endpoints.


🎯 Overview​

Identity schemas are designed to:

  • Validate identity data before processing
  • Ensure identity data consistency across the application
  • Provide clear contracts for identity API endpoints
  • Enable type safety with TypeScript integration
  • Support composition with other identity blocks

📋 Identity Schema Types​

Base Identity Schemas​

Core identity entity structures used as foundations for other schemas.

Identity Retrieval Schemas​

Schemas for getting specific identities with identifier validation.

Identity Update Schemas​

Schemas for identity modifications with optional field validation.

Identity Search Schemas​

Schemas for identity filtering and pagination parameters.

Identity Deletion Schemas​

Schemas for identity removal operations.


🔧 Available Identity Schemas​

identityIdPathParameter​

Base identity ID path parameter schema for identity operations.

Purpose: Reusable path parameter schema for identity ID validation across all identity operations

Schema Details:

  • Type: string
  • Location: path
  • Required: true
  • Name: identityId

Usage:

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

const { identityIdPathParameter } = schemas;

// Use in schema composition
export const getIdentitySchema = withSchema({
parameters: [{ ...identityIdPathParameter }]
});

getIdentitySchema​

Identity retrieval schema with identity ID validation.

Purpose: This schema validates requests for retrieving specific identities by their unique identifier. It ensures the identityId is provided and properly formatted.

Schema Details:

  • Parameters: identityId (path parameter, required)
  • Purpose: Validates requests for retrieving specific identities

Usage:

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

const { getIdentitySchema } = schemas;

const identitySchema = getIdentitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity123'
});

findIdentitySchema​

Identity search schema with name filtering and pagination.

Purpose: This schema validates requests for searching and paginating identities. It supports optional name filtering and standard pagination parameters.

Schema Details:

  • Query Parameters:
    • name?: string (optional filter by name)
    • page?: number (pagination)
    • limit?: number (pagination)
  • Purpose: Validates requests for searching and paginating identities

Usage:

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

const { findIdentitySchema } = schemas;

const identitySchema = findIdentitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'john',
page: 1,
limit: 10
});

updateIdentitySchema​

Identity update schema with modifiable fields validation.

Purpose: This schema validates requests for updating identity information. It allows partial updates to identity fields while ensuring only valid fields can be modified.

Schema Details:

  • Parameters: identityId (path parameter, required)
  • Request Body: required
  • Content-Type: application/json
  • Properties:
    • email?: string (optional new email address)
    • emailVerified?: boolean (optional email verification status)
    • typeId?: string (optional new identity type identifier)
  • Additional Properties: false (strict validation)

Usage:

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

const { updateIdentitySchema } = schemas;

const identitySchema = updateIdentitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity123',
email: 'newemail@example.com',
emailVerified: true
});

deleteIdentitySchema​

Identity deletion schema with identifier validation.

Purpose: This schema validates requests for deleting specific identities. It ensures the identityId is provided for the deletion operation.

Schema Details:

  • Parameters: identityId (path parameter, required)
  • Purpose: Validates requests for deleting specific identities

Usage:

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

const { deleteIdentitySchema } = schemas;

const identitySchema = deleteIdentitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity123'
});

lockIdentitySchema​

Identity locking schema with identifier validation.

Purpose: This schema validates requests for locking specific identities. It ensures the identityId is provided for the locking operation.

Schema Details:

  • Parameters: identityId (path parameter, required)
  • Purpose: Validates requests for locking specific identities

Usage:

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

const { lockIdentitySchema } = schemas;

const identitySchema = lockIdentitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity123'
});

unlockIdentitySchema​

Identity unlocking schema with identifier validation.

Purpose: This schema validates requests for unlocking specific identities. It ensures the identityId is provided for the unlocking operation.

Schema Details:

  • Parameters: identityId (path parameter, required)
  • Purpose: Validates requests for unlocking specific identities

Usage:

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

const { unlockIdentitySchema } = schemas;

const identitySchema = unlockIdentitySchema({});
const validate = ajv.compile(identitySchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity123'
});

findByIdentityIdSchema​

Identity retrieval by ID schema with path parameter validation.

Purpose: Validates requests for retrieving user profiles associated with a specific identity ID, supporting pagination parameters.

Schema Structure:

{
identityId: string; // required - unique identity identifier to fetch profiles for
page?: number; // optional - page number for pagination (default: 1)
limit?: number; // optional - number of items per page (default: 10)
}

Schema Details:

  • Parameters: identityId (path parameter, required), pagination query parameters (optional)
  • Purpose: Validates requests for retrieving paginated profiles by identity ID

Usage:

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

const { findByIdentityIdSchema } = schemas;

const schema = findByIdentityIdSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
identityId: 'identity123',
page: 1,
limit: 10
});

// Apply to feature composition:
export const getProfileByIdentityIdFeature = compose(getByIdentityIdSchema, getProfileByIdentityIdRoute);

Validation Rules:

  • identityId: Must be a valid string identifier
  • page: Optional integer, minimum value 1
  • limit: Optional integer, minimum value 1, maximum value configurable