Skip to content

Port Portkey changes through adfd74b, and require workspace_id - #5

Open
vrv-panw wants to merge 8 commits into
mainfrom
portkey-sync-2026-11
Open

vrv-panw wants to merge 8 commits into
mainfrom
portkey-sync-2026-11

Conversation

@vrv-panw

@vrv-panw vrv-panw commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Brings over everything merged to Portkey-AI/openapi since the base (3fa53f2, 2026-09-04) up to adfd74b. Structure only: prose and samples are left to the overlay and the grounding gate, as for every other operation. Also commits the uncommitted workspace_id work from 2026-10-01.

One commit per change:

Commit From upstream What
Require workspace_id… — Oct 1 WIP: WorkspaceIdQuery is now required and a uuid, and is added to about 74 operations in place of inline workspace_id
Anthropic integration, WIF, tags 4d58839, 3107701 AnthropicConfiguration; provider_auth_type + OAuth/WIF fields on OpenAI; tags on integrations and a tags filter on GET /integrations
Analytics filters + groups 66c520a, f76bb1a deployment_id, include_all_workspaces and exclude_workspace_slugs on all 22 analytics ops; GET /analytics/groups/{a2a,mcp,workspaces} (control plane)
createThreadMessage 8938f71 Frees createMessage for /messages. Docs URL pinned at assistants/create-message
Egress Allowlist 8f91369 5 ops, admin plane, tag renamed Egress Allowlist
Access Policies 2bc08ce, 700ece6 5 ops, control plane
Messages 9283142, 6ac6e5d POST /messages, /messages/count_tokens, gateway
README — Counts, provenance, known gaps

Planes are Vrushank's calls, recorded as how: vrushank.2026-11-02 in _project/planes.yaml.

Checks. build.py --check and check.py pass. lint.py fails, but only on the path-params finding that has been on main since #3 (POST /api-keys/{sub-type} vs /api-keys/{id}). This PR adds no other lint regressions. The one baseline change is operation-operationId going from 45 to 48: the three new analytics groups have no operationId upstream, and the README says not to invent one.

Expect oasdiff to report breaking changes, mainly from workspace_id becoming required, plus the operationId rename.

🤖 Generated with Claude Code

vrv-panw and others added 8 commits November 2, 2026 13:33
Work in progress from 2026-10-01, committed as found. The shared
WorkspaceIdQuery parameter becomes required and a uuid, and replaces the
inline workspace_id query parameters it duplicated. It is added to the
guardrail, API key, config, feedback, logs, MCP server, MCP integration,
model and model pricing operations that did not carry it.

build.py --check and check.py pass. lint.py fails on one path-params
finding, but that predates this change: it came in with PR #3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Structure only, from Portkey-AI/openapi 4d58839 and 3107701:

- AnthropicConfiguration, a new provider in the integration create,
  update and detail schemas
- provider_auth_type (apiKey, oauthClientCredentials, wif) and the OAuth
  and workload-identity fields on OpenAIConfiguration
- a nullable string-map `tags` on the create and update requests, and a
  `tags` filter on GET /integrations

The Anthropic entries in the three oneOfs are written as allOf: [$ref]
beside a title rather than title beside $ref, as their siblings are, so
they label the same way without adding to the no-$ref-siblings baseline.
Properties that already existed keep their shape; the build added empty
description keys to them, and those were taken back out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oups

Structure only, from Portkey-AI/openapi 66c520a and f76bb1a:

- deployment_id, include_all_workspaces and exclude_workspace_slugs on
  all 22 analytics operations, in upstream's positions
- GET /analytics/groups/a2a, /mcp and /workspaces, on the control plane
  like the other analytics groups (Vrushank, 2026-11-02). They also
  carry WorkspaceIdQuery, as every other analytics operation here does;
  upstream has no such parameter. Like upstream, they do not take the
  two workspace-inclusion filters.

The three new operations have no operationId upstream, as none of the
analytics operations do, so the operation-operationId baseline goes from
45 to 48. Inventing one would create an SDK contract key nobody chose;
the build gave them method-and-path docs URLs instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From Portkey-AI/openapi 8938f71. POST /threads/{thread_id}/messages and
the incoming POST /messages were both createMessage upstream; this frees
the name for the Messages API, as upstream did.

The docs URL is pinned at assistants/create-message rather than moved to
the derived create-thread-message. The page is published and links point
at it; adopting the new URL is a docs migration, done with --apply-hrefs
when docs are ready. The operationId change itself does reach SDKs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Structure only, from Portkey-AI/openapi 8f91369: list, create, get,
update and delete on /egress-allowlist, and their four schemas. On the
admin plane by Vrushank's call, 2026-11-02.

The upstream tag is "Egress-Allowlist"; it ships as "Egress Allowlist",
following the Title Case convention in tags-map.yaml, in the
Administration group. The build stamped five docs URLs and stubbed the
overlay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Structure only, from Portkey-AI/openapi 2bc08ce and its follow-up
700ece6: list, create, get, update and delete on /policies/access, the
AccessPolicyId parameter and nine schemas. On the control plane beside
the rate and usage limit policies, by Vrushank's call, 2026-11-02, and in
the Administration navigation group.

