defaultValue;
+
@NotNull
@Override
public AvroType getType() {
diff --git a/asyncapi-core/src/main/java/com/asyncapi/v3/schema/avro/v1/_9_0/AvroUnion.java b/asyncapi-core/src/main/java/com/asyncapi/v3/schema/avro/v1/_9_0/AvroUnion.java
new file mode 100644
index 00000000..0f97ec03
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/v3/schema/avro/v1/_9_0/AvroUnion.java
@@ -0,0 +1,48 @@
+package com.asyncapi.v3.schema.avro.v1._9_0;
+
+import com.asyncapi.v3.schema.avro.v1._9_0.jackson.AvroTypeDeserializer;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.LinkedList;
+
+/**
+ * Avro Union.
+ *
+ * Unions, as mentioned above, are represented using JSON arrays.
+ *
+ * For example, ["null", "string"] declares a schema which may be either a null or string.
+ *
+ *
+ * Note that when a default value is specified for a record field whose type is a union,
+ * the type of the default value must match the first element of the union.
+ *
+ * Thus, for unions containing "null", the "null" is usually listed first,
+ * since the default value of such unions is typically null.
+ *
+ *
+ * Unions may not contain more than one schema with the same type, except for the named types record, fixed and enum.
+ *
+ * For example, unions containing two array types or two map types are not permitted, but two types with different names are permitted.
+ *
+ * (Names permit efficient resolution when reading and writing unions.)
+ *
+ * Unions may not immediately contain other unions.
+ *
+ * @see Unions
+ * @see Record
+ */
+@JsonDeserialize(contentUsing = AvroTypeDeserializer.class)
+public class AvroUnion extends LinkedList