Skip to content

chore: remove api version references from code - #3756

Merged
akshaydeo merged 1 commit into
devfrom
05-26-chore_remove_api_version_references_from_code
May 26, 2026
Merged

chore: remove api version references from code#3756
akshaydeo merged 1 commit into
devfrom
05-26-chore_remove_api_version_references_from_code

Conversation

@TejasGhatte

@TejasGhatte TejasGhatte commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

Removes the api_version field from AzureKeyConfig across the codebase. Bifrost now uses the Azure OpenAI v1 API, which does not require an api-version query parameter, making this field obsolete.

Changes

  • Removed api_version from AzureKeyConfig in UI types, schemas, and form validation
  • Removed azure_api_version from the OpenAPI spec and governance schema
  • Removed api_version from all example and test config files
  • Added a deprecated notice for api_version in config.schema.json to maintain backward compatibility for existing configs that may still include the field

Type of change

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Chore/CI

Affected areas

  • Core (Go)
  • Transports (HTTP)
  • Providers/Integrations
  • Plugins
  • UI (React)
  • Docs

How to test

# Core/Transports
go version
go test ./...

# UI
cd ui
pnpm i || npm i
pnpm test || npm test
pnpm build || npm run build

Verify that Azure provider keys configured without api_version continue to route requests correctly to Azure OpenAI endpoints.

Breaking changes

  • Yes
  • No

The api_version field is no longer accepted in AzureKeyConfig. Existing configurations that include api_version should remove it. The field has been marked as deprecated in the JSON schema to avoid hard failures, but it will have no effect if present.

Related issues

Security considerations

No security implications. This change removes an unused configuration field and does not affect authentication or secret handling.

Checklist

  • I read docs/contributing/README.md and followed the guidelines
  • I added/updated tests where appropriate
  • I updated documentation where needed
  • I verified builds succeed (Go and UI)
  • I verified the CI pipeline passes locally if applicable

Copy link
Copy Markdown
Collaborator Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


tejas ghatte seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@TejasGhatte
TejasGhatte marked this pull request as ready for review May 26, 2026 09:35
@coderabbitai

coderabbitai Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR removes the azure_api_version field from Azure key configuration across the entire codebase. The api_version parameter is removed from TypeScript type definitions, validation schemas, OpenAPI documentation, and all example and test configurations. A deprecation marker is added to the configuration schema.

Changes

Azure API Version Field Removal

Layer / File(s) Summary
Type definitions and validation schemas
ui/lib/types/config.ts, ui/lib/types/schemas.ts, ui/lib/schemas/providerForm.ts
AzureKeyConfig interface and DefaultAzureKeyConfig constant remove the optional api_version field; azureKeyConfigSchema and provider form schema validation are updated accordingly.
Configuration schema deprecation
transports/config.schema.json
The azure_key_config.api_version field is marked as a deprecated string property with a description that Bifrost uses Azure OpenAI v1 API and does not require the parameter.
OpenAPI documentation updates
docs/openapi/openapi.json, docs/openapi/schemas/management/governance.yaml
The azure_api_version schema definition is removed from the OpenAPI document; the TableKey schema no longer includes that field.
Configuration examples and tests
examples/configs/withprompushgateway/config.json, examples/configs/withvirtualkeys/config.json, tests/config.json, tests/integrations/python/config.json, tests/integrations/typescript/config.json
The api_version entry is removed from azure_key_config in all example configurations and test files.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • maximhq/bifrost#3661: Azure v1 migration that removes the api-version requirement from Azure OpenAI integration, aligning with this PR's field removal.

Suggested reviewers

  • danpiths
  • roroghost17
  • akshaydeo

Poem

🐰 An azure field departs with grace,
No more api_version in this place,
From types to tests, configs align,
The schema shrinks—one less design,
Bifrost hops toward OpenAI v1's light! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is a template with all sections present but all content areas are empty or unchecked. Fill in all required sections with actual content: provide a summary of changes, specify the type of change, check affected areas, describe testing steps, indicate if breaking changes exist, and complete the checklist.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: remove api version references from code' clearly summarizes the main change across the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 05-26-chore_remove_api_version_references_from_code

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 5/5

Safe to merge — all changes are mechanical removals of a now-unused field, with backward compatibility preserved in the JSON Schema via a deprecated string entry.

Every changed file removes a single deprecated field in a consistent way. The JSON Schema retains the field as a no-op deprecated string so existing configs don't fail validation, and Go's default json.Unmarshal silently drops the unknown key at runtime. Existing schema tests continue to exercise the field and should still pass. No logic paths are affected.

No files require special attention.

Important Files Changed

Filename Overview
transports/config.schema.json Adds deprecated api_version string field back inside azure_key_config so that existing file-based configs with the field still pass JSON Schema validation (schema uses additionalProperties: false).
ui/lib/types/config.ts Removes api_version from the AzureKeyConfig TypeScript interface and its default value (DefaultAzureKeyConfig).
ui/lib/schemas/providerForm.ts Removes api_version from the Zod AzureKeyConfigSchema used in the provider form validation.
ui/lib/types/schemas.ts Removes api_version: envVarSchema.optional() from azureKeyConfigSchema.
docs/openapi/openapi.json Removes the azure_api_version property block from the Azure key config object in the OpenAPI spec.
docs/openapi/schemas/management/governance.yaml Removes the azure_api_version field from the governance YAML schema.
examples/configs/withvirtualkeys/config.json Removes api_version from three Azure key entries in the example config.
tests/config.json Removes api_version from the Azure key config in the core test config file.
tests/integrations/python/config.json Removes api_version from the Azure key config in the Python integration test config.
tests/integrations/typescript/config.json Removes api_version from the Azure key config in the TypeScript integration test config.
examples/configs/withprompushgateway/config.json Removes api_version from the Azure key entry in the Prometheus push-gateway example config.

Reviews (1): Last reviewed commit: "chore: remove api version references fro..." | Re-trigger Greptile

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@transports/config.schema.json`:
- Around line 2429-2431: The "api_version" schema description is ambiguous about
runtime behavior; update the "api_version" field's description to explicitly
state it's deprecated and will be ignored at runtime if provided (e.g.,
"Deprecated: ignored if present; Bifrost uses Azure OpenAI v1 which does not
require an api-version parameter"). Modify the description string for the
api_version property in the JSON schema (the "api_version" property) to include
"ignored if present" so consumers know it has no effect.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dec824a0-3794-423f-a4a5-7d14481c3776

📥 Commits

Reviewing files that changed from the base of the PR and between 90487f6 and f56090c.

📒 Files selected for processing (11)
  • docs/openapi/openapi.json
  • docs/openapi/schemas/management/governance.yaml
  • examples/configs/withprompushgateway/config.json
  • examples/configs/withvirtualkeys/config.json
  • tests/config.json
  • tests/integrations/python/config.json
  • tests/integrations/typescript/config.json
  • transports/config.schema.json
  • ui/lib/schemas/providerForm.ts
  • ui/lib/types/config.ts
  • ui/lib/types/schemas.ts
💤 Files with no reviewable changes (7)
  • docs/openapi/openapi.json
  • tests/integrations/python/config.json
  • ui/lib/types/schemas.ts
  • ui/lib/schemas/providerForm.ts
  • docs/openapi/schemas/management/governance.yaml
  • ui/lib/types/config.ts
  • examples/configs/withvirtualkeys/config.json

Comment thread transports/config.schema.json

akshaydeo commented May 26, 2026

Copy link
Copy Markdown
Contributor

Merge activity

  • May 26, 10:00 AM UTC: A user started a stack merge that includes this pull request via Graphite.
  • May 26, 10:00 AM UTC: @akshaydeo merged this pull request with Graphite.

@akshaydeo
akshaydeo merged commit 9d6dfed into dev May 26, 2026
14 of 15 checks passed
@akshaydeo
akshaydeo deleted the 05-26-chore_remove_api_version_references_from_code branch May 26, 2026 10:00
@coderabbitai coderabbitai Bot mentioned this pull request May 26, 2026
18 tasks
akshaydeo pushed a commit that referenced this pull request May 26, 2026
## Summary

Removes the `api_version` field from `AzureKeyConfig` across the codebase. Bifrost now uses the Azure OpenAI v1 API, which does not require an `api-version` query parameter, making this field obsolete.

## Changes

- Removed `api_version` from `AzureKeyConfig` in UI types, schemas, and form validation
- Removed `azure_api_version` from the OpenAPI spec and governance schema
- Removed `api_version` from all example and test config files
- Added a deprecated notice for `api_version` in `config.schema.json` to maintain backward compatibility for existing configs that may still include the field

## Type of change

- [ ] Bug fix
- [ ] Feature
- [x] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [x] Transports (HTTP)
- [x] Providers/Integrations
- [ ] Plugins
- [x] UI (React)
- [x] Docs

## How to test

```sh
# Core/Transports
go version
go test ./...

