Table of Contents

CLI Tool

The dotnet arazzo CLI tool provides commands for validating, linting, and diffing Arazzo workflow documents. It is a separate tool from dotnet asyncapi so arazzo stays independently discoverable on NuGet, but it reuses the same underlying infrastructure (Bielu.Cli.Shared) and mirrors its command shapes and output formats.

Installation

dotnet tool install -g Bielu.Arazzo.Cli

Commands

validate

Validate Arazzo documents against the specification's structural invariants — unique workflowId/stepId values, mutually-exclusive step targets, unknown enum values, and malformed inputs JSON Schema.

dotnet arazzo validate --file ./workflows/*.yaml --strict

Options:

  • --file <path> - Path or glob to Arazzo document(s) (required, repeatable)
  • --strict - Treat warnings as errors
  • --format <text|json> - Output format (default: text)

lint

Lint Arazzo documents for style and graph-shape issues that validate doesn't cover: missing summaries/descriptions, identifiers with characters that don't travel well across tooling, circular dependsOn graphs (at both the step and workflow level), same-document dependsOn references that don't resolve to a real id, and components entries that are declared but never referenced.

dotnet arazzo lint --file ./workflows/*.yaml

Options:

  • --file <path> - Path or glob to Arazzo document(s) (required, repeatable)
  • --strict - Treat warnings as errors
  • --format <text|json> - Output format (default: text)

Reference resolution against the actual source documents (does this operationId really exist in the linked OpenAPI/AsyncAPI document?) needs a running app and is Bielu.AspNetCore.Arazzo's IArazzoSourceResolver territory — lint only checks what can be determined from the document itself.

diff

Compare two Arazzo documents and identify breaking and non-breaking changes: removed/added workflows and steps, a step's target changing (operationId/operationPath/channelPath/workflowId), a step's action changing, and source description url/type changes.

dotnet arazzo diff --base old.yaml --head new.yaml --fail-on-breaking

Options:

  • --base <path> - Path to the base (old) Arazzo document (required)
  • --head <path> - Path to the head (new) Arazzo document (required)
  • --fail-on-breaking - Exit with code 1 if breaking changes are detected
  • --format <text|json|markdown> - Output format (default: text)