UNPKG

@mochabug/adapt-plugin-toolkit

Version:

The API toolkit to facilitate mochabug adapt plugin development

388 lines 13.9 kB
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