Full example

// Source: https://avro.apache.org/docs/current/idl.html#example

/**
 * An example protocol in Avro IDL
 */
@namespace("org.apache.avro.test")
protocol Simple {

	@aliases(["org.foo.KindOf"])
	enum Kind {
		FOO,
		BAR, // the bar enum value
		BAZ
	}

	fixed MD5(16);

	record TestRecord {
		@order("ignore")
		string name;

		@order("descending")
		Kind kind;

		MD5 hash;

		union { MD5, null} @aliases(["hash"]) nullableHash;

		array<long> arrayOfLongs;
	}

	error TestError {
		string message;
	}

	string hello(string greeting);
	TestRecord echo(TestRecord `record`);
	int add(int arg1, int arg2);
	bytes echoBytes(bytes data);
	void `error`() throws TestError;
	void ping() oneway;
}