# UI
cd ui
pnpm i || npm i
pnpm test || npm test
pnpm build || npm run build
```

Verify that Azure provider keys configured without `api_version` continue to route requests correctly to Azure OpenAI endpoints.

## Breaking changes

- [x] Yes
- [ ] No

The `api_version` field is no longer accepted in `AzureKeyConfig`. Existing configurations that include `api_version` should remove it. The field has been marked as deprecated in the JSON schema to avoid hard failures, but it will have no effect if present.

## Related issues

## Security considerations

No security implications. This change removes an unused configuration field and does not affect authentication or secret handling.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable
@akshaydeo akshaydeo mentioned this pull request May 26, 2026
akshaydeo added a commit that referenced this pull request May 26, 2026
## ✨ Features

- **Azure v1 API Migration** — Migrated Azure provider to the v1 API:
removed the `api-version` query parameter and the
`/openai/deployments/{model}/...` URL pattern in favor of
`/openai/v1/{operation}`; the `api_version` field has been dropped from
`AzureKeyConfig` (#3661, #3756)
- **EnvVar Support for OTEL & Prometheus Configs** — `CollectorURL`,
`MetricsEndpoint`, headers, push gateway URL, and basic auth credentials
can now be sourced from environment variables (e.g.,
`env.OTEL_COLLECTOR_URL`); added a new `ConfigMarshallerPlugin`
interface that lets plugins control storage/redaction round-trips
(#3651)
- **OTel Extra Header Forwarding** — `x-bf-eh-*` extra headers forwarded
to upstream providers are now also emitted on the request span under
`gen_ai.request.extra_header.*` for end-to-end tracing (#3730)
- **OTel Semantic Conventions** — Aligned OTel attribute keys with the
OpenTelemetry GenAI spec (canonical `gen_ai.*` and new `bifrost.*`
attributes); legacy attributes are retained in parallel to avoid
breaking existing dashboards (#3732)
- **VK Quota with Provider Configs** — `GetVirtualKeyQuotaByValue` and
the `getVirtualKeyQuota` HTTP response now include `provider_configs`
with their budgets and rate limits (#3721)
- **MCP Temp Token Non-Auth Toggle** — Added
`mcp_enable_temp_token_auth` client config flag to gate short-lived MCP
token minting for non-authenticated users (#3720)
- **Responses Stream in JSON Parser** — `jsonparser` plugin now handles
OpenAI Responses API streaming (`ResponsesStreamRequest`) in addition to
chat completions (#3749)
- **Session API Rework** — Logout now calls both the password-based
session logout and OAuth logout endpoints and resets all RTK Query cache
state (#3698)

## 🐞 Fixed

- **Streaming Latency for Observability** — Deferred root span
termination to the trace completer callback for streaming requests so
request latency is no longer inflated by header-flush time (#3762)
- **Stream Cancellation Race** — Set `BifrostContextKeyConnectionClosed`
before closing the stream and short-circuit `idleTimeoutReader.Read`
when the connection is already closed to avoid panics and hangs on
cancellation (#3733)
- **Bedrock Cache Points** — Strip cache points from Bedrock requests
for models that do not support prompt caching (e.g., GLM, Llama) to
avoid Converse API errors (#3754)
- **Bedrock Empty Text Blocks** — Skip empty/nil text blocks during
Bedrock response conversion to avoid invalid messages (#3747)
- **Bedrock Reasoning + Tools** — Preserve reasoning content blocks on
assistant turns that also contain tool calls in the Bedrock chat
converter (#3690)
- **Bedrock Search Content & Video** — Restored search content and video
parts that were being dropped from Bedrock-native passthrough requests
(#3729)
- **Structured Output Stop Reason** — Fixed an incorrect `tool_calls`
finish reason when structured output is combined with extended-thinking
tools (#3685)
- **Gemini Tool Schema Passthrough** — Forward full tool parameter
schemas via `parametersJsonSchema` instead of the lossy `parameters`
form; corrected tool response role to `user`; resolved structured output
+ tools conflict (#3761)
- **Anthropic Stop Reason & Tool Versions** — Normalized stop reason
mapping (`end_turn` to `stop`, `tool_use` to `tool_calls`, `max_tokens`
to `length`) and upgraded `text_editor_20250124`/`str_replace_editor` to
`text_editor_20250728` for computer-use tools (#3761)
- **Azure Endpoint Redaction** — Fixed a panic when
`AzureKeyConfig.Endpoint` is a literal value rather than an env
reference (#3761)
- **Auth Middleware Path Match** — Match temp-token auth middleware
whitelist against the request path only, not the full URI with query
parameters (#3737)
- **Governance Blocked Models UI** — Restored the missing Blocked Models
create/edit UI in the VK provider config sheet (#3750)
- **Logging Plugin Cleanup Drain** — Fixed a shutdown race where
`batchWriter` could drop in-flight log entries; `Cleanup` now drains
both the recovered batch and remaining queue within a 30-second budget
(#3717)
- **Model Rankings Empty Entries** — Excluded entries with empty `model`
values from model rankings matview queries so blank rows no longer
surface in the UI (#3758)
- **User Filter Duplicates** — Recreated `mv_filter_users` matview to
require non-empty `user_name`, eliminating duplicate filter dropdown
entries (#3764)
- **User Filter Display Name** — Use `user_name` instead of `user_id` as
the display label for users in logging filters (#3691)
- **Large Numeric ID Precision** — Preserve large numeric IDs in URL
search params by skipping JSON parsing for plain strings (#3692)

## 🔧 Refactors & Chores

- **Error Propagation for GetAvailable\* APIs** — `GetAvailable*`
methods on `LoggerPlugin`/`LogManager` now return wrapped errors instead
of silently logging and returning empty slices (#3759)
- **Governance Blocklist Matching** — Use `slices.Contains` for VK
blocked-model matching for clearer code with identical semantics (#3727)
- **Exported `ResolvePeriod`** — Renamed `resolvePeriod` to
`ResolvePeriod` so external packages can reuse the period parsing
(#3763)

## 📚 Docs

- **OTEL Env Var Documentation** — Documented `env.VAR_NAME` support for
`collector_url`, `metrics_endpoint`, and headers in OTEL/Prometheus
plugin docs
- **OTEL OSS Features & Examples** — Added OTEL documentation to the OSS
features list with usage examples (#3731)
- **Anthropic Auth Recommendation** — Recommend `ANTHROPIC_AUTH_TOKEN`
over `ANTHROPIC_CUSTOM_HEADERS` for Claude Code authentication (#3686)
@akshaydeo akshaydeo mentioned this pull request May 27, 2026
18 tasks
akshaydeo added a commit that referenced this pull request May 27, 2026
## Summary

This PR releases Bifrost OSS `v1.5.5` and Enterprise `v1.4.4`, bumping all module pins from `v1.5.12`/`v1.3.12` to `v1.5.13`/`v1.3.13` across core, framework, and all plugins. It also hardens the Docker manifest shell scripts, expands CI egress allowlists, and updates documentation to reflect the new SCIM-based user provisioning feature.

## Changes

- **Module version bumps**: All `go.mod`/`go.sum` files updated from `core v1.5.12` → `v1.5.13`, `framework v1.3.12` → `v1.3.13`, and all plugin versions incremented accordingly (`compat`, `governance`, `jsonparser`, `logging`, `maxim`, `mocker`, `otel`, `prompts`, `semanticcache`, `telemetry`).
- **Docker manifest scripts**: Added `#!/usr/bin/env bash` shebang and `set -euo pipefail` to `create-docker-manifest.sh` and `create-docker-manifest-ubi9.sh`; quoted all variable expansions and switched `jq -r` to `jq -er` to fail on null digests.
- **CI egress allowlist**: Added `production.cloudfront.docker.com:443` to Docker-related job allowlists, and added `_https._tcp.dl.google.com:443` and `motd.ubuntu.com:443` to the Ubuntu package job allowlist.
- **Changelog files**: Cleared per-module `changelog.md` files (content moved into the new versioned docs). Added `docs/changelogs/v1.5.5.mdx` and `docs/changelogs/ent-v1.4.4.mdx` with full release notes, and registered both in `docs/docs.json`.
- **Documentation**: Replaced the SSO Integration link with a User Provisioning (SCIM) link in both `README.md` and `transports/README.md`.
- **Enterprise v1.4.4 highlights** (documented): Kafka and Google Cloud Pub/Sub observability sinks, chunked streaming with a 100 MB inter-node message ceiling, BigQuery custom labels via env vars using the new `ConfigMarshallerPlugin` interface, temporary access token expiry extensions, and a multi-node cluster integration harness.
- **OSS v1.5.5 highlights** (documented): Azure v1 API migration, env-var support for OTel/Prometheus configs, OTel extra-header forwarding and semantic-convention alignment, virtual key quota including provider configs, Responses API streaming in `jsonparser`, and a batch of Bedrock, Gemini, Anthropic, Azure, and logging plugin fixes.

