@mochabug/adapt-plugin-toolkit
Version:
The API toolkit to facilitate mochabug adapt plugin development
388 lines • 13.9 kB
TypeScript
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { ServiceDefinition, ServiceDefinitionJson } from "./service_definition_pb";
import type { Vertex, VertexJson } from "./vertex_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file mochabugapis/adapt/plugins/v1/manifest.proto.
*/
export declare const file_mochabugapis_adapt_plugins_v1_manifest: GenFile;
/**
* Manifest describes a plugin and its properties.
*
* ## Architecture Overview
*
* A plugin consists of:
* 1. **Vertices**: The actual workflow nodes that users add to automation graphs
* 2. **Service Definitions**: Flat declarations of services (OAuth2, HTTP Proxy, Variables, Groups, OneOf)
* 3. **System Services**: String array referencing service definitions used at the plugin level
*
* ## Service Architecture
*
* **Service definitions are ALWAYS flat** - they exist at the top level of the manifest
* and are never nested within each other. This includes:
* - Oauth2Definition
* - HttpProxyDefinition
* - VariableDefinition
* - GroupedDefinition (references other flat definitions)
* - OneOfDefinition (references other flat definitions)
*
* **Services are referenced by name as strings**. Service lists are string arrays where each
* string must match a ServiceDefinition's `name`. Services exist at two levels:
* - `system_services`: Plugin-level services configured once for the entire plugin
* - `user_services` (in Vertex): Vertex-level services configured per vertex instance
*
* The `optional` field in ServiceDefinition controls whether a service must be configured:
* - `optional: false` (default): User MUST configure this service
* - `optional: true`: User MAY skip configuring this service
*
* ## Example Structure
*
* ```protobuf
* Manifest {
* name: "stripe_plugin"
* version: "1.0.0"
*
* // Flat service definitions at manifest level
* service_definitions: [
* { name: "stripe_oauth", oauth2: {...} },
* { name: "stripe_api", http_proxy: {...} },
* { name: "webhook_secret", variable: {...} }
* ]
*
* // System-level services (plugin-wide)
* // Each string references a service definition name
* system_services: ["stripe_oauth"]
*
* // Vertices with their own service references
* vertices: [
* {
* name: "CreatePayment",
* user_services: ["stripe_api", "webhook_secret"]
* }
* ]
* }
* ```
*
* ## Security Considerations
*
* The platform ensures that secrets and certificates are stored and transmitted securely.
*
* *** Plugin authors must also ensure that their implementations
* handle sensitive data appropriately! ***
*
* @generated from message mochabugapis.adapt.plugins.v1.Manifest
*/
export type Manifest = Message<"mochabugapis.adapt.plugins.v1.Manifest"> & {
/**
* 'name' is the alpha-numeric identifier of the plugin. Must be conform to a ES variable name
*
* @generated from field: string name = 1;
*/
name: string;
/**
* 'version' is the plugin's version, following SemVer 2.0: https://semver.org/
*
* @generated from field: string version = 2;
*/
version: string;
/**
* 'label' is a human-friendly label displayed in the UI.
*
* @generated from field: string label = 3;
*/
label: string;
/**
* 'description' is a short, human-friendly description displayed in the UI.
*
* @generated from field: string description = 4;
*/
description: string;
/**
* 'organization' is the id of the organization the user belongs to.
*
* @generated from field: string organization = 5;
*/
organization: string;
/**
* 'homepage' is the plugin's homepage URL.
*
* @generated from field: optional string homepage = 6;
*/
homepage?: string;
/**
* 'repository' is the plugin's repository URL.
*
* @generated from field: optional string repository = 7;
*/
repository?: string;
/**
* 'bugs' is the URL or email for reporting bugs.
*
* @generated from field: optional string bugs = 8;
*/
bugs?: string;
/**
* 'author' is the name of the plugin's author.
*
* @generated from field: optional string author = 9;
*/
author?: string;
/**
* 'logo' is an optional path to the plugin logo.
* The logo will be resized to a maximum of 80x80 pixels.
* - Supported file formats:
* - GIF: .gif
* - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp
* - PNG: .png
* - SVG: .svg
* - WEBP: .webp
* - AVIF: .avif
*
* @generated from field: optional string logo = 10;
*/
logo?: string;
/**
* 'vertices' is a list of vertices that constitute the plugin.
* this is filled in automatically when configurating a project on the filesystem
*
* @generated from field: repeated mochabugapis.adapt.plugins.v1.Vertex vertices = 11;
*/
vertices: Vertex[];
/**
* 'service_definitions' are flat service definitions that can be referenced by bindings.
*
* All service definitions exist at this top level - they are NEVER nested.
* Definitions can be referenced by:
* - system_services (plugin-level bindings)
* - user_services in vertices (vertex-level bindings)
*
* Each definition has a unique name used for referencing in bindings.
* Service types: OAuth2, HTTP Proxy, Variable, Group, OneOf.
*
* @generated from field: repeated mochabugapis.adapt.plugins.v1.ServiceDefinition service_definitions = 12;
*/
serviceDefinitions: ServiceDefinition[];
/**
* 'system_services' are plugin-level services configured once for the entire plugin.
*
* System services are:
* - Configured by plugin administrators (via PostPluginSettings API)
* - Shared across all vertices in the plugin
* - Required to be configured before the plugin can be used (status = ACTIVE), unless marked optional
*
* This is a string array where each string directly references a ServiceDefinition by its name.
* Plugin code accesses these services using the referenced service name.
*
* The `optional` field in the ServiceDefinition controls whether configuration is required:
* - If ServiceDefinition.optional = false (default): MUST be configured
* - If ServiceDefinition.optional = true: MAY be skipped
*
* Example:
* service_definitions: [
* { name: "github_oauth", oauth2: {...} },
* { name: "analytics", oauth2: {...}, optional: true }
* ]
* system_services: ["github_oauth", "analytics"]
* Plugin code references: "github_oauth", "analytics"
*
* IMPORTANT: For OAuth2 CODE grant type services, the service definition name is used
* for callback URL generation.
*
* @generated from field: repeated string system_services = 13;
*/
systemServices: string[];
};
/**
* Manifest describes a plugin and its properties.
*
* ## Architecture Overview
*
* A plugin consists of:
* 1. **Vertices**: The actual workflow nodes that users add to automation graphs
* 2. **Service Definitions**: Flat declarations of services (OAuth2, HTTP Proxy, Variables, Groups, OneOf)
* 3. **System Services**: String array referencing service definitions used at the plugin level
*
* ## Service Architecture
*
* **Service definitions are ALWAYS flat** - they exist at the top level of the manifest
* and are never nested within each other. This includes:
* - Oauth2Definition
* - HttpProxyDefinition
* - VariableDefinition
* - GroupedDefinition (references other flat definitions)
* - OneOfDefinition (references other flat definitions)
*
* **Services are referenced by name as strings**. Service lists are string arrays where each
* string must match a ServiceDefinition's `name`. Services exist at two levels:
* - `system_services`: Plugin-level services configured once for the entire plugin
* - `user_services` (in Vertex): Vertex-level services configured per vertex instance
*
* The `optional` field in ServiceDefinition controls whether a service must be configured:
* - `optional: false` (default): User MUST configure this service
* - `optional: true`: User MAY skip configuring this service
*
* ## Example Structure
*
* ```protobuf
* Manifest {
* name: "stripe_plugin"
* version: "1.0.0"
*
* // Flat service definitions at manifest level
* service_definitions: [
* { name: "stripe_oauth", oauth2: {...} },
* { name: "stripe_api", http_proxy: {...} },
* { name: "webhook_secret", variable: {...} }
* ]
*
* // System-level services (plugin-wide)
* // Each string references a service definition name
* system_services: ["stripe_oauth"]
*
* // Vertices with their own service references
* vertices: [
* {
* name: "CreatePayment",
* user_services: ["stripe_api", "webhook_secret"]
* }
* ]
* }
* ```
*
* ## Security Considerations
*
* The platform ensures that secrets and certificates are stored and transmitted securely.
*
* *** Plugin authors must also ensure that their implementations
* handle sensitive data appropriately! ***
*
* @generated from message mochabugapis.adapt.plugins.v1.Manifest
*/
export type ManifestJson = {
/**
* 'name' is the alpha-numeric identifier of the plugin. Must be conform to a ES variable name
*
* @generated from field: string name = 1;
*/
name?: string;
/**
* 'version' is the plugin's version, following SemVer 2.0: https://semver.org/
*
* @generated from field: string version = 2;
*/
version?: string;
/**
* 'label' is a human-friendly label displayed in the UI.
*
* @generated from field: string label = 3;
*/
label?: string;
/**
* 'description' is a short, human-friendly description displayed in the UI.
*
* @generated from field: string description = 4;
*/
description?: string;
/**
* 'organization' is the id of the organization the user belongs to.
*
* @generated from field: string organization = 5;
*/
organization?: string;
/**
* 'homepage' is the plugin's homepage URL.
*
* @generated from field: optional string homepage = 6;
*/
homepage?: string;
/**
* 'repository' is the plugin's repository URL.
*
* @generated from field: optional string repository = 7;
*/
repository?: string;
/**
* 'bugs' is the URL or email for reporting bugs.
*
* @generated from field: optional string bugs = 8;
*/
bugs?: string;
/**
* 'author' is the name of the plugin's author.
*
* @generated from field: optional string author = 9;
*/
author?: string;
/**
* 'logo' is an optional path to the plugin logo.
* The logo will be resized to a maximum of 80x80 pixels.
* - Supported file formats:
* - GIF: .gif
* - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp
* - PNG: .png
* - SVG: .svg
* - WEBP: .webp
* - AVIF: .avif
*
* @generated from field: optional string logo = 10;
*/
logo?: string;
/**
* 'vertices' is a list of vertices that constitute the plugin.
* this is filled in automatically when configurating a project on the filesystem
*
* @generated from field: repeated mochabugapis.adapt.plugins.v1.Vertex vertices = 11;
*/
vertices?: VertexJson[];
/**
* 'service_definitions' are flat service definitions that can be referenced by bindings.
*
* All service definitions exist at this top level - they are NEVER nested.
* Definitions can be referenced by:
* - system_services (plugin-level bindings)
* - user_services in vertices (vertex-level bindings)
*
* Each definition has a unique name used for referencing in bindings.
* Service types: OAuth2, HTTP Proxy, Variable, Group, OneOf.
*
* @generated from field: repeated mochabugapis.adapt.plugins.v1.ServiceDefinition service_definitions = 12;
*/
serviceDefinitions?: ServiceDefinitionJson[];
/**
* 'system_services' are plugin-level services configured once for the entire plugin.
*
* System services are:
* - Configured by plugin administrators (via PostPluginSettings API)
* - Shared across all vertices in the plugin
* - Required to be configured before the plugin can be used (status = ACTIVE), unless marked optional
*
* This is a string array where each string directly references a ServiceDefinition by its name.
* Plugin code accesses these services using the referenced service name.
*
* The `optional` field in the ServiceDefinition controls whether configuration is required:
* - If ServiceDefinition.optional = false (default): MUST be configured
* - If ServiceDefinition.optional = true: MAY be skipped
*
* Example:
* service_definitions: [
* { name: "github_oauth", oauth2: {...} },
* { name: "analytics", oauth2: {...}, optional: true }
* ]
* system_services: ["github_oauth", "analytics"]
* Plugin code references: "github_oauth", "analytics"
*
* IMPORTANT: For OAuth2 CODE grant type services, the service definition name is used
* for callback URL generation.
*
* @generated from field: repeated string system_services = 13;
*/
systemServices?: string[];
};
/**
* Describes the message mochabugapis.adapt.plugins.v1.Manifest.
* Use `create(ManifestSchema)` to create a new message.
*/
export declare const ManifestSchema: GenMessage<Manifest, {
jsonType: ManifestJson;
}>;
//# sourceMappingURL=manifest_pb.d.ts.map