Skip to main content
Version: 0.4.2 (Previous)

🔍 Organization Schema Blocks

Organization schema blocks provide JSON Schema definitions for organization data validation in Nodeblocks applications. These schemas ensure data integrity and provide clear contracts for organization-related API endpoints.


🎯 Overview

Organization schema blocks are designed to:

  • Validate organization data before processing
  • Support user role management within organizations
  • Handle organization membership and permissions
  • Enable organization search and filtering capabilities
  • Support multi-tenant applications with organization isolation
  • Provide contact and address management

📋 Organization Schema Types

Base Organization Schemas

Core organization structures used as foundations for other schemas.

Organization Creation Schemas

Schemas for organization creation with required field validation.

Organization Update Schemas

Schemas for organization modifications with optional field validation.

Organization User Management Schemas

Schemas for managing user roles and membership in organizations.

Organization Query Schemas

Schemas for organization filtering and pagination parameters.


🔧 Available Organization Schemas

organizationSchema

Base organization schema defining the structure for organization data.

Purpose: Defines the structure for organization data with contact information

Schema Details:

  • Type: object
  • Required Fields: None (base schema)
  • Additional Properties: false (strict validation)
  • Properties:
    • name?: string - Organization name (minimum length 1)
    • description?: string - Organization description
    • contact_email?: string - Organization contact email (email format)
    • contact_phone?: string - Organization contact phone number
    • address?: object - Organization address object
    • ownerId?: string - Organization owner user ID

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { organizationSchema } = schemas;

const organizationSchema = organizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Acme Corporation',
description: 'A leading technology company',
contact_email: 'contact@acme.com',
ownerId: 'user123'
});

createOrganizationSchema

Organization creation schema with required fields for new organizations.

Purpose: Validates organization data during creation

Schema Details:

  • Type: object
  • Required Fields: name, description, contact_email, ownerId
  • Optional Fields: contact_phone, address
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Request Body: required

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { createOrganizationSchema } = schemas;

const organizationSchema = createOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Acme Corporation',
description: 'A leading technology company',
contact_email: 'contact@acme.com',
ownerId: 'user123',
contact_phone: '+1-555-0123'
});

organizationUsersSchema

Organization users schema for managing user roles in organizations.

Purpose: Defines the structure for organization user assignments

Schema Details:

  • Type: array
  • Required Fields: id, role (for each item)
  • Minimum Items: 1
  • Additional Properties: false (strict validation)
  • Properties:
    • id: string - User ID
    • role: string - User role in organization

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { organizationUsersSchema } = schemas;

const usersSchema = organizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ id: 'user1', role: 'admin' },
{ id: 'user2', role: 'member' }
]);

upsertOrganizationUsersSchema

Organization users upsert schema for managing user roles in organization.

Purpose: Validates user role assignments for organization

Schema Details:

  • Type: array
  • Required Fields: id, role (for each item)
  • Minimum Items: 1
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Parameters: organizationId (path parameter)
  • Request Body: required

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { upsertOrganizationUsersSchema } = schemas;

const usersSchema = upsertOrganizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate([
{ id: 'user1', role: 'admin' },
{ id: 'user2', role: 'member' }
]);

updateOrganizationSchema

Organization update schema with optional fields for organization modifications.

Purpose: Validates partial organization data updates

Schema Details:

  • Type: object
  • Required Fields: None (all fields optional)
  • Additional Properties: false (strict validation)
  • Content-Type: application/json
  • Parameters: organizationId (path parameter)
  • Request Body: required

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { updateOrganizationSchema } = schemas;

const organizationSchema = updateOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
description: 'Updated description',
contact_phone: '+1-555-9999'
});

getOrganizationSchema

Organization retrieval schema for getting single organizations.

Purpose: Validates requests for retrieving specific organizations

Schema Details:

  • Parameters: organizationId (path parameter)
  • Purpose: Validates requests for retrieving specific organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { getOrganizationSchema } = schemas;

const organizationSchema = getOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});

deleteOrganizationSchema

Organization deletion schema for removing organizations.

Purpose: Validates requests for deleting specific organizations

Schema Details:

  • Parameters: organizationId (path parameter)
  • Purpose: Validates requests for deleting specific organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { deleteOrganizationSchema } = schemas;

const organizationSchema = deleteOrganizationSchema({});
const validate = ajv.compile(organizationSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});

getOrganizationUserRoleSchema

Organization user role retrieval schema for getting user roles in organizations.

Purpose: Validates requests for retrieving user roles in organizations

Schema Details:

  • Parameters: organizationId, userId (path parameters)
  • Purpose: Validates requests for retrieving user roles in organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { getOrganizationUserRoleSchema } = schemas;

const userRoleSchema = getOrganizationUserRoleSchema({});
const validate = ajv.compile(userRoleSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
userId: 'user456'
});

checkOrganizationUserExistenceSchema

Organization user existence check schema for verifying user membership.

Purpose: Validates requests for checking user existence in organizations

Schema Details:

  • Parameters: organizationId (path parameter), userId (query parameter)
  • Purpose: Validates requests for checking user existence in organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { checkOrganizationUserExistenceSchema } = schemas;

const userExistenceSchema = checkOrganizationUserExistenceSchema({});
const validate = ajv.compile(userExistenceSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
userId: 'user456'
});

findOrganizationUsersSchema

Organization users search schema for finding users in organizations.

Purpose: Validates requests for finding users in organizations

Schema Details:

  • Parameters: organizationId (path parameter)
  • Purpose: Validates requests for finding users in organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { findOrganizationUsersSchema } = schemas;

const usersSchema = findOrganizationUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123'
});

deleteOrganizationUserSchema

Organization user deletion schema for removing users from organizations.

Purpose: Validates requests for removing users from organizations

Schema Details:

  • Parameters: organizationId, userId (path parameters)
  • Purpose: Validates requests for removing users from organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { deleteOrganizationUserSchema } = schemas;

const userDeletionSchema = deleteOrganizationUserSchema({});
const validate = ajv.compile(userDeletionSchema.schemas as SchemaDefinition);
const isValid = validate({
organizationId: 'org123',
userId: 'user456'
});

findOrganizationsForUserSchema

User organizations search schema for finding organizations for a user.

Purpose: Validates requests for finding organizations for a specific user

Schema Details:

  • Parameters: userId (path parameter), role (optional query parameter)
  • Purpose: Validates requests for finding organizations for a specific user

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { findOrganizationsForUserSchema } = schemas;

const userOrgsSchema = findOrganizationsForUserSchema({});
const validate = ajv.compile(userOrgsSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user456',
role: 'admin'
});

findOrganizationsSchema

Organizations search schema for finding organizations with filtering and pagination.

Purpose: Validates requests for searching and paginating organizations

Schema Details:

  • Query Parameters:
    • contact_email?: string - Filter by contact email (email format)
    • contact_phone?: string - Filter by contact phone
    • description?: string - Filter by description
    • name?: string - Filter by name (minimum length 1)
    • page?: number - Pagination page number
    • limit?: number - Pagination limit
  • Purpose: Validates requests for searching and paginating organizations

Usage:

import { schemas } from '@nodeblocks/backend-sdk';

const { findOrganizationsSchema } = schemas;

const organizationsSchema = findOrganizationsSchema({});
const validate = ajv.compile(organizationsSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Acme',
contact_email: 'contact@acme.com',
page: 1,
limit: 10
});