@goatlab/metabase
v0.1.4
Published
Metabase API wrapper for TypeScript and Node.js
Readme
@goatlab/metabase
A comprehensive TypeScript wrapper for the Metabase API, providing a fluent interface for admin operations, collections, questions, dashboards, and permission management.
Installation
npm install @goatlab/metabase
# or
pnpm add @goatlab/metabase
# or
yarn add @goatlab/metabaseBasic Usage
import { MetabaseApi } from '@goatlab/metabase'
// Initialize with session token
const api = new MetabaseApi({
baseUrl: 'https://your-metabase-instance.com',
sessionToken: 'your-session-token'
})
// Or initialize with API key (preferred for automation)
const api = new MetabaseApi({
baseUrl: 'https://your-metabase-instance.com',
apiKey: 'your-api-key'
})
// Example: Create a collection
const collectionId = await api.collections.getOrCreate({
collectionName: 'My Reports'
})
// Example: Enable embeddings
await api.admin.enableEmbeddings()Key Features
Static Methods (Pre-authentication)
MetabaseApi.waitForMetabase()- Wait for Metabase instance to be readyMetabaseApi.createAdminUser()- Create initial admin userMetabaseApi.loginAdminUser()- Login and get session token
Admin Operations
api.admin.enableEmbeddings()- Enable embedding functionalityapi.admin.deleteSampleDatabase()- Remove sample databaseapi.admin.disableOnboardingSidebar()- Hide onboarding UIapi.admin.disableTracking()- Disable analytics trackingapi.admin.addDataSource()- Add new database connectionapi.admin.enableActionsInDatasource()- Enable actions for a datasourceapi.admin.createApiKey()- Generate API keysapi.admin.getEmbeddingSecretKey()- Retrieve embedding secret
Collections
api.collections.getOrCreate()- Get or create collection by nameapi.collections.delete()- Delete a collectionapi.collections.deleteAll()- Remove all collections
Questions (Cards)
api.questions.getOrCreate()- Get or create a questionapi.questions.getOrCreateAccounts()- Create accounts-specific question
Dashboards
api.dashboards.getOrCreate()- Get or create dashboard
Permission Groups
api.groups.create()- Create new permission groupapi.groups.getOrCreate()- Get or create group by nameapi.groups.list()- List all groupsapi.groups.disableAllDatabaseAccess()- Revoke all database permissionsapi.groups.disableAllUsersGroupDatabaseAccess()- Disable default user group accessapi.groups.grantDatabaseAccessByPrefix()- Grant access to databases by name prefixapi.groups.setDatabasePermissionsForGroup()- Set specific database permissionsapi.groups.updatePermissions()- Update group permissions
