Kadi4Mat TypeScript Client
A comprehensive TypeScript client library for the Kadi4Mat REST API, providing type-safe access to research data repository features.
Features
β¨ Full API Coverage
- Records management (create, read, update, delete)
- Collections and templates
- File upload and download
- Metadata operations with extras
- User and group management
- Search functionality
π Type-Safe
- Complete TypeScript type definitions
- Compile-time type checking
- IntelliSense support in modern IDEs
π Universal
- Works in Node.js and browser environments
- No external runtime dependencies
- ESM and CommonJS builds
π¦ Developer-Friendly
- Comprehensive documentation
- Working examples included
- Metadata conversion utilities
Quick Start
Installation
npm install kadi4mat-client
Basic Usage
import { KadiClient, jsonToExtras } from 'kadi4mat-client';
// Initialize client
const client = new KadiClient({
host: 'https://kadi.iam.kit.edu',
token: 'your-personal-access-token'
});
// Create a record
const record = await client.createRecord({
title: 'My Research Data',
state: 'active',
visibility: 'private',
extras: jsonToExtras({
temperature: 25.5,
pressure: 1.013,
experimenter: 'John Doe'
})
});
console.log('Created record:', record.id);
Documentation
- Getting Started - Installation and first steps
- API Reference - Complete API documentation
- Examples - Code examples and recipes
- Developer Guide - Contributing and development
Features in Detail
Metadata Conversion
Convert JavaScript objects to Kadi4Matβs extras format automatically:
import { jsonToExtras, extrasToJson } from 'kadi4mat-client';
// JavaScript object β Kadi4Mat extras
const extras = jsonToExtras({
sample: { name: 'Sample A', type: 'compound' },
temperature: { value: 800, unit: 'Β°C' },
researcher: 'Jane Smith'
});
// Kadi4Mat extras β JavaScript object
const data = extrasToJson(extras);
License Management
Built-in support for 80+ SPDX licenses:
import { KADI_LICENSES, searchLicenses, isValidLicense } from 'kadi4mat-client';
// Get all available licenses
console.log(KADI_LICENSES);
// Search for specific licenses
const ccLicenses = searchLicenses('creative commons');
// Validate a license ID
if (isValidLicense('MIT')) {
// Valid license
}
Error Handling
Comprehensive error types for robust applications:
import { KadiError } from 'kadi4mat-client';
try {
await client.createRecord({ /* ... */ });
} catch (error) {
if (error instanceof KadiError) {
console.error('API Error:', error.message);
console.error('Status:', error.statusCode);
console.error('Response:', error.response);
}
}
Repository
- GitHub: https://github.com/fcskit/kadi4mat-client
- Issues: Report bugs or request features
- License: MIT
Related Projects
- Obsidian Kadi4Mat Sync - Obsidian plugin for syncing notes to Kadi4Mat
- Kadi4Mat - Research data repository platform
Support
- π Documentation
- π¬ GitHub Discussions
- π Issue Tracker