You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: improve ABNF grammar clarity and inline all secondary grammars
Restructure the ABNF grammar to use explicit, typed reference rules in the
primary grammar instead of relying on secondary grammars with two-pass parsing.
This improves grammar clarity and aligns with the proposed spec changes in
OAI/Arazzo-Specification#454.
Key changes:
- Add $self expression support
- Add $inputs/$outputs JSON Pointer support (e.g., $inputs.customer#/firstName)
- Inline all secondary grammars into the primary grammar
- Extract shared identifier and identifier-strict rules
- Adapt json-pointer to exclude { and } from unescaped for unambiguous
embedded expression parsing, fixing the body expression extract limitation
- Require explicit component types (parameters/successActions/failureActions)
- Update README with current grammar and examples
Resolves: OAI/Arazzo-Specification#424, OAI/Arazzo-Specification#425,
OAI/Arazzo-Specification#426, OAI/Arazzo-Specification#428
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@@ -358,11 +373,15 @@ Request parameter | `$request.path.id` | Request parameters MUST be
358
373
Request body property | `$request.body#/user/uuid` | In operations which accept payloads, references may be made to portions of the `requestBody` or the entire body.
359
374
Request URL | `$url` |
360
375
Response value | `$response.body#/status` | In operations which return payloads, references may be made to portions of the response body or the entire body.
361
-
Response header | `$response.header.Server` | Single header values only are available
362
-
workflow input | `$inputs.username` or `$workflows.foo.inputs.username` | Single input values only are available
376
+
Response header | `$response.header.Server` | Single header values only are available.
377
+
Self URI | `$self` | References the canonical URI of the current Arazzo Description.
378
+
Workflow input | `$inputs.username` | Single input values only are available.
379
+
Workflow input property | `$inputs.customer#/firstName` | To access nested properties within an input object, use JSON Pointer syntax.
363
380
Step output value | `$steps.someStepId.outputs.pets` | In situations where the output named property return payloads, references may be made to portions of the response body (e.g., `$steps.someStepId.outputs.pets#/0/id`) or the entire body.
364
381
Workflow output value | `$outputs.bar` or `$workflows.foo.outputs.bar` | In situations where the output named property return payloads, references may be made to portions of the response body (e.g., `$workflows.foo.outputs.mappedResponse#/name`) or the entire body.
382
+
Source description reference | `$sourceDescriptions.petstore.getPetById` | References an operationId or workflowId from the named source description.
365
383
Components parameter | `$components.parameters.foo` | Accesses a foo parameter defined within the Components Object.
384
+
Components action | `$components.successActions.bar` | Accesses a success or failure action defined within the Components Object.
366
385
367
386
Runtime expressions preserve the type of the referenced value.
368
387
Expressions can be embedded into string values by surrounding the expression with `{}` curly braces.
0 commit comments