🏢 Organization Feature Blocks
Organization feature blocks provide complete, pre-composed functionality for organization management operations in Nodeblocks applications. These features combine schemas, routes, and handlers to create ready-to-use API endpoints for organization CRUD operations, user management, and membership handling.
🎯 Overview
Organization feature blocks are designed to:
- Provide complete organization management with full CRUD operations
- Support user membership and role management within organizations
- Include validation and routing for secure organization operations
- Support filtering and pagination for organization and user listings
- Handle organization-user relationships and access control
📋 Feature Structure
Each organization feature follows a consistent composition pattern:
- Schema: Validates organization input data and parameters
- Route: Provides HTTP endpoint with organization handlers
- Composition: Combines schema and route using
compose
function
🔧 Available Organization Features
createOrganizationFeature
Organization creation feature with schema validation and routing.
Purpose: Handles organization creation with complete validation
Composition:
- Schema:
createOrganizationSchema
- validates name, description, contact_email, and optional fields - Route:
createOrganizationRoute
- POST/organizations
with creation handler
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.createOrganizationFeature, [{ dataStores: db }])));
API Endpoint: POST /api/organizations
getOrganizationFeatures
Organization retrieval feature for getting individual organization data.
Purpose: Fetches organization information with proper validation
Composition:
- Schema:
getOrganizationSchema
- validates path parameters - Route:
getOrganizationRoute
- GET/organizations/:organizationId
with retrieval handler
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.getOrganizationFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations/:organizationId
findOrganizationsFeatures
Organization search feature with filtering and pagination.
Purpose: Provides organization listing with search capabilities
Composition:
- Schema:
findOrganizationsSchema
- validates query parameters for filtering - Route:
findOrganizationsRoute
- GET/organizations
with search and pagination
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.findOrganizationsFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations
editOrganizationFeatures
Organization update feature with schema validation and routing.
Purpose: Modifies organization information with proper validation
Composition:
- Schema:
updateOrganizationSchema
- validates partial organization properties - Route:
updateOrganizationRoute
- PATCH/organizations/:organizationId
with update handler
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.editOrganizationFeatures, [{ dataStores: db }])));
API Endpoint: PATCH /api/organizations/:organizationId
deleteOrganizationFeatures
Organization deletion feature with routing.
Purpose: Removes organizations with access control and cleanup
Composition:
- Schema:
deleteOrganizationSchema
- validates path parameters - Route:
deleteOrganizationRoute
- DELETE/organizations/:organizationId
with deletion handler
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.deleteOrganizationFeatures, [{ dataStores: db }])));
API Endpoint: DELETE /api/organizations/:organizationId
getOrganizationMemberFeatures
Organization member role retrieval feature for getting member roles within organizations.
Purpose: Retrieves member roles within specific organizations
Composition:
- Schema:
getOrganizationMemberRoleSchema
- validates path parameters - Route:
getOrganizationMemberRoleRoute
- GET/organizations/:organizationId/members/:identityId/role
with role retrieval handler
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.getOrganizationMemberFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations/:organizationId/members/:identityId/role
checkOrganizationMemberExistenceFeatures
Organization member existence check feature for validating member membership.
Purpose: Validates member membership in organizations
Composition:
- Schema:
checkOrganizationMemberExistenceSchema
- validates path parameters - Route:
checkOrganizationMemberExistenceRoute
- GET/organizations/:organizationId/members/check-existence
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.checkOrganizationMemberExistenceFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations/:organizationId/members/check-existence
findOrganizationMembersFeatures
Organization members search feature with filtering and pagination.
Purpose: Provides organization member listing with search capabilities
Composition:
- Schema:
findOrganizationMembersSchema
- validates query parameters for filtering - Route:
findOrganizationMembersRoute
- GET/organizations/:organizationId/members
with search and pagination
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.findOrganizationMembersFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations/:organizationId/members
findOrganizationsForMemberFeatures
Organizations for member search feature for finding organizations by identity ID.
Purpose: Finds organizations associated with a specific member (identity), with optional role filtering and inherited roles
Composition:
- Schema:
findOrganizationsForMemberSchema
- validates path and optional query parameters - Route:
findOrganizationsForMemberRoute
- GET/organizations/members/:identityId
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.findOrganizationsForMemberFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations/members/:identityId
editOrganizationMembersFeatures
Organization member management feature with schema validation for upserting members.
Purpose: Manages member membership and roles within organizations
Composition:
- Schema:
upsertOrganizationMembersSchema
- validates array of member objects with id and role - Route:
upsertOrganizationMembersRoute
- PATCH/organizations/:organizationId/members
with upsert handler
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.editOrganizationMembersFeatures, [{ dataStores: db }])));
API Endpoint: PATCH /api/organizations/:organizationId/members
deleteOrganizationMemberFeatures
Organization member deletion feature with routing.
Purpose: Removes members from organizations with proper cleanup
Composition:
- Schema:
deleteOrganizationMemberSchema
- validates path parameters - Route:
deleteOrganizationMemberRoute
- DELETE/organizations/:organizationId/members/:identityId
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.deleteOrganizationMemberFeatures, [{ dataStores: db }])));
API Endpoint: DELETE /api/organizations/:organizationId/members/:identityId
findOrganizationDescendantsFeatures
Retrieves descendant organizations for a given organization.
Purpose: Lists all descendants with pagination support
Composition:
- Schema:
findOrganizationDescendantsSchema
- validates organizationId and optional depth - Route:
findOrganizationDescendantsRoute
- GET/organizations/:organizationId/descendants
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.findOrganizationDescendantsFeatures, [{ dataStores: db }])));
API Endpoint: GET /api/organizations/:organizationId/descendants
getLogoUploadUrlFeature
Organization logo upload URL generation feature with schema validation and routing.
Purpose: Generates a pre-signed URL to upload an organization logo.
Composition:
- Schema:
getSignedImageUploadUrlSchema
- validates content type and file size for image uploads - Route:
getLogoUploadUrlRoute
- GET/organizations/:organizationId/logo-upload-url
with signed URL generation
Usage:
import { features } from '@nodeblocks/backend-sdk';
// With file storage service in configuration:
app.use(
'/api',
defService(partial(features.getLogoUploadUrlFeature, [{ configuration: { fileStorageDriver } }]))
);
API Endpoint: GET /api/organizations/:organizationId/logo-upload-url