Skip to content

[SDK] No public way to create ApiConnectionAction for custom/unlisted managed connectors #1542

Description

@CamyDee

Describe the Bug

The Logic Apps Standard SDK (Microsoft.Azure.Workflows.Sdk
1.0.0-preview.1) provides ~1,300 auto-generated typed managed
connector methods via WorkflowActions.Managed.<Connector>(...).
However, there is no public API to create an ApiConnectionAction
for managed connectors that are not in the typed set.

Specifically, the GenevaAuto connector family used by IcM Agent
Studio workflows (GenevaAuto.Connectors/IcM Kusto queries,
GenevaAuto.Connectors/HtmlTemplate, GenevaAuto.Connectors/
Notifications) has no typed SDK binding.

  • ApiConnectionAction has an internal constructor
  • ApiConnectionActionInput has a public constructor
  • WorkflowManagedActions has no generic/escape-hatch method
  • The class is not sealed, but cannot be subclassed because the
    only constructor is internal (not protected)

This means codeful workflows cannot use any managed connector
that isn't in the pre-generated typed set.

Plan Type

Standard

Steps to Reproduce the Bug or Issue

To Reproduce

// This is what we'd like to do — no public API exists:
var kustoQuery = WorkflowActions.Managed
    .CreateApiConnection(
        connectionName: "kusto",
        method: "post",
        path: "/ListKustoResults/false",
        body: new { cluster = "...", db = "...", csl = "..." });

// Workaround attempted — reflection works but is fragile:
var input = new ApiConnectionActionInput("/path", "post", "kusto");
input.Body = new { ... };
var ctor = typeof(ApiConnectionAction)
    .GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)
    .First();
var action = (IWorkflowAction)ctor.Invoke(new object[] { input });
// This produces valid JSON but relies on internal API

Expected behavior

A public factory method on WorkflowManagedActions or
WorkflowActions.BuiltIn that accepts path, method,
connectionName, and body — producing a standard
ApiConnectionAction that generates "Type": "ApiConnection"
JSON with proper Host.Connection.ReferenceName binding.

Suggested API:

WorkflowActions.Managed.ApiConnection(
    connectionName: "kusto",
    method: "post",
    path: "/ListKustoResults/false",
    body: () => new { ... })

Actual behavior

No public API exists. The only alternative is HttpAction which
generates "Type": "Http" — functionally different (no managed
connection binding, different auth model).

Workflow JSON

Screenshots or Videos

No response

Additional context

Impact

Teams migrating existing Logic Apps workflows to codeful SDK that
use any connector outside the 1,300 pre-generated set (e.g.,
GenevaAuto/Geneva family, custom connectors, private connectors)
are blocked from achieving parity with their JSON-authored
workflows.

Environment

  • Microsoft.Azure.Workflows.Sdk: 1.0.0-preview.1
  • .NET: net8.0
  • OS: Windows 11

Additional context

We verified via reflection that ApiConnectionActionInput is
fully public and the internal ctor produces working results —
the generated JSON is structurally identical to what the typed
connectors emit. This suggests the gap is an oversight in API
surface exposure rather than a fundamental limitation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions