Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
4235d97
Added support for AsyncAPI v3
nashjain Dec 3, 2025
37a5151
Update arazzo.md file with AsyncAPI related changes along with a samp…
nashjain Dec 7, 2025
37d911f
fix: update operationId and correlationId references in arazzo.md AND…
nashjain Dec 16, 2025
75d1cb0
fix: enhance dependsOn description in schema.yaml and arazzo.md, and …
nashjain Feb 4, 2026
ff01227
fix: update stepId in examples
nashjain Feb 4, 2026
fd1bc7d
Apply suggestion from @frankkilcommins
nashjain Mar 15, 2026
f53a80b
refactor: update dependsOn references to remove $steps prefix and cla…
nashjain Mar 15, 2026
37a4127
fix: remove quotes from YAML runtime expressions and dependsOn refere…
nashjain Mar 16, 2026
65b796b
fix: update dependsOn format to use a list in arazzo.md
nashjain Apr 1, 2026
d06e43a
fix: remove quotes from YAML keys and update formatting in openapi-an…
nashjain Apr 1, 2026
8ef01ec
refactor: move default successCriteria to workflow-step from step-obj…
nashjain Apr 3, 2026
7112d95
refactor: move successCriteria back to step-object-base. If successCr…
nashjain Apr 3, 2026
5ed90c7
test: add invalid workflow step example with operationId restriction
nashjain Apr 3, 2026
471e327
fix: clarify description of dependsOn field in schema.yaml and update…
nashjain Apr 3, 2026
0daa4d7
fix: remove fully qualified dependsOn field from async-depends-on.yaml
nashjain Apr 9, 2026
39364e4
fix: refactor step schema to isolate operation-specific fields and de…
nashjain Apr 15, 2026
2f5b21a
Merge branch 'v1.1-dev' into dev
nashjain Apr 15, 2026
5414803
chore: move pet-asyncapi.yaml to examples folder
nashjain Apr 15, 2026
cc7e8ff
docs: clarify async workflow step dependencies and success criteria
nashjain Apr 17, 2026
b672729
docs: fix markdown headings
nashjain Apr 17, 2026
fe5913d
docs: clarify async step dependencies and completion semantics
nashjain Apr 17, 2026
57f98de
docs: clarify async step dependencies and completion semantics
nashjain Apr 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions examples/1.1.0/pet-asyncapi.yaml
Comment thread
nashjain marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
asyncapi: 3.0.0

info:
title: Simple Pet Purchase API
version: "1.0.0"

servers:
localKafka:
host: localhost:9092
protocol: kafka

channels:
place-order:
address: place-order
messages:
placeOrder.message:
$ref: "#/components/messages/OrderRequest"

confirm-order:
address: confirm-order
messages:
confirmOrder.message:
$ref: "#/components/messages/OrderResponse"

operations:
placeOrder:
description: Place an order
action: receive
channel:
$ref: "#/channels/place-order"
messages:
- $ref: "#/channels/place-order/messages/placeOrder.message"
reply:
channel:
$ref: "#/channels/confirm-order"
messages:
- $ref: "#/channels/confirm-order/messages/confirmOrder.message"

components:
messages:
OrderRequest:
contentType: application/json
correlationId:
description: Identifier that correlates this request with a response
location: $message.header#/orderRequestId
headers:
type: object
required:
- orderRequestId
properties:
orderRequestId:
type: string
description: Unique ID for tracking the order flow
payload:
type: object
required:
- petId
properties:
petId:
type: integer

OrderResponse:
contentType: application/json
correlationId:
description: Identifier that correlates this response with a request
location: $message.header#/orderRequestId
headers:
type: object
required:
- orderRequestId
properties:
orderRequestId:
type: string
description: Unique ID for tracking the order flow
payload:
type: object
required:
- orderId
properties:
orderId:
type: integer
436 changes: 271 additions & 165 deletions src/arazzo.md

Large diffs are not rendered by default.

