All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.zenwave360.sdk.plugins.AsyncAPIToJDLGenerator.JDLToAsyncAPIv3.yml.hbs Maven / Gradle / Ivy

asyncapi: 3.0.0
info:
  title: Zenwave 360 Generated API
  version: 0.0.1

defaultContentType: application/json

tags:
  - name: "Default"
{{~#each zdlModel.serviceNames as |serviceName|}}
  - name: "{{asTagName serviceName}}"
{{~/each}}

channels:
{{~#each zdlModel.entities as |entity|}}
  {{~#unless (skipOperations entity)}}
  {{~#if includeCommands}}
  {{entity.kebabCase}}.requests:
    address: {{entity.kebabCase}}.requests
    summary: {{entity.className}} Async Requests
    messages:
      - $ref: "#/components/messages/{{entity.className}}RequestMessage"
   {{~/if}}
  {{~#if includeEvents}}
  {{entity.kebabCase}}.events:
    summary: {{entity.className}} Domain Events
    messages:
      - $ref: "#/components/messages/{{entity.className}}EventMessage"
   {{~/if}}
  {{/unless}}
{{~/each}}

operations:
{{~#each zdlModel.operations as |operation|}}
  {{@key}}:
    action: {{operation.action}}
    channel:
      $ref: '#/channels/{{operation.channel}}'
{{~/each}}
{{~#each zdlModel.entities as |entity|}}
  {{~#unless (skipOperations entity)}}
  {{~#if includeCommands}}
  do{{entity.className}}Request:
    action: receive
    channel:
      $ref: "#/channels/{{entity.kebabCase}}.requests"
    tags:
      - name: {{asTagName entity.options.service}}
  {{~/if}}
  {{~#if includeEvents}}
  on{{entity.className}}Event:
    action: send
    channel:
      $ref: "#/channels/{{entity.kebabCase}}.requests"
    tags:
      - name: {{asTagName entity.options.service}}
  {{~/if}}
  {{~/unless}}
{{~/each}}

components:
  messages:
{{~#each zdlModel.entities as |entity|}}
  {{~#unless (skipOperations entity)}}
    {{~#if includeCommands}}
    {{entity.className}}RequestMessage:
      messageId: {{entity.className}}RequestMessage
      name: {{entity.className}}RequestMessage
      title: Async Command/Request for a {{entity.className}}
      summary: Async Command/Request for a {{entity.className}}
      schemaFormat: {{{schemaFormatString}}}
      traits:
        - $ref: '#/components/messageTraits/CommonHeaders'
      payload:
        $ref: "{{payloadRef entity "Request" }}"
    {{~/if}}
    {{~#if includeEvents}}
    {{entity.className}}EventMessage:
      name: {{entity.className}}EventMessage
      messageId: {{entity.className}}EventMessage
      title: Message for a {{entity.className}} Event
      summary: Message for a {{entity.className}} Event
      schemaFormat: {{{schemaFormatString}}}
      traits:
        - $ref: '#/components/messageTraits/CommonHeaders'
      payload:
        $ref: "{{payloadRef entity "Event"}}"
    {{~/if}}
  {{/unless}}
{{~/each}}

  messageTraits:
    CommonHeaders:
      headers:
        type: object
        properties:
          kafka_messageKey:
            type: string
            description: This header value will be populated automatically at runtime
            x-runtime-expression: $message.payload#/id
          tracingId:
            type: string
            description: This header value will be populated automatically at runtime
            x-runtime-expression: $tracingIdSupplier

{{{schemasAsString}}}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy