---
type: "article"
title: "Avro Schema Parser, Typescript, Generator 1.0.0-rc.7 and more"
summary: "There are many different schema formats that one might use to describe the message payload. Not everyone uses JSON Schema."
newsletter: "AsyncAPI Initiative"
newsletter_handle: "asyncapi-initiative"
newsletter_url: "https://usecommune.com/n/asyncapi-initiative"
author: "Thulisile Sibanda (@thulieblack)"
published: "2020-07-30T11:00:00.000Z"
canonical_url: "https://usecommune.com/n/asyncapi-initiative/a/avro-schema-parser-typescript-generator-1-0-0-rc-7-and-more"
markdown_url: "https://usecommune.com/n/asyncapi-initiative/a/avro-schema-parser-typescript-generator-1-0-0-rc-7-and-more.md"
chat_url: "https://usecommune.com/n/asyncapi-initiative/a/avro-schema-parser-typescript-generator-1-0-0-rc-7-and-more/chat"
source_url: "http://eepurl.com/g_CdGX"
body_source: "imported"
likes: 0
replies: 0
body_words: 1077
---

# Avro Schema Parser, Typescript, Generator 1.0.0-rc.7 and more

[View this email in your browser](https://mailchi.mp/0ced9b079c50/avro-schema-parser-typescript-generator-100-rc7-and-more?e=[UNIQID])

![](https://gallery.mailchimp.com/3cdae6aed726d2e7490aec739/images/3205a7f3-01ee-4125-9e29-cb7ef00dbd1a.png)

![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/2a99e058-a484-4684-9f42-c15298a654c8.jpg)

## Avro Schema Parser

### Short Intro to Schema Types in AsyncAPI

There are many different schema formats that one might use to describe the message payload. Not everyone uses JSON Schema. There are multiple formats out there, like RAML 1.0 Data Types, Avro, or even OpenAPI 3.0. When you write your AsyncAPI file, you should not manually convert schemas that you already store somewhere in a format different from AsyncAPI Schema. The best practice is to reuse existing schemas by referring to them in your AsyncAPI file and making sure that the **Message** object has information about the schema format within the **schemaFormat** parameter.

 AsyncAPI [lists schema types](https://www.asyncapi.com/docs/specifications/2.0.0/#messageObjectSchemaFormatTable) that are a MUST but is not limited to this list only. RAML Data Types is not a MUST HAVE, yet we already have a custom parser for it.

 From the AsyncAPI tooling perspective, we have a [basic JavaScript Parser](https://github.com/asyncapi/parser-js/) capable of parsing schema of the payload provided with AsyncAPI schema format or JSON schema format. Other schema parsers are plugins that you can register with a parser, like [OpenAPI 3.0](https://github.com/asyncapi/openapi-schema-parser) or [RAML 1.0 Data Types](https://github.com/asyncapi/raml-dt-schema-parser). You could provide such plugins as well for your custom formats.

### Avro Parser

The 3rd plugin that we now officially support is related to Avro schema type. The first minor version is already out there, and you can give it a try, even if your schemas are in the Confluent Schema Registry. Have a look at the docs of [the Avro schema parser](https://github.com/asyncapi/avro-schema-parser). The Avro parser is also part of the latest release candidate of [the Generator](https://github.com/asyncapi/generator/). Please help us make it work for you.

![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/c3b28dce-bce5-4910-beb9-313aa6835152.png)

## **Project Status Update**

### Circular References in AsyncAPI

Now JavaScript Parser can handle circular references that you might have in your AsyncAPI files. The current implementation fully dereferences circular references, and you cannot change this behavior. We also extended the API to help you out to deal with circular references:

- The core AsyncAPI model now contains the **hasCircular()** function that you can use to determine at the very beginning if a given AsyncAPI document contains some circular references or not. An example use case for it is to throw a proper error message to the user with a clear message that circular references are not supported by your tool at the moment,
- The Schema model contains **isCircular()** function to check if a given schema is circular, so you do not have to detect it on your own and adequately react

Have a look at [this](https://github.com/asyncapi/parser-js/pull/94/files) pull request for implementation details. The work is still in progress as nice features in the Parser do not mean now all the Generator’s templates will support it. Have a look at [this](https://github.com/asyncapi/parser-js/issues/83#issuecomment-659958312) comment if you need more details.

### TypeScript Support

Since Parser 0.27 we will now always generate [TypeScript types](https://github.com/asyncapi/parser-js/blob/master/types.d.ts) to make it much easier for TypeScript developers to use Parser in their tools.
 Generator Release Candidate 6 is out
 We just released another release candidate that contains a lot of improvements that we added to the Parser. Give it a try.

### Generator Release Candidate 7 is out

We just released another release candidate that contains a lot of improvements that we added to the Parser. It also includes the above mentioned **avro-schema-parser**so it is easier for you to test it out. Give it a try.

![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/449ebc88-f7ac-498d-ab26-23af786682e2.png)

## **The Highlight of Interesting Discussions**

### Publish vs Subscribe Discussion Continues

We noticed that people that interact with AsyncAPI for the first time are confused about the meaning of those two words, publish and subscribe. Without going much into detail and oversimplifying things, we can say that this is the part of the community that considers using AsyncAPI to describe their internal broker-centric architecture. In such cases, you want to describe the application's behavior and not what others can do with it. You want to use the **Publish** verb to specify that your application publishes to a given channel. What if your application is exposed to the outside world where others can interact with it? You want **Publish** to mean something different, like it is now, that it means your application is subscribed to a given channel, so that you can publish to it, and the application will receive a message.

 Event-driven architectures are complex beasts with many patterns, and we should try to make AsyncAPI a single home for all of them. Please engage in this discussion, share your thoughts, and help us out to find the best solution:

 [Proposal](https://github.com/asyncapi/asyncapi/issues/390) to solve the above challenge with a view property that will not require 3.0 release. There is also an idea to introduce more verbs.
 [Recording](https://www.youtube.com/watch?v=U6h7LwdEr0w) of the last open SIG meeting where there was a discussion about publish/subscribe confusion.

![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/38569ecf-d762-4e43-93a2-af41c149c080.png)

## **AsyncAPI Special Interest Group (SIG) open meeting**

The last meeting took place on Tuesday, 21st of July, 4PM UTC. Meeting notes and recording are available [here](https://github.com/asyncapi/asyncapi/issues/404).

[![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/video_thumbnails_new/d8ba0c23ddbba44853034850ba6279fe.png)](https://youtu.be/U6h7LwdEr0w "AsyncAPI SIG meeting 28 (July 21, 2020)")

This is the recording for the AsyncAPI Special Interest Group (SIG) meeting #27.

[Watch Last SIG Meeting](https://youtu.be/U6h7LwdEr0w "Watch Last SIG Meeting")

The next meeting is scheduled for next **[Tuesday, 4th of August, 8AM UTC](https://everytimezone.com/s/6df9fcca)**.

 We work on the agenda for the next meeting [here](https://github.com/asyncapi/asyncapi/issues/417). At the moment, there is nothing in the agenda so you can sneak in your topic easily.

 We host the meeting on [Zoom](https://zoom.us/j/165106914). Do not forget about future meetings and always have up to date invitations in your calendar by adding your email to [this](https://groups.google.com/forum/#!forum/asyncapi-users) mailing list.

![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/906b2745-fa23-4599-9ce8-7ed635e6f892.png)

## Content from the community

[![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/bc53a2f3-9f7f-4400-b243-c695f732f572.jpg)](https://streamnative.io/blog/tech/pulsar-vs-kafka-part-1)

[Pulsar vs. Kafka — Part 1 — A More Accurate Perspective on Performance, Architecture, and Features](https://streamnative.io/blog/tech/pulsar-vs-kafka-part-1)

 by [StreamNative](https://streamnative.io/)

[Read More](https://streamnative.io/blog/tech/pulsar-vs-kafka-part-1 "Read More")

[![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/0845a177-e3fc-46af-a864-4ea71c834d9d.jpg)](https://www.confluent.io/kafka-vs-pulsar/)

[Kafka vs. Pulsar vs. RabbitMQ: Performance, Architecture, and Features Compared](https://www.confluent.io/kafka-vs-pulsar/)

 by [Confluent](https://www.confluent.io/)

[Read More](https://www.confluent.io/kafka-vs-pulsar/ "Read More")

[![](https://mcusercontent.com/3cdae6aed726d2e7490aec739/images/4565039d-5ae8-481f-a7c4-36159ed71c5e.png)](https://nordicapis.com/how-to-write-your-first-asyncapi-specification/)

**[How to write your first AsyncAPI file](https://nordicapis.com/how-to-write-your-first-asyncapi-specification/)**

 by [Thomas Bush](https://www.linkedin.com/in/thomasbush/)

[Read More](https://nordicapis.com/author/thomas_bush/ "Read More")

If you want to promote your content in the Newsletter. Maybe you have some interesting blog posts you want to share with others. Join [this](https://groups.google.com/forum/#!forum/asyncapi-users) mailing list and gain access to [the document](https://docs.google.com/document/d/1vGZ1e8zxPxSXu0r5457Vohb9hjg8hkvolWSOFjr73-Y) where we craft the next Newsletter and suggest your changes.

#### Follow us

[![GitHub](https://cdn-images.mailchimp.com/icons/social-block-v2/outline-color-github-48.png)](https://github.com/asyncapi)

[GitHub](https://github.com/asyncapi)

[![Twitter](https://cdn-images.mailchimp.com/icons/social-block-v2/outline-color-twitter-48.png)](http://www.twitter.com/AsyncAPISpec)

[Twitter](http://www.twitter.com/AsyncAPISpec)

[![LinkedIn](https://cdn-images.mailchimp.com/icons/social-block-v2/outline-color-linkedin-48.png)](https://www.linkedin.com/company/asyncapi/)

[LinkedIn](https://www.linkedin.com/company/asyncapi/)

[![YouTube](https://cdn-images.mailchimp.com/icons/social-block-v2/outline-color-youtube-48.png)](https://www.youtube.com/channel/UCIz9zGwDLbrYQcDKVXdOstQ)

[YouTube](https://www.youtube.com/channel/UCIz9zGwDLbrYQcDKVXdOstQ)

[![WebSite](https://cdn-images.mailchimp.com/icons/social-block-v2/outline-color-link-48.png)](https://www.asyncapi.com/)

[WebSite](https://www.asyncapi.com/)

*Copyright © 2020 Fran Méndez, All rights reserved.*

 Want to change how you receive these emails?
 You can [update your preferences](https://asyncapi.us12.list-manage.com/profile?u=3cdae6aed726d2e7490aec739&id=6e3e437abe&e=[UNIQID]&c=03dba525eb) or [unsubscribe from this list](https://asyncapi.us12.list-manage.com/unsubscribe?u=3cdae6aed726d2e7490aec739&id=6e3e437abe&t=b&e=[UNIQID]&c=03dba525eb).

 [![Email Marketing Powered by Mailchimp](https://cdn-images.mailchimp.com/monkey_rewards/intuit-mc-rewards-1.png "Mailchimp Email Marketing")](https://login.mailchimp.com/signup/email-referral/?aid=3cdae6aed726d2e7490aec739)

***

## Discussion

No replies yet.
