Skip to content

chore(api): clarify project API key update requirements - #4131

Merged
jbeckwith-oai merged 1 commit into
mainfrom
castiron/promotions/pr-301
Oct 20, 2026
Merged

jbeckwith-oai merged 1 commit into
mainfrom
castiron/promotions/pr-301

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Project API-key updates require scopes, an expiration, or both. Record this existing rule with required-only anyOf, and supply valid scopes bodies in synchronous and asynchronous update tests.

Runtime source, WebSocket documentation, and published WebSocket tests are unchanged from the public baseline, including the defaults introduced in #4121.

Validation: 340 published WebSocket tests passed; the reporting-helper suite passed (99 tests, one skipped); scoped lint and formatting passed. The trusted public-main custom-code budget is 7,352 / 10,000. Two fresh independent adversarial review rounds were clean. Current hosted validation is tracked on this PR.

Castiron-Internal-PR: openai/openai-python-internal#301
Castiron-Source-SHA: a3a9cc2797d2e163a6c4efd4ccdc1db6e1a9116d
Castiron-Public-Base-SHA: b1a1a10
@jbeckwith-oai
jbeckwith-oai marked this pull request as ready for review October 20, 2026 20:38
@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner October 20, 2026 20:38
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T20:41:17.814682Z 48183ed Draft marked ready
🔒 Security Review ✅ Completed 2026-10-20T20:43:38.462558Z 48183ed Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@openai-sdks

openai-sdks Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

OkTest Summary

✅ 236/236 SDK tests passed in 10.188s for Python SDK PR #4131.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 274ms
tests/chat-completions-create.test.ts ✅ Passed 249ms
tests/chat-completions-stream.test.ts ✅ Passed 340ms
tests/files-content-binary.test.ts ✅ Passed 235ms
tests/files-create-multipart.test.ts ✅ Passed 231ms
tests/files-list-pagination.test.ts ✅ Passed 293ms
tests/initialize-config.test.ts ✅ Passed 202ms
tests/instance-isolation.test.ts ✅ Passed 224ms
tests/models-list.test.ts ✅ Passed 253ms
tests/responses-background-lifecycle.test.ts ✅ Passed 253ms
tests/responses-body-method-errors.test.ts ✅ Passed 383ms
tests/responses-cancel-timeout.test.ts ✅ Passed 231ms
tests/responses-cancel.test.ts ✅ Passed 209ms
tests/responses-compact-retries.test.ts ✅ Passed 331ms
tests/responses-compact.test.ts ✅ Passed 359ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 228ms
tests/responses-create-advanced.test.ts ✅ Passed 228ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.26s
tests/responses-create-errors.test.ts ✅ Passed 295ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 559ms
tests/responses-create-retries.test.ts ✅ Passed 263ms
tests/responses-create-stream-failures.test.ts ✅ Passed 272ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 257ms
tests/responses-create-stream-wire.test.ts ✅ Passed 2.277s
tests/responses-create-stream.test.ts ✅ Passed 447ms
tests/responses-create-terminal-states.test.ts ✅ Passed 296ms
tests/responses-create-timeout.test.ts ✅ Passed 240ms
tests/responses-create.test.ts ✅ Passed 330ms
tests/responses-delete.test.ts ✅ Passed 226ms
tests/responses-input-items-errors.test.ts ✅ Passed 614ms
tests/responses-input-items-list.test.ts ✅ Passed 365ms
tests/responses-input-items-options.test.ts ✅ Passed 300ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 286ms
tests/responses-input-tokens-count.test.ts ✅ Passed 261ms
tests/responses-malformed-inputs.test.ts ✅ Passed 1.218s
tests/responses-not-found-errors.test.ts ✅ Passed 319ms
tests/responses-parse.test.ts ✅ Passed 280ms
tests/responses-retrieve-retries.test.ts ✅ Passed 297ms
tests/responses-retrieve.test.ts ✅ Passed 223ms
tests/responses-stored-method-errors.test.ts ✅ Passed 548ms
tests/retry-behavior.test.ts ✅ Passed 3.066s
tests/sdk-error-shape.test.ts ✅ Passed 336ms

View OkTest run #39493757351

SDK merge (4f87f2e7700e) · head (48183ed87007) · base (b1a1a100d38d) · OkTest (29c8150fa2c4)

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

Evaluated main: b1a1a100d38d84dd556319e207880d85d23559cd.

Trusted main policy: b1a1a100d38d84dd556319e207880d85d23559cd.

Mixed files: 39 → 40

1 newly customized · 0 customizations removed · 0 existing customizations changed · 1 generated baselines changed

Compared b1a1a100d38d → 48183ed87007. Generated baselines verified.

