🛠️ Utility Schema Blocks
Utility schema blocks provide JSON Schema definitions for common utility operations like file uploads and contact information validation across Nodeblocks applications. These schemas ensure consistent validation for common utility operations.
🎯 Overview
Utility schema blocks are designed to:
- Validate file upload metadata with proper constraints
- Ensure contact information consistency across entities
- Support common utility operations with standardized validation
- Provide reusable validation patterns for common data structures
- Enable composition with entity-specific utility schemas
📋 Utility Schema Types
File Upload Schemas
Schemas for file upload metadata and validation.
Contact Information Schemas
Schemas for contact information validation.
🔧 Available Utility Schemas
fileSchema
File upload schema for validating uploaded file metadata.
Purpose: Validates file upload metadata and properties
Schema Details:
- Type:
object
- Required Fields:
id
,filename
,mime_type
,size
,url
,created_at
- Additional Properties:
false
(strict validation) - Properties:
id: string
- File ID (UUID format)filename: string
- Original filenamemime_type: string
- MIME type of the filesize: number
- File size in bytes (minimum: 0)url: string
- File URL (URI format)created_at: string
- File creation timestamp (date-time format)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { fileSchema } = schemas;
const validate = ajv.compile(fileSchema);
const isValid = validate({
id: '550e8400-e29b-41d4-a716-446655440000',
filename: 'document.pdf',
mime_type: 'application/pdf',
size: 1024000,
url: 'https://example.com/files/document.pdf',
created_at: '2023-01-01T00:00:00Z'
});
contactSchema
Contact information schema for person or organization contact details.
Purpose: Validates contact information with required email
Schema Details:
- Type:
object
- Required Fields:
email
- Additional Properties:
false
(strict validation) - Properties:
email: string
- Email address (email format)phone?: string
- Phone number (optional)address?: object
- Address object (optional)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { contactSchema } = schemas;
const validate = ajv.compile(contactSchema);
const isValid = validate({
email: 'contact@example.com',
phone: '+1-555-123-4567',
address: {
street: '123 Main St',
city: 'New York',
country: 'USA'
}
});