Skip to main content
Version: 🚧 Canary

🔍 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 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
});