fix: OpenAPI Converter was not parsing examples for request parameters by shane-rand · Pull Request #88 · universal-tool-calling-protocol/python-utcp · GitHub
Skip to content

fix: OpenAPI Converter was not parsing examples for request parameters#88

Merged
h3xxit merged 24 commits into
universal-tool-calling-protocol:devfrom
shane-rand:fix/openapi-converter-misses-examples-on-params
Jun 24, 2026
Merged

fix: OpenAPI Converter was not parsing examples for request parameters#88
h3xxit merged 24 commits into
universal-tool-calling-protocol:devfrom
shane-rand:fix/openapi-converter-misses-examples-on-params

Conversation

@shane-rand

@shane-rand shane-rand commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary by cubic

Fixes OpenAPI example handling and normalizes them into JSON Schema examples for parameters, request bodies, and responses. Also validates HTTP methods and skips unsupported ones to prevent crashes.

  • Bug Fixes
    • Extract and merge examples from example/examples at parameter, media type, and schema levels; resolve $ref, de-duplicate, ignore externalValue; normalize into JSON Schema examples and strip raw example/examples keys.
    • Validate HTTP method against a supported set and skip unsupported (OPTIONS, HEAD, TRACE) instead of erroring.
    • Tighten typing and attribute access; add tests for parameter/body/response examples, schema-level normalization, and unsupported-method skipping.

Written for commit aa0c6f8. Summary will update on new commits.

Review in cubic

h3xxit and others added 20 commits August 26, 2025 17:03
…tool-calling-protocol/dev

Add docs and update http to 1.0.2
…tool-calling-protocol/dev

Fix response json parsing when content type is wrong
…om universal-tool-calling-protocol/dev

Update CLI
…tool-calling-protocol/dev

Plugin updates
…tool-calling-protocol/dev

  Add WebSocket transport implementation for real-time communication …
…tool-calling-protocol/dev

Socket and GraphQL Plugins
…tool-calling-protocol/dev

Update UTCP to 1.1
…tool-calling-protocol/dev

Update all plugins to 1.1
…tool-calling-protocol/dev

Fix some issues
…tool-calling-protocol/dev

Fix bug in mcp plugin
…tool-calling-protocol/dev

fix(cli): block command injection and env leak in CLI protocol

@cubic-dev-ai cubic-dev-ai 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.

2 issues found across 2 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread plugins/communication_protocols/http/src/utcp_http/openapi_converter.py Outdated
@h3xxit h3xxit changed the base branch from main to dev June 17, 2026 22:53
@h3xxit h3xxit self-requested a review June 17, 2026 22:53
@shane-rand

Copy link
Copy Markdown
Contributor Author

@shane-rand

Copy link
Copy Markdown
Contributor Author

@h3xxit hey there, any movement on this?

@h3xxit

h3xxit commented Jun 24, 2026

Copy link
Copy Markdown
Member

Hi, I will try to review it today. Sorry for the wait!

Issue 2 — replace the blind cast on http_method with an explicit guard.
OpenAPI allows operations (options/head/trace) that HttpCallTemplate's
Literal type rejects; these are now skipped with a warning instead of
crashing conversion via a Pydantic ValidationError. A shared
SUPPORTED_HTTP_METHODS constant backs both the operation-loop filter and
the per-operation check, so the cast is now truthful rather than assumed.

Issue 3 — make example handling consistent across params, request bodies,
and responses. Examples that appear at the schema level (not just the media
type / parameter object) are now collected via _merge_examples and surfaced
in the normalized JSON Schema 'examples' keyword, and the raw OpenAPI
'example'/'examples' keys are stripped before the schema is spread onto the
property so they no longer leak through as untyped extra fields. This lines
up with the explicit examples field added to JsonSchema in core (universal-tool-calling-protocol#91).

Adds tests for unsupported-method skipping and schema-level example
normalization.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
h3xxit added a commit to shane-rand/python-utcp that referenced this pull request Jun 24, 2026
JsonSchema previously accepted `examples` only via `extra="allow"`, leaving
it untyped, undocumented, and invisible to type checkers. Declare it as
Optional[List[JsonType]] so the JSON Schema `examples` keyword is a
first-class, validated field.

Supports PR universal-tool-calling-protocol#88 (OpenAPI converter examples parsing), which currently
relies on the extra-field fallback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@h3xxit h3xxit merged commit 5525e8a into universal-tool-calling-protocol:dev Jun 24, 2026
10 checks passed
@h3xxit

h3xxit commented Jun 24, 2026

Copy link
Copy Markdown
Member

@shane-rand Thank you very much for the contribution! Adding the example field generally to the JsonSchema makes a lot of sense, so I also made this change in the core sdks data model.

If you would like to be added as a contributor on our about us page, please let me know what name and what links you want added https://www.utcp.io/about/about-us

For easier communication feel free to also join our discord server https://discord.gg/Y6Ycyz8nJR

@shane-rand

Copy link
Copy Markdown
Contributor Author

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