@redseat/api
v0.3.0
Published
TypeScript API client library for interacting with Redseat servers
Downloads
4,141
Readme
@redseat/api
TypeScript API client library for interacting with Redseat servers. This package provides a comprehensive set of APIs for managing libraries, media, tags, people, series, movies, and more.
Overview
The @redseat/api package is organized into three main API classes:
- RedseatClient: Low-level HTTP client with automatic token management and local server detection
- ServerApi: Server-level operations (libraries, settings, plugins, credentials)
- LibraryApi: Library-specific operations (media, tags, people, series, movies, encryption)
Quick Start
import { RedseatClient, ServerApi, LibraryApi } from '@redseat/api';
import { IServer, ILibrary } from '@redseat/api';
// Initialize the client
const client = new RedseatClient({
server: {
id: 'server-id',
url: 'example.com',
port: 443
},
getIdToken: async () => {
// Return your ID token from your auth provider
return 'your-id-token';
}
});
// Get server API
const serverApi = new ServerApi(client);
// Get libraries
const libraries = await serverApi.getLibraries();
// Get library API for a specific library
const library = libraries[0];
const libraryApi = new LibraryApi(client, library.id!, library);
// For encrypted libraries, set the encryption key
if (library.crypt) {
await libraryApi.setKey('your-passphrase');
}
// Get media
const medias = await libraryApi.getMedias();Documentation
client.md - RedseatClient documentation
- HTTP client configuration
- Automatic token refresh
- Local server detection
- Request/response interceptors
server.md - ServerApi documentation
- Server-level operations
- Library management
- Settings and plugins
- Credentials management
libraries.md - LibraryApi documentation
- Media operations (upload, download, update)
- Tags, people, series, movies management
- Face recognition operations
- Encryption support for encrypted libraries
encryption.md - Encryption module documentation
- Key derivation (PBKDF2)
- Text and binary encryption/decryption
- File encryption with thumbnails
- Cross-platform compatibility
test.md - Testing guide
- How to run tests
- Test file descriptions
- Test coverage information
agents.md - AI agent instructions
- Documentation maintenance guidelines
- Code change workflow
- Best practices for keeping docs updated
Package Exports
Classes
RedseatClient- HTTP client with authenticationServerApi- Server-level API operationsLibraryApi- Library-level API operations
Interfaces
IFile- Media file interfaceILibrary- Library interfaceITag- Tag interfaceIPerson- Person interfaceISerie- Series interfaceIMovie- Movie interfaceIServer- Server interfaceMediaRequest- Media query filter- And more (see
src/interfaces.ts)
Encryption Functions
deriveKey()- Derive encryption key from passphraseencryptText()/decryptText()- Text encryptionencryptBuffer()/decryptBuffer()- Binary encryptionencryptFile()/decryptFile()- File encryption with metadatagetRandomIV()- Generate random IV
Utilities
fetchServerToken()- Fetch server authentication token- Base64 encoding/decoding utilities
- Crypto utilities for cross-platform support
Installation
npm install @redseat/apiRequirements
- Node.js 15+ (for Web Crypto API support)
- TypeScript 5.0+
- Axios 1.11.0+
License
See the main project LICENSE file.
