Package versions follow this library's semantic versioning and do not correspond directly to AsyncAPI specification versions. For example, package 2.0.0 introduced the AsyncAPI 3.0 object model, while package 3.0.0 later moved V3 document output to AsyncAPI 3.1.0.
3.0.1 (2026-08-02)
- corrected security-scheme validation so
nameis required forHttpApiKeyrather thanApiKeyschemes (#36) (0496eb5)
3.0.0 (2026-06-10)
Package 3.0.0 builds on the shared AsyncAPI 2.6/3.0 object model introduced in package 2.0.0. This release moves V3 output to AsyncAPI 3.1.0 and introduces breaking binding and Avro API changes.
- V3 documents now serialize and normalize to
asyncapi: 3.1.0; the existingAsyncApiVersion.AsyncApi3_0selector continues to represent the V3 specification family (1985b38) - referenced schemas, servers, channels, messages, parameters, traits, security schemes, and binding components are now deserialized using the containing document's AsyncAPI version instead of always using V2 rules (eeb9d8f)
- root servers are registered under
#/servers/{name}so channel server references and root-server aliases resolve consistently throughAsyncApiWorkspace(eeb9d8f) - V2 channel server entries now accept both bare server names and canonical
#/servers/...references without double-prefixing the path (eeb9d8f)
- binding collections now dispatch to the requested
SerializeV2orSerializeV3implementation instead of silently using the V2 representation for both versions (#27) (7cea38b) - V3 channels now serialize external documentation and bindings through their V3 serializers (#27) (7cea38b)
- added parent serialization context to
AsyncApiWorkspace, allowing bindings to inspect their containing channel, operation, or message (#27) (7cea38b) - HTTP operation bindings now infer V2
type: requestortype: responsefromAsyncApiOperation.Action, omittypein V3, and use the matching V2 or V3 query-schema serializer (#27) (7cea38b) - added
HttpMessageBinding.StatusCode, emitted numerically for V3 and omitted when targeting V2 (#27) (7cea38b) - HTTP bindings now default to binding version
0.2.0for AsyncAPI V2 and0.3.0for V3 (#27) (7cea38b) - AMQP, Kafka, MQTT, Pulsar, SNS, SQS, and WebSockets bindings now expose explicit V2 and V3 serialization paths while retaining their existing common representation (#27) (7cea38b)
- added
AvroNamedTypefor Avro name references, kept distinct from AsyncAPI$refreferences (#32) (310868a) - added namespace-aware resolution of previously declared records, enums, fixed schemas, and named duration schemas (#32) (310868a)
- added support for self-recursive Avro records and named references within record fields, arrays, maps, and unions (#32) (310868a)
- expanded Avro maps to accept any
AsyncApiAvroSchemaas their value schema, including named and complex types (#32) (310868a) - added recursive, cycle-safe Avro traversal and warnings for named types that cannot be resolved (#32) (310868a)
- added an explicit conversion from primitive
AsyncApiAvroSchemavalues back toAvroPrimitiveType(#32) (310868a)
- added
ValidationRule.ApplicableVersions,AsyncApiVersionRuleAttribute, and version-filtered rule lookup so V2 and V3 rules run only against their intended document family (#25) (5e4ed51) - stopped applying V3-only operation action, channel-reference, and message-subset rules to operations upgraded from V2 documents (#25) (5e4ed51)
- added V2-specific validation requiring a non-empty Channels Object while allowing V3 documents to omit channels (#25) (5e4ed51)
- fragment validation warnings are now reported through
AsyncApiDiagnostic.Warningsinstead of being promoted to errors (#32) (310868a)
- added
net9.0andnet10.0package targets while retainingnetstandard2.0,netstandard2.1, andnet8.0(#33) (723a99d)
- corrected variable handling, nesting, and reference-name behavior during document deserialization (#29) (eeb9d8f)
- custom
AsyncApiBindingimplementations must now override bothSerializeV2andSerializeV3;SerializePropertiesalone is no longer sufficient. HttpOperationBinding.Typewas removed. Set the containingAsyncApiOperation.Action; V2 output derivesrequestorresponsefrom that action.- avro:
AvroMap.Valuesnow usesAsyncApiAvroSchemainstead ofAvroPrimitiveType.
2.1.2 (2025-12-21)
- added base-URI-aware loading for relative external references in readers and stream loaders (#21) (07d912d)
- added
AsyncApiReaderSettings.BaseUrifor resolving relative references (#21) (07d912d) - made
AsyncApiWalkersafely traverse operations whose optional reply address or channel reference is absent (#23) (7085d23)
- custom
IStreamLoaderimplementations must accept both the base URI and requested URI inLoad(Uri baseUri, Uri uri)andLoadAsync(Uri baseUri, Uri uri).
2.1.1 (2025-08-28)
- corrected discriminator serialization to use the expected constant name (b9657e0)
- converted out-of-range integer constraints in JSON Schema into reader diagnostics instead of unhandled parsing failures, and corrected non-negative numeric validation (cf9f212)
2.1.0 (2025-08-08)
- added pluggable schema parsers for custom multi-format schema payloads (#13) (d852d02)
- fixed parameter reference resolution while upgrading V2 documents into the shared V3-shaped model (#15) (ccd6ff3)
- corrected required AMQP binding properties in the shared V2/V3 binding model (#17) (34e2733)
AMQPOperationBinding.Expiration,Priority,DeliveryMode,Mandatory,Timestamp, andAckare now non-nullable and serialize as required properties;UserIdis also emitted as required.AsyncApiSchemaDeserializerwas renamed toAsyncApiJsonSchemaDeserializeras part of the pluggable schema-parser API.
2.0.1 (2025-05-31)
- re-add the .NET Standard target to ensure source generator compatibility (b28d6ff)
2.0.0 (2025-05-25)
Package 2.0.0 replaced the V2-shaped public API with a shared AsyncAPI 3.0-shaped object model. The same model can read AsyncAPI 2.x or 3.x documents and serialize back to either AsyncAPI 2.6 or 3.0. This package major version is independent of the AsyncAPI specification version.
- added native AsyncAPI 3.0 readers, writers, validation, and
AsyncApiVersion.AsyncApi3_0selection (#8) (2b98f81) - added root
AsyncApiDocument.Operations; operations now useAsyncApiOperation.Actionand anAsyncApiChannelReferenceinstead of living under each channel asPublishandSubscribe(#8) (2b98f81) - separated channel identity from its address through
AsyncApiChannel.Addressand added channel-level message maps, titles, summaries, tags, and external documentation (#8) (2b98f81) - changed operations to reference a subset of their channel's messages through
IList<AsyncApiMessageReference>and added operation titles and request/reply support (#8) (2b98f81) - added
AsyncApiOperationReply,AsyncApiOperationReplyAddress, their typed references, and reusable reply and reply-address components (#8) (2b98f81) - moved root tags and external documentation to
AsyncApiInfo, matching their AsyncAPI 3 placement (#8) (2b98f81)
- added
AsyncApiMultiFormatSchemaandIAsyncApiSchemaso message payloads, headers, and reusable schemas can represent JSON Schema, Avro, and custom schema formats through one model (#8) (2b98f81) - moved message
schemaFormatinto the payload's multi-format schema wrapper and changed message headers to use the same abstraction (#8) (2b98f81) - changed component schemas from
AsyncApiJsonSchematoAsyncApiMultiFormatSchemaand addedAsyncApiMultiFormatSchemaReference(#8) (2b98f81) - added implicit conversion from
AsyncApiJsonSchematoAsyncApiMultiFormatSchemato simplify JSON Schema construction (#8) (2b98f81)
- replaced
AsyncApiServer.UrlwithHostandPathName, and added server title, summary, and external documentation fields (#8) (2b98f81) - expanded components with reusable operations, replies, reply addresses, external documentation, tags, server variables, and all four binding component categories (#8) (2b98f81)
- added typed references for operations, replies, reply addresses, tags, external documentation, and multi-format schemas (#8) (2b98f81)
- added value equality to
AsyncApiReferenceand expanded workspace registration for V3 components, root channels, and channel messages (#8) (2b98f81)
- replaced
AsyncApiSecurityRequirementwith security scheme objects and references carrying required scopes; added V3 security scheme factories and separated required scopes from OAuth flowAvailableScopes(#8) (2b98f81) - replaced parameter
Schemawith the V3Enum,Default, andExamplesfields, with V2 schema reconstruction during downgrade serialization (#8) (2b98f81) - updated operation and message traits for V3 titles, security, and multi-format headers (#8) (2b98f81)
- V2 channel keys are retained as
AsyncApiChannel.Address, while normalized channel identifiers are used by the shared V3-shaped model (#8) (2b98f81) - V2
subscribeandpublishoperations are promoted to root operations withSendandReceiveactions and channel references (#8) (2b98f81) - V2 inline messages and
message.oneOfentries are promoted into channel message maps and operation message references (#8) (2b98f81) - V2
operationIdandmessageIdvalues become operation and message dictionary keys in the shared model (#8) (2b98f81) - V2 server URLs are split into V3 host and pathname fields when read and recombined when serialized back to V2 (#8) (2b98f81)
- V2 serialization reconstructs channel
subscribeandpublish, emits one message directly or multiple messages throughoneOf, and flattens multi-format schemas back into V2 payload and component schema objects (#8) (2b98f81) - operations with no explicit message references now infer their V2 message or
oneOfentries from the referenced channel's message map (#10) (c201b13)
- The public object model now follows AsyncAPI 3.0. Existing applications must migrate channel operations, message schemas, server URLs, security requirements, parameters, traits, components, and references to the new shapes described above.
AsyncApiChannel.PublishandSubscribewere removed; place operations inAsyncApiDocument.Operationsand set theirActionandChannel.AsyncApiChannel.Serversnow containsAsyncApiServerReferencevalues instead of server-name strings.AsyncApiOperation.Messagewas replaced byMessages, containingAsyncApiMessageReferencevalues into the referenced channel's message map.AsyncApiOperation.OperationId,AsyncApiOperationTrait.OperationId,AsyncApiMessage.MessageId, andAsyncApiMessageTrait.MessageIdwere removed; use operation, channel-message, or component dictionary keys as identity.AsyncApiMessage.Payload,AsyncApiMessage.Headers, andAsyncApiComponents.Schemasnow useAsyncApiMultiFormatSchema.IAsyncApiMessagePayloadwas replaced byIAsyncApiSchema; schema helper extensions now operate on the new interface.AsyncApiServer.Urlwas replaced byHostandPathName.AsyncApiSecurityRequirementwas removed; use security scheme references withScopes.AsyncApiParameter.Schemawas replaced byEnum,Default, andExamples.AsyncApiOAuthFlow.Scopeswas renamed toAvailableScopesto distinguish offered scopes from scopes required by a security-scheme reference.AsyncApiReaderSettings.BaseUrlwas removed.AsyncApiWriterSettings.InlineLocalReferencesis now controlled throughReferenceInlinerather than being set directly.- custom
IAsyncApiSerializableimplementations must implementSerializeV3.
1.0.1 (2025-04-24)
- missing
messageIdserialization (0a1d70f)
- AsyncAPI v2.6 full support (f0ef397)