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.4.0-alpha.2 — 2026-07-02
- Publish no longer aborts on auto-generated logger-credential named values — the pre-flight secret-redaction scan added in v0.4.0-alpha.0 was incorrectly flagging APIM-managed logger credential named values (which legitimately contain
*** REDACTED ***markers from the service).apiops publishnow ignores those auto-generated named values so publishes proceed without manual intervention (#220)
- Added missing
--artifact-dirflag to theapiops initREADME table — the flag was already implemented but wasn't documented in the README options reference (#217) - Polished the environment-overrides and filter guides plus the shipped Copilot prompt templates — added a fallback paragraph pointing users who skipped
apiops initto the prompt source files on GitHub, and cleaned up formatting inapiops-configure-filter.prompt.mdandapiops-configure-overrides.prompt.md(follow-up to #183) (#196)
0.4.0-alpha.0 — 2026-07-01
apiops initoutput filenames renamed — identity setup guides and Copilot prompts are now emitted asAPIOPS-PIPELINE-IDENTITY-SETUP.md/APIOPS-WORKFLOW-IDENTITY-SETUP.mdandapiops-setup-pipeline-identity.prompt.md/apiops-setup-workflow-identity.prompt.md. Generated pipeline files are now namedrun-apiops-extractor.yml/run-apiops-publisher.yml. Users who re-runapiops initafter upgrading will see the new files alongside any previously generated ones; delete the old files if you no longer want them tracked (#200)
- Secret redaction in policy XML —
apiops extractnow redacts inline secrets (including literal bearer tokens inAuthorizationheaders) from extracted policy files while preserving named-value references.apiops publishperforms a pre-flight scan of all artifacts and aborts (including in dry-run mode) if any*** REDACTED ***markers remain, preventing accidental secret exposure (#199) - JSON schemas and Copilot prompts for filter/override configuration — new
schemas/extractor-config.schema.jsonandschemas/override-config.schema.jsonprovide IDE autocompletion forconfiguration.extractor.yamlandconfiguration.{env}.yamlvia theyaml-language-server$schemadirective.apiops initnow also lays downapiops-configure-filter.prompt.mdandapiops-configure-overrides.prompt.mdto conversationally guide users through building these files. Schemas are auto-generated from the TypeScript types on every build so they stay in sync (#183) - Dry-run validation gate in generated publish pipelines — GitHub Actions and Azure DevOps publish templates emitted by
apiops initnow runapiops publish --dry-runbefore every real publish step. If the dry-run fails (connectivity, invalid resources, permission errors), the pipeline halts before touching APIM, preventing partial-failure states (#182) - Identity setup guides rewritten for UI workflows — the manual identity setup guides emitted by
apiops initnow walk users through the Azure portal, Azure DevOps, and GitHub web UIs with step-by-step instructions and links to official docs, while the companion.prompt.mdfiles remain the CLI/scripted path for Copilot-driven setup (#200)
- Removed stale
mcpServerInformation.jsonreferences — follow-up to #173, which moved MCP server configuration intoapiInformation.json. Documentation (docs/reference/artifact-format.md,docs/reference/resource-types.md) and theall-resource-typesintegration test manifest now match the post-#173 artifact layout (#205)
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)