Connector Manifest
Every connector is defined by a manifest that describes its metadata, capabilities, and configuration schema.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Unique identifier (lowercase, hyphens) |
name | string | Yes | Display name |
version | string | Yes | SemVer (e.g. 1.0.0) |
description | string | Yes | Short description (max 200 chars) |
category | enum | Yes | zahlungen, produktivitaet, buchhaltung, crm |
author | string | Yes | Developer or company name |
icon | string | Yes | Icon identifier |
requiredPlan | enum | Yes | starter, pro, or agentur |
hasWebhook | boolean | Yes | Whether it receives webhooks |
webhookPathTemplate | string | No | URL template with :token |
webhookEvents | string[] | No | List of event types |
docsUrl | string | No | External documentation link |
tags | string[] | No | Searchable tags |
settingsSchema | array | Yes | Configuration form definition |
Settings Field Schema
| Field | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Setting key (stored in config) |
label | string | Yes | Display label |
type | enum | Yes | text, password, select, toggle |
placeholder | string | No | Input placeholder text |
encrypted | boolean | No | Encrypt with AES-256-GCM |
helpText | string | No | Help text below input |
Example: Stripe Connector
{
"slug": "stripe",
"name": "Stripe",
"version": "1.0.0",
"description": "Import incoming invoices from Stripe webhook events.",
"category": "zahlungen",
"author": "Monetro",
"icon": "stripe",
"requiredPlan": "starter",
"hasWebhook": true,
"webhookPathTemplate": "/api/payment-import/stripe/:token",
"webhookEvents": ["invoice.payment_succeeded"],
"docsUrl": "https://docs.stripe.com/webhooks",
"tags": ["payments", "webhooks", "stripe"],
"settingsSchema": [
{
"key": "secret",
"label": "Webhook-Secret (whsec_...)",
"type": "password",
"encrypted": true,
"placeholder": "whsec_..."
},
{
"key": "defaultSupplierId",
"label": "Default Supplier (optional)",
"type": "text"
},
{
"key": "defaultCategoryId",
"label": "Default Account (optional)",
"type": "text"
}
]
}