syntax = "proto3"; package meta; import "google/protobuf/descriptor.proto"; /* This is assigned to metadata fields. It describes how the metadata field should be represented in DataHub. This enum must be used in the `meta` package. Multiple can be used for the same metadata annotation. This allows a single piece of information to be captured in DataHub as a property, tag and/or term. Tags can be strings, enums, or booleans Terms can be strings or enums Properties should be strings */ enum DataHubMetadataType { PROPERTY = 0; // Datahub Custom Property TAG = 1; // Datahub Tag TERM = 2; // Datahub Term } /* Example below: The following is not required for annotation processing. This is an example of creating an annotation using an enum. */ enum MetaEnumExample { UNKNOWN = 0; ENTITY = 1; EVENT = 2; } // Assuming Glossary Term defined from bootstrap example enum Classification { HighlyConfidential = 0; Confidential = 1; Sensitive = 2; } message fld { extend google.protobuf.FieldOptions { // Required: Mark option field with how to export to DataHub in one or more places. repeated meta.DataHubMetadataType type = 6000; /* Examples below: The following is not required for annotation processing. */ // Set true if the field is a primary key. This works for any boolean with `primary_key` in it. bool is_primary_key = 6010; // Extract classification field option as a Term, either works string classification = 6001 [(meta.fld.type) = TERM]; meta.Classification classification_enum = 6002 [(meta.fld.type) = TERM]; // Expose this option as a tag on the field. string product_type = 70004 [(meta.fld.type) = TAG]; bool product_type_bool = 70005 [(meta.fld.type) = TAG]; meta.MetaEnumExample product_type_enum = 70006 [(meta.fld.type) = TAG]; } } message msg { extend google.protobuf.MessageOptions { /* Examples below: The following is not required for annotation processing. */ // Place the classification term at the Message/Dataset level, either string or enum is supported string classification = 4000 [(meta.fld.type) = TERM, (meta.fld.type) = PROPERTY]; meta.Classification classification_enum = 4001 [(meta.fld.type) = TERM, (meta.fld.type) = PROPERTY]; // Attach these Message/Dataset options as a tag and property. string product = 5001 [(meta.fld.type) = TAG, (meta.fld.type) = PROPERTY]; string project = 5002 [(meta.fld.type) = TAG, (meta.fld.type) = PROPERTY]; string team = 5003 [(meta.fld.type) = TAG, (meta.fld.type) = PROPERTY]; string domain = 60003 [(meta.fld.type) = TAG, (meta.fld.type) = PROPERTY]; meta.MetaEnumExample type = 60004 [(meta.fld.type) = TAG, (meta.fld.type) = PROPERTY]; bool bool_feature = 60005 [(meta.fld.type) = TAG]; string alert_channel = 60007 [(meta.fld.type) = PROPERTY]; } }