163 changes: 116 additions & 47 deletions src/schemas/validation/schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ $defs:
enum:
- arazzo
- openapi
- asyncapi
required:
- name
- url
Expand Down Expand Up @@ -161,7 +162,12 @@ $defs:
$comment: https://spec.openapis.org/arazzo/v1.1#step-object'
description: |-
Describes a single workflow step which MAY be a call to an
API operation (OpenAPI Operation Object or another Workflow Object)
API operation (OpenAPI Operation Object or AsyncAPI Operation Object or another Workflow Object)
oneOf:
- $ref: '#/$defs/openapi-step-object'
- $ref: '#/$defs/asyncapi-step-object'
- $ref: '#/$defs/workflow-step-object'
step-object-base:
type: object
properties:
stepId:
Expand All @@ -171,15 +177,22 @@ $defs:
description:
description: A description of the step. CommonMark syntax MAY be used for rich text representation
type: string
operationId:
description: The name of an existing, resolvable operation, as defined with a unique operationId and existing within one of the sourceDescriptions
type: string
operationPath:
description: A reference to a Source combined with a JSON Pointer to reference an operation
type: string
workflowId:
description: The workflowId referencing an existing workflow within the Arazzo description
$ref: '#workflowId'
timeout:
description: The duration in milliseconds to wait before timing out the step
type: integer
dependsOn:
description: Specifies a list of step identifiers that must complete (or be waited for) before the current step can begin execution. `dependsOn` only establishes a prerequisite relationship for the current step and does not trigger execution of the referenced steps. Steps referred by dependsOn SHOULD be non-blocking/async steps. Steps in the current workflow MUST be referenced directly by stepId. Steps in another workflow in the same Arazzo document MUST use $workflows.<workflowId>.steps.<stepId>. Steps in another Arazzo document MUST use $sourceDescriptions.<name>.<workflowId>.steps.<stepId>.
type: array
uniqueItems: true
minItems: 1
items:
oneOf:
- type: string
pattern: ^(?!\$).+$
- type: string
pattern: ^\$workflows\.[^.]+\.steps\.[^.]+$
- type: string
pattern: ^\$sourceDescriptions\.[^.]+\.[^.]+\.steps\.[^.]+$
parameters:
description: A list of parameters that MUST be passed to an operation or workflow as referenced by operationId, operationPath, or workflowId
type: array
Expand Down Expand Up @@ -222,44 +235,99 @@ $defs:
- $ref: '#/$defs/selector-object'
required:
- stepId
oneOf:
- required:
- operationId
- required:
- operationPath
- required:
- workflowId
operation-step-parameters:
type: array
uniqueItems: true
items:
oneOf:
- $ref: '#/$defs/reusable-object'
- $ref: '#/$defs/parameter-object'
required:
- in
openapi-step-object:
allOf:
- if:
oneOf:
- required:
- operationPath
- required:
- operationId
then:
properties:
parameters:
items:
oneOf:
- $ref: '#/$defs/reusable-object'
- $ref: '#/$defs/parameter-object'
required:
- in
- $ref: '#/$defs/step-object-base'
- type: object
properties:
operationId:
description: The name of an existing, resolvable operation, as defined with a unique operationId and existing within one of the sourceDescriptions
type: string
operationPath:
description: A reference to a Source combined with a JSON Pointer to reference an operation
type: string
parameters:
$ref: '#/$defs/operation-step-parameters'
- oneOf:
- required:
- operationId
- required:
- operationPath
$ref: '#/$defs/specification-extensions'
unevaluatedProperties: false
asyncapi-step-object:
allOf:
- $ref: '#/$defs/step-object-base'
- type: object
properties:
operationId:
description: The name of an existing, resolvable operation, as defined with a unique operationId and existing within one of the sourceDescriptions
type: string
channelPath:
description: A reference to a Source combined with a JSON Pointer to reference an async channel
type: string
correlationId:
description: ID to correlate async responses with their requests, only specified for async receive steps
type:
- string
- number
- boolean
- object
- array
action:
description: Specifies the intended operation on the async channel, indicating whether the action is sending data to the channel or receiving data from the channel
enum:
- send
- receive
parameters:
$ref: '#/$defs/operation-step-parameters'
required:
- action
- if:
required:
- workflowId
- correlationId
then:
properties:
parameters:
items:
oneOf:
- $ref: '#/$defs/parameter-object'
- $ref: '#/$defs/reusable-object'
action:
const: receive
required:
- action
- oneOf:
- required:
- operationId
- required:
- channelPath
$ref: '#/$defs/specification-extensions'
unevaluatedProperties: false
workflow-step-object:
allOf:
- $ref: '#/$defs/step-object-base'
- type: object
properties:
workflowId:
Comment thread
nashjain marked this conversation as resolved.
Comment thread
nashjain marked this conversation as resolved.
description: The workflowId referencing an existing workflow within the Arazzo description
$ref: '#workflowId'
parameters:
items:
oneOf:
- $ref: '#/$defs/parameter-object'
- $ref: '#/$defs/reusable-object'
required:
- workflowId
$ref: '#/$defs/specification-extensions'
unevaluatedProperties: false
request-body-object:
$comment: https://spec.openapis.org/arazzo/v1.1#request-body-object
description: The request body to pass to an operation as referenced by operationId or operationPath
description: The request body to pass to an operation as referenced by operationId or operationPath or channelPath
type: object
properties:
contentType:
Expand Down Expand Up @@ -292,7 +360,7 @@ $defs:
description: The type of condition to be applied or a reference to an expression type object
oneOf:
- type: string
enum:
enum:
- simple
- regex
- jsonpath
Expand Down Expand Up @@ -335,10 +403,10 @@ $defs:
then:
properties:
version:
enum:
enum:
- rfc9535
- draft-goessner-dispatch-jsonpath-00

- if:
required:
- type
Expand All @@ -361,7 +429,7 @@ $defs:
then:
properties:
version:
const: rfc6901
const: rfc6901
$ref: '#/$defs/specification-extensions'
success-action-object:
$comment: https://spec.openapis.org/arazzo/v1.1#success-action-object
Expand Down Expand Up @@ -440,7 +508,7 @@ $defs:
description: A list of parameters that MUST be passed to a workflow as referenced by workflowId
type: array
uniqueItems: true
items: true
items: true
retryAfter:
description: A non-negative decimal indicating the seconds to delay after the step failure before another attempt SHALL be made
type: number
Expand Down Expand Up @@ -472,7 +540,7 @@ $defs:
- parameters
then:
required:
- workflowId
- workflowId
required:
- name
- type
Expand Down Expand Up @@ -514,6 +582,7 @@ $defs:
- querystring
- header
- cookie
- channel
value:
description: The value to pass in the parameter
oneOf:
Expand All @@ -523,7 +592,7 @@ $defs:
- array
- number
- 'null'
- $ref: '#/$defs/selector-object'
- $ref: '#/$defs/selector-object'
required:
- name
- value
Expand All @@ -542,7 +611,7 @@ $defs:
The selector expression type to use (e.g., `jsonpath`, `xpath`, or `jsonpointer`).
Should an alternate version be required, the Expression Type Object may be used instead.
If omitted, defaults to JSON Pointer for `application/json` or XPath for XML-based media types.
$ref: '#/$defs/selector-type'
$ref: '#/$defs/selector-type'
value:
description: >
The value to set at the location defined by the target. May be a literal,
Expand Down
13 changes: 13 additions & 0 deletions tests/schema/fail/channel-path-is-invalid-for-openapi.arazzo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
arazzo: 1.1.0
info:
title: Minimal Arazzo Example for AsyncAPI
version: 1.0.0
sourceDescriptions:
- name: exampleAPI
url: https://example.com/openapi.yaml
type: openapi
workflows:
- workflowId: basicWorkflow
steps:
- stepId: step1
channelPath: createUser
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
arazzo: 1.1.0
info:
title: CorrelationId should only be present when action is receive
version: 1.0.0
sourceDescriptions:
- name: exampleAPI
url: https://example.com/asyncapi.yaml
type: asyncapi
workflows:
- workflowId: basicWorkflow
steps:
- stepId: step1
operationId: createUser
action: send
correlationId: invalid
17 changes: 17 additions & 0 deletions tests/schema/fail/invalid-async-parameter-without-in.arazzo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
arazzo: 1.1.0
info:
title: Async step parameter requires in
version: 1.0.0
sourceDescriptions:
- name: eventAPI
url: https://events.com/asyncapi.yaml
type: asyncapi
workflows:
- workflowId: asyncWorkflow
steps:
- stepId: sendEvent
operationId: $sourceDescriptions.eventAPI.orderCreated
action: send
parameters:
- name: correlationId
value: abc123
Loading
Loading