JavaScript SDK
Admin API
23 admin sub-modules for building admin dashboards — content types, users, plugins, RBAC, tenants, and more.
The client.admin namespace provides full access to admin-only endpoints. Requires admin authentication.
Overview
client.admin.contentTypes // Content type schema CRUD
client.admin.users // User management
client.admin.posts // Post management
client.admin.pages // Page management
client.admin.comments // Comment moderation
client.admin.categories // Category management
client.admin.tags // Tag management
client.admin.media // Media management
client.admin.reusableBlocks // Reusable content blocks
client.admin.plugins // Plugin management
client.admin.tenants // Multi-tenant management
client.admin.rbac // Roles & permissions
client.admin.options // System options
client.admin.webhooks // Webhook management
client.admin.audit // Audit log
client.admin.crons // Cron job management
client.admin.tokens // API token management
client.admin.workflows // Workflow engine
client.admin.wallets // Wallet management
client.admin.currencies // Currency management
client.admin.orders // Order management
client.admin.payment // Payment channel management
client.admin.products // Product management
client.admin.stats // Dashboard statisticsContent Types
// List all schemas
const schemas = await client.admin.contentTypes.list();
// Get a schema
const schema = await client.admin.contentTypes.get("portfolio");
// Create schema
const created = await client.admin.contentTypes.create({
name: "Portfolio",
singular: "portfolio",
plural: "portfolios",
table: "portfolios",
fields: [...],
protocols: ["timestampable"],
});
// Update schema
await client.admin.contentTypes.update("portfolio", { fields: [...] });
// Delete schema (preserves database table)
await client.admin.contentTypes.delete("portfolio");Users
client.admin.users.list(page?, pageSize?)
client.admin.users.get(id)
client.admin.users.update(id, data)
client.admin.users.delete(id)
client.admin.users.batch({ action: "suspend", ids: [...] })Posts
client.admin.posts.list(query?)
client.admin.posts.get(slug)
client.admin.posts.create(body)
client.admin.posts.update(id, body)
client.admin.posts.delete(id)
client.admin.posts.batch({ action: "publish", ids: [...] })Pages
client.admin.pages.list(query?)
client.admin.pages.get(id)
client.admin.pages.create(body)
client.admin.pages.update(id, body)
client.admin.pages.updateStatus(id, status)
client.admin.pages.delete(id)
client.admin.pages.reorder([{ id, sort_order }, ...])
client.admin.pages.batch({ action, ids })Comments
client.admin.comments.list(query?)
client.admin.comments.updateStatus(id, status)
client.admin.comments.delete(id)
client.admin.comments.batch({ action: "approve", ids: [...] })Categories & Tags
// Categories
client.admin.categories.list(page?, pageSize?)
client.admin.categories.create(body)
client.admin.categories.update(id, body)
client.admin.categories.delete(id)
client.admin.categories.batch({ action, ids })
// Tags
client.admin.tags.list(page?, pageSize?)
client.admin.tags.create(body)
client.admin.tags.update(id, body)
client.admin.tags.delete(id)
client.admin.tags.batch({ action, ids })Media
client.admin.media.upload(file, options?)
client.admin.media.list(page?, pageSize?)
client.admin.media.delete(id)
client.admin.media.batch({ action: "delete", ids: [...] })Reusable Blocks
client.admin.reusableBlocks.list()
client.admin.reusableBlocks.get(id)
client.admin.reusableBlocks.create(body)
client.admin.reusableBlocks.update(id, body)
client.admin.reusableBlocks.delete(id)
client.admin.reusableBlocks.batch({ action, ids })Plugins
// List all plugins (with health & metrics)
const plugins = await client.admin.plugins.list(1, 20);
// Get plugin detail
const plugin = await client.admin.plugins.get("com.example.crm");
// Lifecycle
await client.admin.plugins.enable("com.example.crm");
await client.admin.plugins.disable("com.example.crm");
await client.admin.plugins.reload("com.example.crm");
await client.admin.plugins.unload("com.example.crm");
// Batch operations
await client.admin.plugins.batch({
action: "enable",
ids: ["com.example.crm", "com.example.seo"],
});Tenants
client.admin.tenants.list(page?, pageSize?)
client.admin.tenants.get(id)
client.admin.tenants.create({ name, slug })
client.admin.tenants.update(id, data)
client.admin.tenants.delete(id)
client.admin.tenants.batch({ action, ids })RBAC
// Roles
client.admin.rbac.listRoles()
client.admin.rbac.createRole({ name, description? })
client.admin.rbac.updateRole(id, data)
client.admin.rbac.deleteRole(id)
client.admin.rbac.batchRoles({ action, ids })
// Permissions
client.admin.rbac.getPermissions(roleId)
client.admin.rbac.setPermissions(roleId, permissions)Options
client.admin.options.list()
client.admin.options.get(key)
client.admin.options.set(key, value)
client.admin.options.delete(key)
client.admin.options.batchUpdate({ key1: "val1", key2: "val2" })
client.admin.options.getPublic()Webhooks
client.admin.webhooks.list(page?, pageSize?)
client.admin.webhooks.create({ url, events, description?, enabled? })
client.admin.webhooks.get(id)
client.admin.webhooks.update(id, data)
client.admin.webhooks.delete(id)
client.admin.webhooks.batch({ action, ids })Audit Log
client.admin.audit.list(page?, pageSize?)
client.admin.audit.get(id)Cron Jobs
client.admin.crons.list()
client.admin.crons.create({ name, schedule, handler })
client.admin.crons.get(id)
client.admin.crons.update(id, data)
client.admin.crons.delete(id)
client.admin.crons.toggle(id, enabled)
client.admin.crons.listLogs({ schedule_id?, limit? })
client.admin.crons.cleanupLogs()
client.admin.crons.batch({ action, ids })API Tokens
client.admin.tokens.list()
client.admin.tokens.create({ name, scopes, expires_at? })
// Returns { ...token, token: "raw_token_string" }
client.admin.tokens.delete(id)Workflows
client.admin.workflows.list()
client.admin.workflows.create({ name, steps })
client.admin.workflows.get(id)
client.admin.workflows.delete(id)
client.admin.workflows.start(id, payload?)
client.admin.workflows.listInstances(page?, pageSize?)
client.admin.workflows.getInstance(id)
client.admin.workflows.executeStep(instanceId, { step, action, data? })
client.admin.workflows.cancelInstance(instanceId)
client.admin.workflows.getStepLogs(instanceId)Wallets
client.admin.wallets.listWallets(query?)
client.admin.wallets.listTransactions(query?)
client.admin.wallets.credit({ user_id, currency, amount, reference_type?, reference_id? })
client.admin.wallets.debit({ user_id, currency, amount, reference_type?, reference_id? })
client.admin.wallets.userTransactions(userId, query?)
client.admin.wallets.userCurrencyTransactions(userId, currency, query?)
client.admin.wallets.reversal(txDocId, body?)Currencies
client.admin.currencies.list()
client.admin.currencies.get(code)
client.admin.currencies.create(body)
client.admin.currencies.update(code, body)Orders
client.admin.orders.list(query?)
client.admin.orders.get(id)
client.admin.orders.pay(id)
client.admin.orders.ship(id, { tracking_number?, carrier? })
client.admin.orders.cancel(id)
client.admin.orders.refund(id)
client.admin.orders.updateRemark(id, { admin_remark })
client.admin.orders.stats()Payment
client.admin.payment.listChannels(page?, pageSize?)
client.admin.payment.getChannel(id)
client.admin.payment.createChannel(body)
client.admin.payment.updateChannel(id, body)
client.admin.payment.deleteChannel(id)
client.admin.payment.listOrders(query?)
client.admin.payment.getOrder(id)
client.admin.payment.refundOrder(id, body)
client.admin.payment.listTransactions(query?)
client.admin.payment.listRefunds(query?)Products
client.admin.products.list(page?, pageSize?)
client.admin.products.get(id)
client.admin.products.create(body)
client.admin.products.update(id, body)
client.admin.products.delete(id)Statistics
// Dashboard overview
const overview = await client.admin.stats.overview();
// Content stats for a table
const contentStats = await client.admin.stats.content("posts");
// Trends over time
const trends = await client.admin.stats.trends("posts", 30);List All Routes
const routes = await client.admin.listRoutes();
// Returns all registered API routes