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

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

asyncapi: 2.6.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:
    subscribe:
      summary: {{entity.className}} Async Requests
      operationId: do{{entity.className}}Request
      tags:
        - name: {{asTagName entity.options.service}}
      message:
        $ref: "#/components/messages/{{entity.className}}RequestMessage"
   {{~/if}}
  {{~#if includeEvents}}
  {{entity.kebabCase}}.events:
    publish:
      summary: {{entity.className}} Domain Events
      operationId: on{{entity.className}}Event
      tags:
        - name: {{asTagName entity.options.service}}
      message:
        $ref: "#/components/messages/{{entity.className}}EventMessage"
   {{~/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}}}

{{~#if schemasAsString}}{{~#if (isStateTransferPayloadStyle)}}
{{~#each zdlModel.entities as |entity|}}
  {{~#unless (skipOperations entity)}}
    {{~#if includeCommands}}
    {{entity.className}}RequestPayload:
      type: object
      properties:
        id:
          type: {{idType}}
          {{~#if idTypeFormat}}
          format: {{idTypeFormat}}
          {{~/if}}
        requestType:
          type: string
          enum:
          - "create"
          - "update"
          - "delete"
        {{entity.instanceName}}:
          $ref: "#/components/schemas/{{entity.className}}"
    {{~/if}}
    {{~#if includeEvents}}
    {{entity.className}}EventPayload:
      type: object
      properties:
        id:
          type: {{idType}}
          {{~#if idTypeFormat}}
          format: {{idTypeFormat}}
          {{~/if}}
        eventType:
          type: string
          enum:
          - "created"
          - "updated"
          - "deleted"
        {{entity.instanceName}}:
          $ref: "#/components/schemas/{{entity.className}}"
    {{~/if}}
  {{/unless}}
{{~/each}}
{{~/if}}{{~/if}}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy