Skip to content

Workspace-scoped override properties not applied #118

Closed

Description

@petehauge

User Impact

When using an environment override file (e.g., configuration.prod.yaml) with workspace-scoped overrides like this:

workspaces:
  - name: my-workspace
    properties:
      description: "Production workspace"
    apis:
      - name: my-api
        properties:
          serviceUrl: "https://prod.example.com"
    backends:
      - name: my-backend
        properties:
          url: "https://prod-backend.example.com"

The CLI applies overrides to the workspace container itself (the properties on the workspace entry), but silently ignores all nested child overrides (apis, backends, loggers, etc. within the workspace). Customers migrating from the APIOps Toolkit who use workspace-scoped overrides will find that their workspace child resources are published with dev/staging values instead of the expected production values.

Technical Details

The APIOps Toolkit resolves overrides using a parent chain — when publishing a resource scoped to a workspace (e.g., workspace API my-api in workspace my-workspace), it walks the override config: workspaces → my-workspace → apis → my-api → properties.

The CLI currently:

  • Parses workspace child override sections correctly in config-loader.ts (nested entries under workspaces are stored in OverrideEntry.children)
  • Never applies them — override-merger.ts doesn't check descriptor.workspace to determine if a resource is workspace-scoped, and doesn't look into workspace entry children for the override

Expected Behavior

When publishing a workspace-scoped resource, the override merger should:

  1. Check if the resource's descriptor has a workspace field set
  2. If so, look up the workspace in the workspaces override section
  3. Navigate into that workspace's children to find the appropriate override for the child resource type and name
  4. Apply the override properties via deep merge

This should work for all workspace child types (apis, backends, diagnostics, groups, loggers, namedValues, policyFragments, products, subscriptions, tags, versionSets) including nested API sub-resources (workspace api → diagnostics, operations, policies, releases).

Related

This was identified during the filter/override format alignment work in #114 / PR #115.

Activity

  1. petehauge commented on Jun 18, 2026

    @petehauge
    ContributorAuthor

    Just confirmed today (with copilot) that this is still an issue in the code...

  2. added
    staleNo activity for 30+ days — will be closed if no further activity
    on Aug 7, 2026
  3. github-actions commented on Aug 7, 2026

    @github-actions

    ⚠️ Stale issue notice — This issue has had no activity for 30 day(s).

    It will be automatically closed after 60 days of inactivity.

    To keep this issue open:

    • Leave a comment describing the current status, or
    • Remove the stale label.

    This notice was posted automatically by the stale issue workflow.

  4. added
    P1This sprint
    and removed
    staleNo activity for 30+ days — will be closed if no further activity
    on Aug 27, 2026
  5. ckittel commented on Sep 15, 2026

    @ckittel
    Member

    Pat Altimore (@PatAltimore) please do a Notifications "All" on this one so you can watch the status of this bug so you can push an update to the AAC article that references it.

  6. added a commit that references this issue on Oct 2, 2026
    6c0a0ed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

EnhancementImprovement to existing functionalityP1This sprintclose:fixedFixed by a previous PR or release

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions