The Google and Microsoft plugins provide specialized support for two of the largest API ecosystems. While both are built on top of the OpenAPI plugin's execution engine, they include custom logic for Discovery Doc aggregation (Google) and Workload-based Path Filtering (Microsoft) to simplify the registration of these massive, multi-service APIs.
The Google plugin facilitates bundling multiple Google APIs into a single Executor integration. This allows a single OAuth consent flow to cover tools from disparate services like Gmail, Calendar, and Drive.
Google provides "Discovery Documents" instead of standard OpenAPI specs for many services. The plugin includes a specialized converter to transform these into Executor-compatible OpenAPI 3.1.0 documents.
list method), the converter prefixes operationId with the service name (e.g., gmail.users.messages.list) packages/plugins/google/src/sdk/plugin.test.ts30-34The following diagram illustrates how the AddGoogleSource UI interacts with the SDK to produce a unified integration.
Google Registration Pipeline
Sources: packages/plugins/google/src/react/AddGoogleSource.tsx109-130 packages/plugins/google/src/sdk/plugin.ts218-250 packages/plugins/google/src/sdk/discovery.ts140-160
The plugin provides a default health check that prefers the oauth2.userinfo.get operation, as it is lightweight and common to most Google bundles packages/plugins/google/src/sdk/plugin.ts55-90
The Microsoft plugin focuses on the Microsoft Graph API. Because the Graph spec is gargantuan (tens of thousands of operations), the plugin allows users to select specific "Workload Presets" to filter the tools available in the integration.
Presets are defined in presets.ts and map to specific path prefixes, exact paths, and required OAuth scopes.
| Preset ID | Workload | Path Prefixes | Scopes |
|---|---|---|---|
mail | Outlook Mail | /me/messages, /users/{id}/messages | Mail.ReadWrite, Mail.Send |
calendar | Outlook Calendar | /me/events, /users/{id}/events | Calendars.ReadWrite |
files | OneDrive | /me/drive, /drives | Files.ReadWrite.All |
Sources: packages/plugins/microsoft/src/sdk/presets.ts86-190
During registration, the plugin fetches the full Microsoft Graph OpenAPI spec but applies a microsoftGraphKeepPathItem filter. This "tree-shakes" the spec, keeping only the operations that match the selected presets or custom scopes packages/plugins/microsoft/src/sdk/graph.ts126-157
The plugin automatically registers two OAuth templates for every Microsoft integration:
common tenant endpoint packages/plugins/microsoft/src/sdk/graph.ts169-175This diagram maps the high-level presets to the internal filtering logic.
Microsoft Graph Filtering Logic
Sources: packages/plugins/microsoft/src/sdk/graph.ts126-157 packages/plugins/microsoft/src/sdk/graph.ts223-230
Both plugins utilize the shared @executor-js/react components for a consistent registration experience.
Both use useIntegrationIdentity to handle namespace and slug generation, ensuring that names like "Google" or "Microsoft Graph" are correctly slugified and checked for collisions in the local database packages/plugins/google/src/react/AddGoogleSource.tsx63-67 packages/plugins/microsoft/src/react/AddMicrosoftSource.tsx100-105
addGoogleBundle or addMicrosoftGraph atoms are invoked, which call the respective SDK plugin methods to perform the heavy lifting of spec fetching and conversion packages/plugins/google/src/react/atoms.ts packages/plugins/microsoft/src/react/atoms.ts| Entity | Location | Role |
|---|---|---|
convertGoogleDiscoveryBundleToOpenApi | google/src/sdk/discovery.ts | Merges multiple Google JSON Discovery docs into one OAI3 spec. |
microsoftGraphKeepPathItem | microsoft/src/sdk/graph.ts | Predicate function used to filter the Graph spec based on selected workloads. |
googlePlugin | google/src/sdk/plugin.ts | The main plugin definition for Google, extending the core SDK. |
microsoftPlugin | microsoft/src/sdk/plugin.ts | The main plugin definition for Microsoft. |
GoogleProductPicker | google/src/react/GoogleProductPicker.tsx | UI component for selecting which Google APIs to include in the bundle. |
Sources: packages/plugins/google/src/sdk/discovery.ts394-400 packages/plugins/microsoft/src/sdk/graph.ts257-260 packages/plugins/google/src/sdk/plugin.ts285-290 packages/plugins/microsoft/src/sdk/plugin.ts150-155
Refresh this wiki