Skip to content

feat(api): share OCI external-storage response types - #1164

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

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

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Summary

Expose one shared OCI provider response type for storage configurations and audit-log events.

Changes

  • Use OciExternalStorageProvider for OCI provider responses across both surfaces.
  • Replace endpoint-local OCI response types; callers explicitly naming those types must migrate to the shared model.
  • Keep OCI request and response JSON fields unchanged.

Compatibility note

This intentionally replaces ExternalStorageConfiguration.Provider.Oci and AuditLogListResponse.ExternalStorageRegistered.Data.Provider.Oci with com.openai.models.admin.organization.externalstorage.OciExternalStorageProvider. Update imports, builders, explicit declarations, and Handler.onOci(...) callbacks to the shared type. Both provider unions' oci() / asOci() accessors and ofOci(...) factories now use that model.

The change gives configuration responses and audit events one consistent OCI response type, matching the other providers. ExternalStorageCreateParams.Provider.Oci, request fields, and wire payloads are unchanged. The source and binary compatibility impact is accepted for this update; consumers should recompile after migrating explicit type references.

Castiron-Internal-PR: openai/openai-java-internal#242
Castiron-Source-SHA: 745ff2ca808f89805aa085b93818ce760cff2900
Castiron-Public-Base-SHA: 22bd97e
@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Castiron custom code

Evaluated main: 22bd97e2e62820dea1c5697cd75556623c5d2b9f.

✅ No new custom-code files detected.

108 mixed files remain; 0 existing customizations changed.

Compared 22bd97e2e628 → 30b72a2d62d8. Generated baselines verified.

108 existing customizations unchanged
  • openai-java-core/src/main/kotlin/com/openai/models/audio/AudioResponseFormat.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/agents/environments/EnvironmentCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/agents/vaults/credentials/CredentialAuth.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/agents/vaults/credentials/CredentialAuthCreateParam.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/agents/vaults/credentials/CredentialAuthRotateParam.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponse.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponseInjectEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponseInjectFailedEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponseStreamEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponseToolSearchOutputItemParam.kt
  • openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponsesServerEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/chat/completions/ChatCompletionCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/chat/completions/ChatCompletionMessageFunctionToolCall.kt
  • openai-java-core/src/main/kotlin/com/openai/models/chat/completions/ChatCompletionToolMessageParam.kt
  • openai-java-core/src/main/kotlin/com/openai/models/conversations/ConversationCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/conversations/items/ItemCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/embeddings/Embedding.kt
  • openai-java-core/src/main/kotlin/com/openai/models/embeddings/EmbeddingCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/live/ResponseItemCreateEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/Response.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseFunctionToolCall.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseFunctionWebSearch.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseInputItem.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseStreamEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseTextConfig.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseToolSearchOutputItemParam.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponsesServerEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/videos/Video.kt
  • openai-java-core/src/main/kotlin/com/openai/models/webhooks/UnwrapWebhookEvent.kt
  • openai-java-core/src/main/kotlin/com/openai/models/webhooks/WebhookEndpointWithSecret.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/BetaServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/BetaServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/ImageServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/SkillServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/VideoServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/WebhookServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/WebhookServiceAsyncImpl.kt

68 more in the full report.

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 38180505884 --repo openai/openai-java \
  --name castiron-custom-code-38180505884-1 --dir /tmp/castiron-custom-code-38180505884-1
git apply --stat /tmp/castiron-custom-code-38180505884-1/custom-code.patch
cat /tmp/castiron-custom-code-38180505884-1/custom-code.patch

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

git fetch --no-tags origin 22bd97e2e62820dea1c5697cd75556623c5d2b9f 30b72a2d62d8f6e40a46e4d6764b1956cc254eb7
python3 scripts/castiron/custom_code_report.py report \
  --base 22bd97e2e62820dea1c5697cd75556623c5d2b9f \
  --head 30b72a2d62d8f6e40a46e4d6764b1956cc254eb7 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-30b72a2d62d8
