Skip to main content
Version: 🚧 Canary

🔍 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