---
title: Plugin Registry
description: Plugin Registry protocol schemas
---

{/* ⚠️  AUTO-GENERATED — DO NOT EDIT. Run build-docs.ts to regenerate. Hand-written docs go in content/docs/guides/. */}

# Plugin Registry Protocol

Defines the schema for the plugin discovery and registry system.

This enables plugins from different vendors to be discovered, validated,

and composed together in the ObjectStack ecosystem.

<Callout type="info">
**Source:** `packages/spec/src/kernel/plugin-registry.zod.ts`
</Callout>

## TypeScript Usage

```typescript
import { PluginInstallConfig, PluginQualityMetrics, PluginRegistryEntry, PluginSearchFilters, PluginStatistics, PluginVendor } from '@objectstack/spec/kernel';
import type { PluginInstallConfig, PluginQualityMetrics, PluginRegistryEntry, PluginSearchFilters, PluginStatistics, PluginVendor } from '@objectstack/spec/kernel';

// Validate data
const result = PluginInstallConfig.parse(data);
```

---

## PluginInstallConfig

### Properties

| Property | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| **pluginId** | `string` | ✅ |  |
| **version** | `string` | optional | Defaults to latest |
| **config** | `Record<string, any>` | optional |  |
| **autoUpdate** | `boolean` | optional |  |
| **options** | `Object` | optional |  |


---

## PluginQualityMetrics

### Properties

| Property | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| **testCoverage** | `number` | optional |  |
| **documentationScore** | `number` | optional |  |
| **codeQuality** | `number` | optional |  |
| **securityScan** | `Object` | optional |  |
| **conformanceTests** | `Object[]` | optional |  |


---

## PluginRegistryEntry

### Properties

| Property | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| **id** | `string` | ✅ | Plugin identifier (reverse domain notation) |
| **version** | `string` | ✅ |  |
| **name** | `string` | ✅ |  |
| **description** | `string` | optional |  |
| **readme** | `string` | optional |  |
| **category** | `Enum<'data' \| 'integration' \| 'ui' \| 'analytics' \| 'security' \| 'automation' \| 'ai' \| 'utility' \| 'driver' \| 'gateway' \| 'adapter'>` | optional |  |
| **tags** | `string[]` | optional |  |
| **vendor** | `Object` | ✅ |  |
| **capabilities** | `Object` | optional |  |
| **compatibility** | `Object` | optional |  |
| **links** | `Object` | optional |  |
| **media** | `Object` | optional |  |
| **quality** | `Object` | optional |  |
| **statistics** | `Object` | optional |  |
| **license** | `string` | optional | SPDX license identifier |
| **pricing** | `Object` | optional |  |
| **publishedAt** | `string` | optional |  |
| **updatedAt** | `string` | optional |  |
| **deprecated** | `boolean` | ✅ |  |
| **deprecationMessage** | `string` | optional |  |
| **replacedBy** | `string` | optional | Plugin ID that replaces this one |
| **flags** | `Object` | optional |  |


---

## PluginSearchFilters

### Properties

| Property | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| **query** | `string` | optional |  |
| **category** | `string[]` | optional |  |
| **tags** | `string[]` | optional |  |
| **trustLevel** | `Enum<'official' \| 'verified' \| 'community' \| 'unverified'>[]` | optional |  |
| **implementsProtocols** | `string[]` | optional |  |
| **pricingModel** | `Enum<'free' \| 'freemium' \| 'paid' \| 'enterprise'>[]` | optional |  |
| **minRating** | `number` | optional |  |
| **sortBy** | `Enum<'relevance' \| 'downloads' \| 'rating' \| 'updated' \| 'name'>` | optional |  |
| **sortOrder** | `Enum<'asc' \| 'desc'>` | optional |  |
| **page** | `integer` | optional |  |
| **limit** | `integer` | optional |  |


---

## PluginStatistics

### Properties

| Property | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| **downloads** | `integer` | ✅ |  |
| **downloadsLastMonth** | `integer` | ✅ |  |
| **activeInstallations** | `integer` | ✅ |  |
| **ratings** | `Object` | optional |  |
| **stars** | `integer` | optional |  |
| **dependents** | `integer` | ✅ |  |


---

## PluginVendor

### Properties

| Property | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| **id** | `string` | ✅ | Vendor identifier (reverse domain) |
| **name** | `string` | ✅ |  |
| **website** | `string` | optional |  |
| **email** | `string` | optional |  |
| **verified** | `boolean` | ✅ | Whether vendor is verified by ObjectStack |
| **trustLevel** | `Enum<'official' \| 'verified' \| 'community' \| 'unverified'>` | ✅ |  |


---