cat /tmp/castiron-custom-code-30b72a2d62d8/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 marked this pull request as ready for review October 11, 2026 22:27
@jbeckwith-oai
jbeckwith-oai requested a review from a team as a code owner October 11, 2026 22:27
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 11, 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-11T22:29:40.043777Z 30b72a2 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-11T22:32:16.565816Z 30b72a2 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 11, 2026 •

Copy link
Copy Markdown
Contributor

OkTest Summary

✅ 236/236 SDK tests passed in 11.091s for Java SDK PR #1164.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 168ms
tests/chat-completions-create.test.ts ✅ Passed 485ms
tests/chat-completions-stream.test.ts ✅ Passed 289ms
tests/files-content-binary.test.ts ✅ Passed 232ms
tests/files-create-multipart.test.ts ✅ Passed 245ms
tests/files-list-pagination.test.ts ✅ Passed 198ms
tests/initialize-config.test.ts ✅ Passed 122ms
tests/instance-isolation.test.ts ✅ Passed 111ms
tests/models-list.test.ts ✅ Passed 226ms
tests/responses-background-lifecycle.test.ts ✅ Passed 328ms
tests/responses-body-method-errors.test.ts ✅ Passed 423ms
tests/responses-cancel-timeout.test.ts ✅ Passed 182ms
tests/responses-cancel.test.ts ✅ Passed 168ms
tests/responses-compact-retries.test.ts ✅ Passed 297ms
tests/responses-compact.test.ts ✅ Passed 285ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 323ms
tests/responses-create-advanced.test.ts ✅ Passed 1.024s
tests/responses-create-disconnect.test.ts ✅ Passed 1.229s
tests/responses-create-errors.test.ts ✅ Passed 267ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 380ms
tests/responses-create-retries.test.ts ✅ Passed 248ms
tests/responses-create-stream-failures.test.ts ✅ Passed 164ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 167ms
tests/responses-create-stream-wire.test.ts ✅ Passed 3.514s
tests/responses-create-stream.test.ts ✅ Passed 95ms
tests/responses-create-terminal-states.test.ts ✅ Passed 255ms
tests/responses-create-timeout.test.ts ✅ Passed 179ms
tests/responses-create.test.ts ✅ Passed 169ms
tests/responses-delete.test.ts ✅ Passed 187ms
tests/responses-input-items-errors.test.ts ✅ Passed 212ms
tests/responses-input-items-list.test.ts ✅ Passed 213ms
tests/responses-input-items-options.test.ts ✅ Passed 133ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 196ms
tests/responses-input-tokens-count.test.ts ✅ Passed 191ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.663s
tests/responses-not-found-errors.test.ts ✅ Passed 300ms
tests/responses-parse.test.ts ✅ Passed 508ms
tests/responses-retrieve-retries.test.ts ✅ Passed 218ms
tests/responses-retrieve.test.ts ✅ Passed 171ms
tests/responses-stored-method-errors.test.ts ✅ Passed 928ms
tests/retry-behavior.test.ts ✅ Passed 3.31s
tests/sdk-error-shape.test.ts ✅ Passed 383ms

View OkTest run #38180483271

SDK merge (b67675070260) · head (30b72a2d62d8) · base (22bd97e2e628) · OkTest (56d7bfc8ad08)

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

Reviewed all five changed files at 30b72a2d62d8f6e40a46e4d6764b1956cc254eb7. No unintended correctness or maintainability findings.

Both response unions consistently use the shared OciExternalStorageProvider across builders, accessors, factories, Handler.onOci callbacks, and parsing. The model preserves field names, defaults, validation, raw values, and unknown-property storage. Request models and the other provider branches remain unchanged. The documented source and binary compatibility break is intentional; callers naming the removed response classes must migrate and recompile.

I verified the complete diff and pinned source hashes, with an independent source review. The added test checks standalone construction and round-trip equality; it does not exercise both union dispatch paths. I did not execute tests, builds, or generation.

At inspection, the current head had 12 successful, 2 skipped, and 2 running checks. The current-head OkTest compatibility run was still in progress.

@jbeckwith-oai
jbeckwith-oai added this pull request to the merge queue Oct 11, 2026
Merged via the queue into main with commit 3efd4ca Oct 11, 2026
17 checks passed
@openai-sdks openai-sdks Bot mentioned this pull request Oct 11, 2026
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.

2 participants