🔍 Invitation Schemas
Invitation schemas provide validation schemas for invitation management operations in Nodeblocks applications. These schemas ensure data integrity and proper validation for invitation creation, retrieval, and management operations.
🎯 Overview
Invitation schemas are designed to:
- Validate invitation data structures for consistency
- Ensure required fields are present in requests
- Enforce data types and format validation
- Support filtering and pagination for invitation queries
- Provide type safety with TypeScript integration
📋 Schema Structure
Each invitation schema follows a consistent pattern:
- Type: Defines the schema type (object, array, etc.)
- Required Fields: Specifies mandatory properties
- Properties: Defines individual field validations
- Additional Properties: Controls strict validation behavior
🔧 Available Invitation Schemas
invitationSchema
Base invitation schema defining the structure for invitation data.
Purpose: Validates invitation data structure for user invitations
Schema Details:
- Type:
object - Required Fields: None (base schema)
- Additional Properties:
false(strict validation) - Properties:
email: string- Email address (email format validation)fromIdentityId?: string- ID of the inviter identityorgId?: string- ID of the organization to invite torole?: string- Role of the user in the organization
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { invitationSchema } = schemas;
const validate = ajv.compile(invitationSchema as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
fromIdentityId: 'identity123',
orgId: 'org456',
role: 'member'
});
createInvitationSchema
Schema for creating new invitations with required fields validation.
Purpose: Validates invitation creation requests with required fields
Schema Details:
- Type:
object - Required Fields:
email,fromIdentityId - Optional Fields:
orgId,role - Additional Properties:
false(strict validation) - Content-Type:
application/json - Request Body:
required
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { createInvitationSchema } = schemas;
const createSchema = createInvitationSchema({});
const validate = ajv.compile(createSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
fromIdentityId: 'identity123',
orgId: 'org456',
role: 'member'
});
getInvitationSchema
Schema for retrieving a single invitation by ID.
Purpose: Validates path parameters for GET invitation endpoint
Schema Details:
- Type:
object - Required Fields:
invitationId(path parameter) - Parameters:
invitationId(path parameter) - Additional Properties:
false(strict validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { getInvitationSchema } = schemas;
const getSchema = getInvitationSchema({});
const validate = ajv.compile(getSchema.schemas as SchemaDefinition);
const isValid = validate({
invitationId: 'inv123'
});
deleteInvitationSchema
Schema for deleting an invitation by ID.
Purpose: Validates path parameters for DELETE invitation endpoint
Schema Details:
- Type:
object - Required Fields:
invitationId(path parameter) - Parameters:
invitationId(path parameter) - Additional Properties:
false(strict validation)
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteInvitationSchema } = schemas;
const deleteSchema = deleteInvitationSchema({});
const validate = ajv.compile(deleteSchema.schemas as SchemaDefinition);
const isValid = validate({
invitationId: 'inv123'
});
findInvitationsSchema
Schema for finding invitations with optional filtering and pagination.
Purpose: Validates query parameters for invitation search with pagination
Schema Details:
- Type:
object - Required Fields: None (all query parameters optional)
- Additional Properties:
false(strict validation) - Parameters: Query parameters for filtering and pagination
- Query Parameters:
email?: string- Filter by email (email format)fromIdentityId?: string- Filter by inviter identity IDorgId?: string- Filter by organization IDrole?: string- Filter by rolepage?: number- Pagination page numberlimit?: number- Pagination limit
Usage:
import { schemas } from '@nodeblocks/backend-sdk';
const { findInvitationsSchema } = schemas;
const findSchema = findInvitationsSchema({});
const validate = ajv.compile(findSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
page: 1,
limit: 10
});
🔗 Related Documentation
- Invitation Domain Overview - Invitation domain overview
- Invitation Handlers - Invitation handler functions
- Invitation Routes - Invitation route endpoints