All notable changes to the APIOps CLI are documented in this file.
The format is inspired by Keep a Changelog. This project uses Semantic Versioning with alpha pre-release tags.
0.3.0-alpha.0 — 2026-06-25
- Removed unimplemented CLI options —
--spec-format(extract command) and--otel(global) have been removed from the CLI, docs, and specs. Both were documented but never implemented, so no functional behavior changes for users who weren't relying on them (#165)
- Wildcard pattern matching in filter configuration — all name-based filter fields (
apis,backends,namedValues, etc.) now accept glob-style patterns with*and?. Exact names still work alongside patterns (#160) - Workspace sub-resource filtering — nested workspace filters are now applied at runtime (previously documented but not implemented). Wildcard patterns in the
workspaceslist trigger discovery-then-filter instead of being used as literal names. Addsschemasfield onWorkspaceSubFilter(#160) - Token substitution validation in generated GitHub Actions publish workflow —
apiops initnow adds a validation step between token substitution and publish that greps for unresolved `{#[...]#}` tokens and fails the job with a clear list of unmapped names. Mirrors the existing Azure DevOps behavior (#158) - MCP publish from embedded API metadata — MCP configuration is now read/written exclusively from
apiInformation.json; the redundantmcpServerInformation.jsonsidecar is no longer produced or consumed. Legacy sidecars are ignored. Tool operation references are rewritten from source to target ARM IDs before override application so overrides still win (#173) - Association scope tracking for round-trip correctness — extract/publish now records and reconstructs whether each linked resource (e.g. workspace product → built-in group) is service-scoped or workspace-scoped, producing correct ARM paths in both directions. Backward-compatible with legacy artifact files that only contain
name. 409 "link already exists" responses are treated as idempotent successes (#175)
- Resource group log masking preserves meaningful segments —
Protect-ResourceGroupNamenow detects resource group names ending with a long numeric suffix (>=6 digits, typical of GitHubrun_idvalues) and preserves the last dash-separated segment before the number. Output goes fromrg-...1553476torg-...src-27781553476, making source vs target groups distinguishable in logs (#168) - Override config template no longer hardcodes a secret — the generated
configuration.override.yamlfromapiops initnow uses a `{#[DB_Connection_String]#}` token placeholder for the connection-string example (aligned with the pipeline substitution format) and drops the confusing "APIOps Toolkit" reference comment (#164)
- Incremental publish behavior documented — clarified that changes to override files alone don't trigger incremental publish; only API/policy/etc. artifact changes do (#159)
- Environment overrides guide improvements — expanded examples and clarifications in
docs/guides/environment-overrides.md(#166) - All-types round-trip test imports Petstore Swagger — the all-resource-types integration test now imports the canonical Petstore Swagger spec in both V2 and V3 forms, exercising a broader surface (#171)
0.2.1-alpha.0 — 2026-06-12
- Token substitution in publish pipelines — `{#[TOKEN_NAME]#}` placeholders are now resolved during publish, matching APIOps Toolkit behavior (#127)
- Named value reference resolution — logger credentials now correctly resolve
{{displayName}}refs across environments; auto-generated named values are published when an override is provided (#145) - Redacted secret guard — secret named values with
*** REDACTED ***placeholder are skipped during publish with a clear warning (#145) - Schema ref stripping extended — removes stale
schemaId/typeNamefromqueryParameters,headers,templateParameters, and response headers during operation PATCH (#145) - Workspace ARM paths — use workspace-specific ARM paths for association resources (tag links, product links) (#136)
- Comprehensive environment override documentation — added examples for all resource types, auto-generated named value walkthrough, and gotchas for secrets and loggers (#145)
- Override config template — added logger
credentials.instrumentationKeyexample (#145)
0.2.0-alpha.0 — 2026-06-10
- A2A (Agent-to-Agent) API support — full extract/publish round-trip for A2A protocol APIs (#89)
- ApiOperation as first-class resource — operations are persisted individually with PATCH reconciliation for drift-free round-trips (#104)
- Async LRO polling — long-running APIM operations are polled to completion; OpenAPI specs are sanitized before import (#112)
- Workspace support on V2 SKUs — workspace-scoped resources (APIs, products, backends, named values, tags) are extracted and published with correct ARM paths (#128, #129)
- Integration test split into 7 phases — deploy, extract, validate, override, publish, compare, teardown — each runnable independently (#92)
- Override & filter config alignment — fully aligned with APIOps Toolkit array-based format (#102, #115)
- Schema ref stripping — removes stale
schemaId/typeNamefrom operation representations during post-import PATCH reconciliation (#111) - Windows cmd.exe quoting — fixed stdin and argument quoting issues in
Invoke-MaskedProcess(#110)
- Extract filter documentation — documented full filter surface and explicit exclude-all semantics (#103)
- Hardened teardown — Phase 7 handles APIM delete/purge races and soft-delete conflicts (#122)
- Package-build test README — added single-test run command for quick iteration (#87)
0.1.7-alpha.0 — 2026-06-01
- Workspace-scoped resource refactor — uses
workspaceSupportedflag to determine which resource types are available in workspace containers (#84)
- Premium SKU round-trip fixes — resolved test failures specific to Premium tier (#80)
- Workspace unit test fixes — corrected test failures introduced by workspace refactor (#93)
- Air-gapped setup walkthroughs — step-by-step guides for GitHub Actions and Azure DevOps in disconnected environments (#77)
- APIOps terminology update — replaced "APIOps v1/v2" with "APIOps Toolkit/CLI" across all docs (#94)
- API version docs correction — fixed default API version in documentation (#81)
- Integration test skill notes — added AADSTS700016 and UI access troubleshooting (#83)
0.1.6-alpha.0 — 2026-05-21
- MCP server support — extract and publish MCP server configurations (#36, #51)
- Publish
--commit-idflag — CLI-over-env precedence for commit tracking (#47) - Reusable integration test workflow —
workflow_callsupport for CI reuse (#42)
- AzDO publish pipeline flag — corrected
--overrides(was--override) in Azure DevOps template (#75) - Empty override file handling — gracefully handles empty or missing override files (#33)
- User-facing documentation — added getting started guides, architecture diagram, and agent charters (#69, #56)
- Open-source readiness — copyright headers, sensitivity audit, accuracy policies (#78)
- Security hardening — added SecurityExpert to Squad team (#70)
0.1.5-alpha.1 — 2026-05-07
- Azure DevOps
init— interactive Copilot prompt with managed identity / WIF support (#31) - Public npm registry support — install directly from
@peterhauge/apiops-clion npmjs.com (#28)
- Empty override file — fixed crash when override file exists but is empty (#33)
- Dependency bump — updated
uuidand@azure/msal-node(#26)
- Auth documentation — clarified OIDC vs client-secret auth paths (#27)
- Azure DevOps manual setup — updated instructions for
apiops init --ci azure-devops(#30)
0.1.4-alpha.1 — 2026-04-29
- User-Agent header — all REST API calls now include a
User-Agentheader for tracing (#21) - Optional
--cli-packageparameter — enables using apiops from the public npm registry without specifying a local package path (#20)