Skip to the content.

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

πŸ”’ Type-Safe

🌐 Universal

πŸ“¦ Developer-Friendly

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

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

Support