feat(ns-arazzo-1): add support for Arazzo 1.1.0 - #498
Merged
Conversation
Arazzo 1.1.0 renames Criterion Expression Type Object to Expression Type Object, as it is now shared by Criterion Object and Selector Object. Deprecated aliases are kept for backward compatibility. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
Criterion Object type field of Expression Type Object shape was refracted into a stray MemberElement instead of ExpressionTypeElement, because the visitor returned the refracted element instead of assigning it. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
- Arazzo Object: $self field - Step Object: channelPath, timeout, correlationId, action and dependsOn fields - Success Action Object and Failure Action Object: parameters field - Payload Replacement Object: targetSelectorType field - Selector Object: new element, recognized in workflow/step outputs, parameter value, payload replacement value and request body payload - Expression Type Object: shared by Criterion Object, Selector Object and Payload Replacement Object - media types for Arazzo 1.1.0 Selector Object is recognized structurally when all of its REQUIRED fields are present, following OAI/Arazzo-Specification#519. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
Clone the payload once via FallbackVisitor and replace Selector Object shaped nodes in place with a single traversal, instead of rebuilding the whole payload tree and bootstrapping a traversal per nested node. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
Port AlternatingVisitor generic from apidom-ns-openapi-3-0 and use it for Criterion type, Selector type, Payload Replacement targetSelectorType and value, and Parameter value, replacing five hand-written visitors with declarative alternators. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
The plugin previously only mapped the info field. Map every object/array-valued field of Arazzo 1.1.0 objects, list items and map values of non-concrete elements, and JSON Schema keywords of workflow inputs, following the apidom-ns-openapi-3-1 plugin. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
- define deprecated CriterionExpressionTypeElement alias as const so the deprecation is surfaced to TypeScript consumers - export isReusableLikeElement alongside isSelectorLikeElement - update stale 1.0.1 references in comments and README example - cover Selector Object with Expression Type Object in step outputs and consume mode of request body payload visitor with tests Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
Replace the unreferenced 1.0.1 workflows.json fixture with the Arazzo Object example from the 1.1.0 specification and refract it end-to-end. Refs #297 Claude-Session: https://claude.ai/code/session_01PDnq4REFLYbtzQrNmXxZM3 Signed-off-by: Vladimir Gorej <vladimir.gorej@gmail.com>
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Arazzo 1.1.0 support to
@speclynx/apidom-ns-arazzo-1. The full 1.0.1 → 1.1.0 changelog this is based on is in #297 (comment).Commits
criterionExpressionType→expressionType(the spec renamed it, as it is now shared by Criterion Object and Selector Object). Deprecated aliases kept:CriterionExpressionTypeElement,isCriterionExpressionTypeElement,refractCriterionExpressionType.typefield — pre-existing 1.0.1 bug: an Expression Type Object shapedtypewas refracted into a strayMemberElementbecause the visitor returned the element instead of assigning it.$selfchannelPath,timeout,correlationId,action,dependsOn(→StepDependsOnElement)parameters(→SuccessActionParametersElement/FailureActionParametersElement, itemsParameter | Reusable)targetSelectorType(string | Expression Type Object)SelectorElement, recognized in workflow/stepoutputsvalues, parametervalue, payload replacementvalueand recursively inside request bodypayloadfindBy()defaults to1.1.0Selector Object recognition
Any | {expression} | Selector Objectpositions are structurally ambiguous (OAI/Arazzo-Specification#519). Following the guidance there, an object is treated as a Selector Object only when all of its REQUIRED fields (context,selector,type) are present; otherwise it stays a plainObjectElement. Covered by tests in both directions.Out of scope (follow-ups)
apidom-reference:$self-based base URI / identity-based resolution;asyncapisource descriptions (blocked on AsyncAPI 3 support — 1.1.0 targets AsyncAPI v3 only).$message.*,$self, embedded{}) — nothing in this namespace validates expressions.Verification
apidom-ns-arazzo-1: 170 tests passing,tscclean, lint clean; each commit type-checks in isolationapidom-parser-adapter-arazzo-json-1(17),apidom-parser-adapter-arazzo-yaml-1(18),apidom-reference(1500). The adapters already accept any1.x.yversion and reuse the namespace media types, so 1.1.0 documents parse end-to-end.Closes #297