GET /policies/access takes WorkspaceIdQuery upstream as well, so it is
required here like everywhere else that carries it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Structure only, from Portkey-AI/openapi 9283142 with its fix 6ac6e5d:
POST /messages (createMessage) and POST /messages/count_tokens
(countMessageTokens), with 19 schemas, a Messages tag in the Inference
group and the same trace headers /chat/completions takes. The gateway is
the root server, so no override is written.

6ac6e5d replaced a duplicate CreateMessageRequest with
CreateAnthropicMessageRequest; only the fixed shape is ported. Two empty
descriptions beside a $ref in it were removed rather than added to the
no-$ref-siblings baseline -- OpenAPI 3.0 ignores them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Counts were stale since the Decisions endpoint and are refreshed: 131
paths, 203 operations and docs URLs, 521 components, 46 tags, 48
operations without an operationId, 117 baselined lint findings.

Provenance now says what "the linkage is closed" does and does not mean
-- nothing follows Portkey automatically, but changes can be ported as
decisions -- and lists what has been. Known gaps gains the path-params
lint failure that has been on main since PR #3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown

⚠️ 87 breaking change(s) in openapi.yaml

87 changes: 86 error, 1 warning, 0 info
error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/cache/hit-rate
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/cache/latency
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/cost
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/errors
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/errors/rate
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/errors/stacks
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/errors/status-codes
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/feedbacks
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/feedbacks/ai-models
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/feedbacks/scores
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/feedbacks/weighted
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/latency
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/requests
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/requests/rescued
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/tokens
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/users
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/graphs/users/requests
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/groups/ai-models
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/groups/metadata/{metadataKey}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/groups/provider
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/groups/users
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /analytics/summary/cache
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /api-keys
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /api-keys
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /api-keys/{id}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /api-keys/{id}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /api-keys/{id}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /api-keys/{id}/rotate
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /api-keys/{sub-type}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /configs
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /configs
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /configs/{slug}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /configs/{slug}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /configs/{slug}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /configs/{slug}/versions
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /feedback
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /feedback/{id}
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /guardrails
		the `query` request parameter `workspace_id` became required

error	[new-required-request-parameter] at openapi.yaml
	in API POST /guardrails
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /guardrails/{guardrailId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /guardrails/{guardrailId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /guardrails/{guardrailId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /guardrails/{guardrailId}/mcp-servers
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /guardrails/{guardrailId}/mcp-servers
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /guardrails/{guardrailId}/mcp-servers/{mcpServerId}
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /mcp-servers
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /mcp-servers
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /mcp-servers
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /mcp-servers/{mcpServerId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /mcp-servers/{mcpServerId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /mcp-servers/{mcpServerId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /mcp-servers/{mcpServerId}/capabilities
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /mcp-servers/{mcpServerId}/capabilities
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API DELETE /mcp-servers/{mcpServerId}/connections
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API DELETE /mcp-servers/{mcpServerId}/connections
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /mcp-servers/{mcpServerId}/connections
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /mcp-servers/{mcpServerId}/connections
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /mcp-servers/{mcpServerId}/test
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /mcp-servers/{mcpServerId}/user-access
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /mcp-servers/{mcpServerId}/user-access
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /model-configs/pricing/{provider}/{model}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /models/{model}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /models/{model}
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /policies/rate-limits
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /policies/rate-limits
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /policies/rate-limits
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /policies/rate-limits/{rateLimitsPolicyId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /policies/rate-limits/{rateLimitsPolicyId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /policies/rate-limits/{rateLimitsPolicyId}
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /policies/usage-limits
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /policies/usage-limits
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /policies/usage-limits
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API DELETE /policies/usage-limits/{policyUsageLimitsId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /policies/usage-limits/{policyUsageLimitsId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /policies/usage-limits/{policyUsageLimitsId}
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API GET /policies/usage-limits/{policyUsageLimitsId}/entities
		added the new required `query` request parameter `workspace_id`

error	[new-required-request-parameter] at openapi.yaml
	in API PUT /policies/usage-limits/{policyUsageLimitsId}/entities/{entityId}/reset
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /providers
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /providers
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[new-required-request-parameter] at openapi.yaml
	in API POST /providers
		added the new required `query` request parameter `workspace_id`

error	[request-parameter-became-required] at openapi.yaml
	in API DELETE /providers/{slug}
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API DELETE /providers/{slug}
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[request-parameter-became-required] at openapi.yaml
	in API GET /providers/{slug}
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API GET /providers/{slug}
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

error	[request-parameter-became-required] at openapi.yaml
	in API PUT /providers/{slug}
		the `query` request parameter `workspace_id` became required

error	[request-parameter-type-changed] at openapi.yaml
	in API PUT /providers/{slug}
		for the `query` request parameter `workspace_id`, the `format` was changed from `none` to `uuid`

warning	[response-property-one-of-added] at openapi.yaml
	in API GET /integrations/{slug}
		added `subschema #2: Anthropic` to the `allOf[subschema #2]/configurations` response property `oneOf` list for the response status `200`
		This compared the `allOf` branches one at a time, so another branch may still guarantee what this one dropped. Run with --flatten-allof to merge the branches and compare what they describe together.


This does not block the merge. A breaking change is sometimes the
correct change. It does mean any KB claim describing these
operations should be reviewed, and the spec.changed webhook will
carry the grading to the KB on merge.

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.

1 participant