ZDL To AsyncAPI Generator

Generate AsyncAPI definition from ZDL Services and Events:

jbang zw -p io.zenwave360.sdk.plugins.ZDLToAsyncAPIPlugin \
specFile=src/main/resources/model/orders-model.zdl \
idType=integer \
idTypeFormat=int64 \
targetFile=src/main/resources/model/asyncapi.yml

For instance the following ZDL model will generate:

service OrdersService for (CustomerOrder) {
// only emited events will be included in the asyncapi definition
updateOrder(id, CustomerOrderInput) CustomerOrder withEvents OrderStatusUpdated
}
@asyncapi({channel: "OrderUpdatesChannel", topic: "orders.order_updates"})
event OrderStatusUpdated {
id String
dateTime Instant required
status OrderStatus required
previousStatus OrderStatus
}
  • An schema named OrderStatusUpdated with a payload containing the id, dateTime, status and previousStatus fields.
  • A message named OrderStatusUpdatedMessage pointing to OrderStatusUpdated schema.
  • An a Channel named OrderUpdatesChannel containing a reference to the OrderStatusUpdatedMessage message.
  • It also will generate an Operation named onOrderStatusUpdated with and action sendto the OrderUpdatesChannel channel.

This is as a compact format as it can get! Saving you a lot of typing and giving you very concise representation of your events.

Options

OptionDescriptionTypeDefaultValues
specFileSpec file to parseString
targetFolderTarget folder to generate code to. If left empty, it will print to stdout.File
targetFileTarget fileStringasyncapi.yml
asyncapiVersionTarget AsyncAPI version.AsyncapiVersionTypev3v2, v3
schemaFormatSchema format for messages' payloadSchemaFormatschemaschema, avro
idTypeJsonSchema type for id fields and parameters.Stringstring
idTypeFormatJsonSchema type format for id fields and parameters.String
basePackageJava Models package nameStringio.example.domain.model
avroPackagePackage name for generated Avro Schemas (.avsc)Stringio.example.domain.model
zdlBusinessEntityPropertyExtension property referencing original zdl entity in components schemas (default: x-business-entity)Stringx-business-entity
continueOnZdlErrorContinue even when ZDL contains fatal errorsbooleantrue

Getting Help

jbang zw -p io.zenwave360.sdk.plugins.ZDLToAsyncAPIPlugin --help