## Type of change

- [ ] Bug fix
- [x] Feature
- [ ] Refactor
- [x] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [x] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [x] Docs

## How to test

```sh
# Core/Transports
go version
go test ./...

# Verify Docker manifest scripts exit on error
bash -n .github/workflows/scripts/create-docker-manifest.sh
bash -n .github/workflows/scripts/create-docker-manifest-ubi9.sh
```

Validate that the new changelog pages (`changelogs/v1.5.5` and `changelogs/ent-v1.4.4`) render correctly in the docs site.

## Screenshots/Recordings

N/A

## Breaking changes

- [x] Yes
- [ ] No

The Azure provider no longer accepts `api_version` in `AzureKeyConfig` and has migrated to the `/openai/v1/{operation}` URL pattern. See the [v1.4.0 Migration Guide](https://docs.getbifrost.ai/enterprise/migration-guides/v1.4.0) for full details.

## Related issues

#3661, #3756, #3651, #3730, #3732, #3754, #3747, #3690, #3729, #3685, #3733, #3761, #3735, #3721, #3720, #3749, #3698, #3762, #3750, #3727, #3717, #3759, #3758, #3764, #3691, #3692, #3737, #3763

## Security considerations

- The `ConfigMarshallerPlugin` interface redacts secrets (OTel collector URLs, Prometheus push gateway credentials, BigQuery labels) at config storage time and rehydrates them at load time, preventing plaintext secret persistence.
- Docker manifest scripts now use `set -euo pipefail`, preventing silent failures that could result in malformed or missing image manifests being pushed.

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants