Skip to content

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

TypeDescription
BookBook entity
UserUser entity
ReadingReading session
AccountOrganization account
PaginatedResponse<T>Paginated list wrapper
ApiErrorError 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,
})

Built with VitePress