File Result Current custom patch
scripts/castiron/test_custom_code_github.py Generated baseline changed +1 / −0
39 existing customizations unchanged
  • api.md
  • src/openai/init.py
  • src/openai/_client.py
  • src/openai/resources/audio/transcriptions.py
  • src/openai/resources/audio/translations.py
  • src/openai/resources/beta/agents/environments/files.py
  • src/openai/resources/beta/agents/sessions/artifacts.py
  • src/openai/resources/beta/agents/sessions/sessions.py
  • src/openai/resources/beta/beta.py
  • src/openai/resources/beta/responses/responses.py
  • src/openai/resources/beta/threads/runs/runs.py
  • src/openai/resources/beta/threads/threads.py
  • src/openai/resources/chat/completions/completions.py
  • src/openai/resources/embeddings.py
  • src/openai/resources/files.py
  • src/openai/resources/live/forks.py
  • src/openai/resources/live/live.py
  • src/openai/resources/live/sideband.py
  • src/openai/resources/realtime/api.md
  • src/openai/resources/realtime/realtime.py
  • src/openai/resources/realtime/translations/translations.py
  • src/openai/resources/responses/responses.py
  • src/openai/resources/uploads/uploads.py
  • src/openai/resources/vector_stores/file_batches.py
  • src/openai/resources/vector_stores/files.py
  • src/openai/resources/videos.py
  • src/openai/resources/webhooks/init.py
  • src/openai/resources/webhooks/webhooks.py
  • src/openai/types/decision_input_image_param.py
  • src/openai/types/decision_input_text_param.py
  • src/openai/types/fine_tuning/fine_tuning_job_integration.py
  • src/openai/types/realtime/conversation_item_input_audio_transcription_delta_event.py
  • src/openai/types/realtime/realtime_error_event.py
  • src/openai/types/responses/tool.py
  • src/openai/types/responses/tool_param.py
  • src/openai/types/webhooks/init.py
  • src/openai/types/webhooks/live_call_incoming_webhook_event.py
  • src/openai/types/webhooks/unwrap_webhook_event.py
  • tests/api_resources/test_videos.py

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 39493879742 --repo openai/openai-python \
  --name castiron-custom-code-39493879742-1 --dir /tmp/castiron-custom-code-39493879742-1
git apply --stat /tmp/castiron-custom-code-39493879742-1/custom-code.patch
cat /tmp/castiron-custom-code-39493879742-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin b1a1a100d38d84dd556319e207880d85d23559cd 48183ed870079ae42c5552a46e20ab23da29a351
python3 scripts/castiron/custom_code_report.py report \
  --base b1a1a100d38d84dd556319e207880d85d23559cd \
  --head 48183ed870079ae42c5552a46e20ab23da29a351 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-48183ed87007
cat /tmp/castiron-custom-code-48183ed87007/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

@jbeckwith-oai
jbeckwith-oai added this pull request to the merge queue Oct 20, 2026

@marcuswood-oai marcuswood-oai 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.

No blocking findings. Reviewed the API-key update schema and fixtures, confirmed runtime source and WebSocket docs/tests are unchanged, and reviewed the reporting/workflow changes. The reporting-helper suite passed (99 tests run, one optional test skipped), and current-head CI is green.

Merged via the queue into main with commit 0e6be9f Oct 20, 2026
33 checks passed
@jbeckwith-oai
jbeckwith-oai deleted the castiron/promotions/pr-301 branch October 20, 2026 20:55
@openai-sdks openai-sdks Bot mentioned this pull request Oct 20, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Oct 21, 2026
Automated Release PR
---


##
[3.36.0](v3.35.1...v3.36.0)
(2026-10-21)


### Features

* add Vertex AI support for the Responses API
([#4139](#4139))
([3e63d33](3e63d33))
* **api:** add 30-minute cache-write usage counts
([#4111](#4111))
([5589146](5589146))
* **api:** add compaction trigger IDs
([#4122](#4122))
([0e5794d](0e5794d))
* **api:** add custom voice consent management
([#4135](#4135))
([de6d70d](de6d70d))
* **types:** prepare native synchronous WebSocket option type
([#4118](#4118))
([90c0bac](90c0bac))


### Bug Fixes

* **api:** accept canonical batch responses in strict mode
([#4106](#4106))
([6eaa90e](6eaa90e))
* clean up failed WebSocket setup and honor native options
([#4121](#4121))
([b1a1a10](b1a1a10))
* end sync WebSocket recovery when an attempt is interrupted
([#4129](#4129))
([337769b](337769b))
* honor timed Translation receives during terminal cleanup
([#4132](#4132))
([ca54146](ca54146))
* preserve client headers in legacy Beta Realtime connections
([#4130](#4130))
([8a2a2e0](8a2a2e0))
* preserve declared aliases during Pydantic v1 validation
([#4119](#4119))
([8b1cac9](8b1cac9))
* preserve Vertex API root for response lifecycle
([#4140](#4140))
([c2b14f5](c2b14f5))
* preserve WebSocket close across recovery and cancellation
([#4117](#4117))
([4590ff1](4590ff1))
* **realtime:** honor native options for legacy beta sockets
([#4120](#4120))
([8968560](8968560))


### Chores

* **api:** clarify cache-write token totals
([#4136](#4136))
([55b8b8a](55b8b8a))
* **api:** clarify project API key update requirements
([#4131](#4131))
([0e6be9f](0e6be9f))
* **api:** maintain voice consent compatibility
([#4137](#4137))
([07abe06](07abe06))
* **api:** use neutral moderation examples
([#4104](#4104))
([553703e](553703e))
* restore generated Castiron reporting scripts
([#4113](#4113))
([9d12b56](9d12b56))
* support next checkpoints in the trusted reporter
([#4128](#4128))
([ae2a6c2](ae2a6c2))


### Documentation

* plan the Python generated-code transition
([#4114](#4114))
([6a52987](6a52987))
* record Python transition progress and batch follow-up work
([#4116](#4116))
([46e3680](46e3680))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: openai-sdks[bot] <284451331+openai-sdks[bot]@users.noreply.github.com>
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