fix: OpenAPI Converter was not parsing examples for request parameters#88
Conversation
…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 Update docs
…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 Dev
…tool-calling-protocol/dev fix(cli): block command injection and env leak in CLI protocol
There was a problem hiding this comment.
2 issues found across 2 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…es on json_schema
|
@h3xxit Thank you for setting this up correctly for me. I didn't realize |
|
@h3xxit hey there, any movement on this? |
|
Hi, I will try to review it today. Sorry for the wait! |
…misses-examples-on-params
…misses-examples-on-params
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>
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>
|
@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 |
|
@h3xxit Thank you! That would be great. You can list me as Shane Smithrand. My linkedin is www.linkedin.com/in/shanerand and my github is https://github.com/shane-rand I'll be on the lookout for more contribution opportunities. |
Fixes the parsing of OpenAPI Specifications to include
exampleorexamples. Previously, they were being silently dropped. https://spec.openapis.org/oas/v3.0.3#fixed-fields-9Fixes some Type Checking/Linting type errors
Summary by cubic
Fixes OpenAPI example handling and normalizes them into JSON Schema
examplesfor parameters, request bodies, and responses. Also validates HTTP methods and skips unsupported ones to prevent crashes.example/examplesat parameter, media type, and schema levels; resolve$ref, de-duplicate, ignoreexternalValue; normalize into JSON Schemaexamplesand strip rawexample/exampleskeys.OPTIONS,HEAD,TRACE) instead of erroring.Written for commit aa0c6f8. Summary will update on new commits.