Integrations

The Integrations module is the central catalog and connector hub for managing external-tool integrations across the Stella Ops platform. It is the reference for operators registering connectors and for engineers consuming the integration catalog from other modules.

Purpose

Integrations provides a unified API for registering, configuring, and health-checking third-party service connectors such as GitHub, GitLab, and Harbor. It is the single source of truth for all external-tool configurations, letting other modules discover and consume integration details without embedding provider-specific logic.

Status

AttributeValue
MaturityProduction
Sourcesrc/Integrations/

Quarantined surfaces (not shippable in this release)

Two SCM-feedback surfaces are built but quarantined per PLAN_20260704 findings A4/A5 and decision D3 (quarantine, not delete) — they are preserved for a future SCM-feedback initiative but are not wired and must not be presented as available:

The sanctioned scan ingress and feedback path is CLI-in-CI: emit SBOM/SARIF with the scanner (stella sbom generate / stella sbom attach, stella scan image --format sarif) in your pipeline and upload with the platform’s own action (e.g. github/codeql-action/upload-sarif).

Key Features

API Surface

All catalog endpoints are mounted under /api/v1/integrations, require a valid tenant (RequireTenant()), and are authorized by the integration scopes below. (Grounded in IntegrationEndpoints.MapIntegrationEndpoints.)

MethodRouteScopePurpose
GET/api/v1/integrationsintegration:readList integrations (filter by type/provider/status/search; paged, sortable)
GET/api/v1/integrations/{id}integration:readGet integration by id
POST/api/v1/integrationsintegration:writeCreate integration
PUT/api/v1/integrations/{id}integration:writeUpdate integration
DELETE/api/v1/integrations/{id}integration:writeSoft-delete integration
POST/api/v1/integrations/{id}/testintegration:operateTest connection (audited)
POST/api/v1/integrations/{id}/resolve-credentialsintegration:operateResolve an AEAD-sealed credential envelope for trusted in-cluster callers (audited; plaintext is never returned or logged)
POST/api/v1/integrations/{id}/discoverintegration:operateDiscover provider resources (audited)
GET/api/v1/integrations/{id}/healthintegration:readLatest durable health status
GET/api/v1/integrations/{id}/impactintegration:readImpact map
GET/api/v1/integrations/providersintegration:readSupported providers (includeTestOnly opt-in)
POST/api/v1/integrations/ai-code-guard/runintegration:operateStandalone AI Code Guard run (deterministic secret/attribution/license scan)

Adjacent route groups:

The Integrations service does not currently host any background workers.

Dependencies

Upstream (this module depends on)

Downstream (modules that depend on this)

Cross-module consumers do not read the Integrations database directly. They depend only on StellaOps.Integrations.Contracts and resolve entries through the read-only IIntegrationCatalog seam, whose HTTP implementation calls GET /api/v1/integrations/{id} with the caller’s bearer (tenant resolved from the stellaops:tenant claim, integration:read enforced). When no base address is configured, each consumer falls back to a fail-closed NullIntegrationCatalog.

Note: as of the source reviewed, Signals (SCM webhooks) and the Job Engine / Orchestrator do not consume the Integrations catalog seam. Earlier drafts listing them as downstream consumers were inaccurate.

Configuration

Key settings (grounded in Program.cs):

Current packaged connector profiles:

The recommended overlay intentionally leaves Integrations:PluginsDirectory empty and uses Integrations:PluginProfileRoots for the recommended root; base mirror/storage connectors remain host-owned in this migration slice.

Scopes (Authority)

The service registers exactly three integration scopes (StellaOpsScopes):

IDE Extensions (VS Code, JetBrains)

As of Sprint 214, the IDE extension plugins (previously src/Extensions/) are housed under src/Integrations/__Extensions/. These are non-.NET projects (TypeScript for VS Code, Kotlin for JetBrains) that act as thin API clients for the Orchestrator and Authority services. See the Architecture doc for details.