🔍 Profile Schemas
Profile schemas provide JSON Schema definitions for profile relationship data validation in NodeBlocks applications. These schemas ensure data integrity and provide clear contracts for profile-related API endpoints.
🎯 Overview
Profile schemas are designed to:
- Validate profile relationship data before processing
- Ensure profile data consistency across the application
- Provide clear contracts for profile API endpoints
- Enable type safety with TypeScript integration
- Support composition with other profile blocks
- Handle social relationships including follows, organization follows, and product likes
📋 Profile Schema Types
Profile Follow Schemas
Schemas for profile-to-profile follow relationship operations.
Organization Follow Schemas
Schemas for profile-to-organization follow relationship operations.
Product Like Schemas
Schemas for profile-to-product like relationship operations.
Profile Followers Schemas
Schemas for retrieving profile followers with pagination.
🔧 Available Profile Schemas
createProfileFollowSchema
Profile follow creation schema with path parameter validation.
Purpose: Validates requests for creating new profile follow relationships, ensuring both profile IDs are provided as path parameters.
Schema Details:
- Parameters:
profileId(path parameter, required),followProfileId(path parameter, required) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProfileFollowSchema } = schemas;
const schema = createProfileFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followProfileId', value: 'user-456' }
]
});
deleteProfileFollowSchema
Profile follow deletion schema with path parameter validation.
Purpose: Validates requests for deleting profile follow relationships (unfollowing), ensuring both profile IDs are provided as path parameters.
Schema Details:
- Parameters:
profileId(path parameter, required),followProfileId(path parameter, required) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteProfileFollowSchema } = schemas;
const schema = deleteProfileFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followProfileId', value: 'user-456' }
]
});
getProfileFollowersSchema
Profile followers retrieval schema with path parameter validation.
Purpose: Validates requests for retrieving profile followers list, ensuring the profile ID is provided as a path parameter.
Schema Details:
- Parameters:
profileId(path parameter, required) - Query Parameters:
page(optional),limit(optional) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { getProfileFollowersSchema } = schemas;
const schema = getProfileFollowersSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ in: 'path', name: 'profileId', value: 'user-123' }]
});
createOrganizationFollowSchema
Organization follow creation schema with path parameter validation.
Purpose: Validates requests for creating organization follow relationships, ensuring both profile ID and organization ID are provided as path parameters.
Schema Details:
- Parameters:
profileId(path parameter, required),followOrganizationId(path parameter, required) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createOrganizationFollowSchema } = schemas;
const schema = createOrganizationFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followOrganizationId', value: 'org-456' }
]
});
deleteOrganizationFollowSchema
Organization follow deletion schema with path parameter validation.
Purpose: Validates requests for deleting organization follow relationships, ensuring both profile ID and organization ID are provided as path parameters.
Schema Details:
- Parameters:
profileId(path parameter, required),followOrganizationId(path parameter, required) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteOrganizationFollowSchema } = schemas;
const schema = deleteOrganizationFollowSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'followOrganizationId', value: 'org-456' }
]
});
createProductLikeSchema
Product like creation schema with path parameter validation.
Purpose: Validates requests for creating product like relationships, ensuring both profile ID and product ID are provided as path parameters.
Schema Details:
- Parameters:
profileId(path parameter, required),likeProductId(path parameter, required) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProductLikeSchema } = schemas;
const schema = createProductLikeSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'likeProductId', value: 'prod-789' }
]
});
deleteProductLikeSchema
Product like deletion schema with path parameter validation for unlike operations.
Purpose: Validates requests for deleting product like relationships, ensuring both profile ID and product ID are provided as path parameters.
Schema Details:
- Parameters:
profileId(path parameter, required),likeProductId(path parameter, required) - Request Body: Not required (empty body)
- Content-Type: N/A (no body validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteProductLikeSchema } = schemas;
const schema = deleteProductLikeSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'path', name: 'profileId', value: 'user-123' },
{ in: 'path', name: 'likeProductId', value: 'prod-789' }
]
});
🔗 Related Documentation
- Profile Blocks - Profile business logic functions
- Profile Routes - HTTP endpoint definitions