Packbase

Common Types

Shared SDK types for paginated responses and client configuration.

Paginated<T>

Some endpoints return a long list in smaller pages. Paginated<T> describes one page. The T identifies the item type in the list. For example, the data array in Paginated<Notification> contains notifications.

interface Paginated<T> {
  data: T[]
  has_more: boolean
  cursor?: string
  total_count?: number
}

Field reference

FieldTypeDescription
dataT[]The current page of results.
has_morebooleantrue if there are more pages available.
cursorstring?A server-generated bookmark to pass in the next request. Do not change it.
total_countnumber?Total matching items across all pages (not always returned).

Usage

import type { Paginated } from '@packbase/sdk-ts'

async function loadPage(cursor?: string): Promise<Paginated<Notification>> {
  return pb.inbox.fetch({ limit: 50, cursor })
}

let page = await loadPage()
while (page.has_more) {
  page = await loadPage(page.cursor)
}

PackbaseSDKConfig

This is the structure of the optional object that you pass to new PackbaseSDK(...). Each property has a ?. Thus, you can omit properties that you do not require. You can also omit the object.

interface PackbaseSDKConfig {
  /**
   * Base URL of the Packbase API, without a trailing slash.
   * @default 'https://vgs.packbase.app'
   */
  baseUrl?: string

  /**
   * Clerk JWT or API key.
   * When set, the SDK sends Authorization: Bearer <apiKey> and disables cookies.
   * When omitted, the SDK uses credentials: 'include' (browser session cookie).
   */
  apiKey?: string
  /** Disable the constructor's automatic `pb.me()` request. @default true */
  autoLogin?: boolean
  cache?: boolean
  cacheTtlMs?: number
  cacheNamespace?: string
}

Examples

// Default (cookie auth, production API)
const pb = new PackbaseSDK()

// API key auth
const pb = new PackbaseSDK({ apiKey: process.env.PACKBASE_KEY })

// Custom base URL (staging or local dev)
const pb = new PackbaseSDK({
  apiKey: 'my-key',
  baseUrl: 'http://localhost:3001',
})

The cache is off unless cache is true. cacheTtlMs sets the cache time for a GET response in milliseconds. cacheNamespace keeps cached data separate for each user or session.

The default value of autoLogin is true. Set it to false for a public-only client. The exported SDK interface is authoritative. The documentation does not specify resources that PackbaseSDK does not export.

RequestOptions

Read and write methods accept shared request controls. Operation-specific option types extend this shape.

interface RequestOptions {
  cache?: boolean
  cacheTtlMs?: number
  signal?: AbortSignal
}

signal cancels native fetches and howl polling. Cache fields apply only to reads.

Import

import type { Paginated, PackbaseSDKConfig } from '@packbase/sdk-ts'

On this page