メインコンテンツまでスキップ
バージョン: 🚧 Canary

📧 Invitation Schema Blocks

Invitation schema blocks 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 schema blocks 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 identity
    • orgId?: string - ID of the organization to invite to
    • role?: 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 ID
    • orgId?: string - Filter by organization ID
    • role?: string - Filter by role
    • page?: number - Pagination page number
    • limit?: 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
});