SDK Exports
The SDK provides three main export paths for different use cases.
@logbook/sdk/client
The main API client with typed methods for all endpoints.
typescript
import { createClient } from "@logbook/sdk/client"
const client = createClient({
baseUrl: "https://api.logbook.so",
})Client Configuration
typescript
interface ClientConfig {
baseUrl: string
timeout?: number
headers?: Record<string, string>
}Authentication
typescript
// Set bearer token
client.setAuthToken(accessToken)
// Set API key
client.setApiKey(apiKey)
// Clear auth
client.clearAuth()Available Services
The client exposes services matching API controllers:
typescript
client.books // Book operations
client.users // User operations
client.readings // Reading tracking
client.clubs // Book clubs
client.accounts // Account management@logbook/sdk/types
TypeScript types for all API models.
typescript
import type {
Book,
User,
Reading,
CreateBookRequest,
UpdateBookRequest,
PaginatedResponse,
} from "@logbook/sdk/types"
// Use in your code
function displayBook(book: Book) {
console.log(book.title, book.author)
}
// Request types
const request: CreateBookRequest = {
title: "The Great Gatsby",
author: "F. Scott Fitzgerald",
isbn: "978-0743273565",
}Common Types
| Type | Description |
|---|---|
Book | Book entity |
User | User entity |
Reading | Reading session |
Account | Organization account |
PaginatedResponse<T> | Paginated list wrapper |
ApiError | Error response |
@logbook/sdk/axios
Pre-configured Axios instance for advanced use cases.
typescript
import { axiosInstance } from "@logbook/sdk/axios"
// Add custom interceptors
axiosInstance.interceptors.request.use((config) => {
// Custom logic
return config
})
// Make raw requests
const response = await axiosInstance.get("/v1/custom-endpoint")Interceptors
The instance includes:
- Request logging (development)
- Error transformation
- Auth header injection
Custom Instance
Create your own configured instance:
typescript
import axios from "axios"
import { createClient } from "@logbook/sdk/client"
const customAxios = axios.create({
baseUrl: "https://api.logbook.so",
timeout: 30000,
})
// Pass to client
const client = createClient({
baseUrl: "https://api.logbook.so",
axiosInstance: customAxios,
})