[
  "null",
  {
    "type": "record",
    "Aspect": {
      "name": "constraintInfo"
    },
    "name": "ConstraintInfo",
    "namespace": "com.linkedin.pegasus2avro.constraint",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "displayName",
        "doc": "Display name of the constraint"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Constraint"
      },
      {
        "type": "string",
        "name": "type",
        "doc": "The type of constraint"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubResourceFilter",
            "namespace": "com.linkedin.pegasus2avro.policy",
            "fields": [
              {
                "deprecated": true,
                "type": [
                  "null",
                  "string"
                ],
                "name": "type",
                "default": null,
                "doc": "The type of resource that the policy applies to. This will most often be a data asset entity name, for\nexample 'dataset'. It is not strictly required because in the future we will want to support filtering a resource\nby domain, as well."
              },
              {
                "deprecated": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "resources",
                "default": null,
                "doc": "A specific set of resources to apply the policy to, e.g. asset urns"
              },
              {
                "deprecated": true,
                "type": "boolean",
                "name": "allResources",
                "default": false,
                "doc": "Whether the policy should be applied to all assets matching the filter."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "PolicyMatchFilter",
                    "namespace": "com.linkedin.pegasus2avro.policy",
                    "fields": [
                      {
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "PolicyMatchCriterion",
                            "namespace": "com.linkedin.pegasus2avro.policy",
                            "fields": [
                              {
                                "type": "string",
                                "name": "field",
                                "doc": "The name of the field that the criterion refers to"
                              },
                              {
                                "type": {
                                  "type": "array",
                                  "items": "string"
                                },
                                "name": "values",
                                "doc": "Values. Matches criterion if any one of the values matches condition (OR-relationship)"
                              },
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "EQUALS": "Whether the field matches the value",
                                    "NOT_EQUALS": "Whether the field does not match the value",
                                    "STARTS_WITH": "Whether the field value starts with the value"
                                  },
                                  "name": "PolicyMatchCondition",
                                  "namespace": "com.linkedin.pegasus2avro.policy",
                                  "symbols": [
                                    "EQUALS",
                                    "STARTS_WITH",
                                    "NOT_EQUALS"
                                  ],
                                  "doc": "The matching condition in a filter criterion"
                                },
                                "name": "condition",
                                "default": "EQUALS",
                                "doc": "The condition for the criterion"
                              }
                            ],
                            "doc": "A criterion for matching a field with given value"
                          }
                        },
                        "name": "criteria",
                        "doc": "A list of criteria to apply conjunctively (so all criteria must pass)"
                      }
                    ],
                    "doc": "The filter for specifying the resource or actor to apply privileges to"
                  }
                ],
                "name": "filter",
                "default": null,
                "doc": "Filter to apply privileges to"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.policy.PolicyMatchFilter"
                ],
                "name": "privilegeConstraints",
                "default": null,
                "doc": "Constraints around what sub-resources operations are allowed to modify, i.e. NOT_EQUALS - cannot modify a particular defined tag, EQUALS - can only modify a particular defined tag, STARTS_WITH - can only modify a tag starting with xyz"
              }
            ],
            "doc": "Information used to filter DataHub resource."
          }
        ],
        "name": "resources",
        "default": null,
        "doc": "The resource that the policy applies to. Not required for some 'Platform' privileges."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "ConstraintParams",
            "namespace": "com.linkedin.pegasus2avro.constraint",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlossaryTermInNodeConstraint",
                    "namespace": "com.linkedin.pegasus2avro.constraint",
                    "fields": [
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "glossaryNode",
                        "doc": "The glossary node which the constrained entities must have attached to them"
                      }
                    ]
                  }
                ],
                "name": "hasGlossaryTermInNodeParams",
                "default": null,
                "doc": "An optional set of information specific to glossary node constraints."
              }
            ],
            "doc": "Params provided for a specific instance of a constraint."
          }
        ],
        "name": "params",
        "default": null,
        "doc": "Parameters specific for a particular Constraint type"
      }
    ],
    "doc": "Information about a constraint."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaMetadata"
    },
    "name": "SchemaMetadata",
    "namespace": "com.linkedin.pegasus2avro.schema",
    "fields": [
      {
        "validate": {
          "strlen": {
            "max": 500,
            "min": 1
          }
        },
        "type": "string",
        "name": "schemaName",
        "doc": "Schema name e.g. PageViewEvent, identity.Profile, ams.account_management_tracking"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.DataPlatformUrn"
        },
        "Urn": "DataPlatformUrn",
        "type": "string",
        "name": "platform",
        "doc": "Standardized platform urn where schema is defined. The data platform Urn (urn:li:platform:{platform_name})"
      },
      {
        "type": "long",
        "name": "version",
        "doc": "Every change to SchemaMetadata in the resource results in a new version. Version is server assigned. This version is differ from platform native schema version."
      },
      {
        "type": {
          "type": "record",
          "name": "AuditStamp",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "type": "long",
              "name": "time",
              "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": "string",
              "name": "actor",
              "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change."
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": [
                "null",
                "string"
              ],
              "name": "impersonator",
              "default": null,
              "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "message",
              "default": null,
              "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."
            }
          ],
          "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."
        },
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.DatasetUrn"
        },
        "Urn": "DatasetUrn",
        "type": [
          "null",
          "string"
        ],
        "name": "dataset",
        "default": null,
        "doc": "Dataset this schema metadata is associated with."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "cluster",
        "default": null,
        "doc": "The cluster this schema metadata resides from"
      },
      {
        "type": "string",
        "name": "hash",
        "doc": "the SHA1 hash of the schema content"
      },
      {
        "type": [
          {
            "type": "record",
            "name": "EspressoSchema",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "documentSchema",
                "doc": "The native espresso document schema."
              },
              {
                "type": "string",
                "name": "tableSchema",
                "doc": "The espresso table schema definition."
              }
            ],
            "doc": "Schema text of an espresso table schema."
          },
          {
            "type": "record",
            "name": "OracleDDL",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "tableSchema",
                "doc": "The native schema in the dataset's platform. This is a human readable (json blob) table schema."
              }
            ],
            "doc": "Schema holder for oracle data definition language that describes an oracle table."
          },
          {
            "type": "record",
            "name": "MySqlDDL",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "tableSchema",
                "doc": "The native schema in the dataset's platform. This is a human readable (json blob) table schema."
              }
            ],
            "doc": "Schema holder for MySql data definition language that describes an MySql table."
          },
          {
            "type": "record",
            "name": "PrestoDDL",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "rawSchema",
                "doc": "The raw schema in the dataset's platform. This includes the DDL and the columns extracted from DDL."
              }
            ],
            "doc": "Schema holder for presto data definition language that describes a presto view."
          },
          {
            "type": "record",
            "name": "KafkaSchema",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "documentSchema",
                "doc": "The native kafka document schema. This is a human readable avro document schema."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "documentSchemaType",
                "default": null,
                "doc": "The native kafka document schema type. This can be AVRO/PROTOBUF/JSON."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "keySchema",
                "default": null,
                "doc": "The native kafka key schema as retrieved from Schema Registry"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "keySchemaType",
                "default": null,
                "doc": "The native kafka key schema type. This can be AVRO/PROTOBUF/JSON."
              }
            ],
            "doc": "Schema holder for kafka schema."
          },
          {
            "type": "record",
            "name": "BinaryJsonSchema",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "schema",
                "doc": "The native schema text for binary JSON file format."
              }
            ],
            "doc": "Schema text of binary JSON schema."
          },
          {
            "type": "record",
            "name": "OrcSchema",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "schema",
                "doc": "The native schema for ORC file format."
              }
            ],
            "doc": "Schema text of an ORC schema."
          },
          {
            "type": "record",
            "name": "Schemaless",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [],
            "doc": "The dataset has no specific schema associated with it"
          },
          {
            "type": "record",
            "name": "KeyValueSchema",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "keySchema",
                "doc": "The raw schema for the key in the key-value store."
              },
              {
                "type": "string",
                "name": "valueSchema",
                "doc": "The raw schema for the value in the key-value store."
              }
            ],
            "doc": "Schema text of a key-value store schema."
          },
          {
            "type": "record",
            "name": "OtherSchema",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "rawSchema",
                "doc": "The native schema in the dataset's platform."
              }
            ],
            "doc": "Schema holder for undefined schema types."
          }
        ],
        "name": "platformSchema",
        "doc": "The native schema in the dataset's platform."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaField",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "Searchable": {
                  "boostScore": 1.0,
                  "fieldName": "fieldPaths",
                  "fieldType": "TEXT",
                  "queryByDefault": "true"
                },
                "type": "string",
                "name": "fieldPath",
                "doc": "Flattened name of the field. Field is computed from jsonPath field."
              },
              {
                "Deprecated": true,
                "type": [
                  "null",
                  "string"
                ],
                "name": "jsonPath",
                "default": null,
                "doc": "Flattened name of a field in JSON Path notation."
              },
              {
                "type": "boolean",
                "name": "nullable",
                "default": false,
                "doc": "Indicates if this field is optional or nullable"
              },
              {
                "Searchable": {
                  "boostScore": 0.1,
                  "fieldName": "fieldDescriptions",
                  "fieldType": "TEXT"
                },
                "type": [
                  "null",
                  "string"
                ],
                "name": "description",
                "default": null,
                "doc": "Description"
              },
              {
                "Deprecated": true,
                "Searchable": {
                  "boostScore": 0.2,
                  "fieldName": "fieldLabels",
                  "fieldType": "TEXT"
                },
                "type": [
                  "null",
                  "string"
                ],
                "name": "label",
                "default": null,
                "doc": "Label of the field. Provides a more human-readable name for the field than field path. Some sources will\nprovide this metadata but not all sources have the concept of a label. If just one string is associated with\na field in a source, that is most likely a description.\n\nNote that this field is deprecated and is not surfaced in the UI."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "created",
                "default": null,
                "doc": "An AuditStamp corresponding to the creation of this schema field."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastModified",
                "default": null,
                "doc": "An AuditStamp corresponding to the last modification of this schema field."
              },
              {
                "type": {
                  "type": "record",
                  "name": "SchemaFieldDataType",
                  "namespace": "com.linkedin.pegasus2avro.schema",
                  "fields": [
                    {
                      "type": [
                        {
                          "type": "record",
                          "name": "BooleanType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Boolean field type."
                        },
                        {
                          "type": "record",
                          "name": "FixedType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Fixed field type."
                        },
                        {
                          "type": "record",
                          "name": "StringType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "String field type."
                        },
                        {
                          "type": "record",
                          "name": "BytesType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Bytes field type."
                        },
                        {
                          "type": "record",
                          "name": "NumberType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Number data type: long, integer, short, etc.."
                        },
                        {
                          "type": "record",
                          "name": "DateType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Date field type."
                        },
                        {
                          "type": "record",
                          "name": "TimeType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Time field type. This should also be used for datetimes."
                        },
                        {
                          "type": "record",
                          "name": "EnumType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Enum field type."
                        },
                        {
                          "type": "record",
                          "name": "NullType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Null field type."
                        },
                        {
                          "type": "record",
                          "name": "MapType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [
                            {
                              "type": [
                                "null",
                                "string"
                              ],
                              "name": "keyType",
                              "default": null,
                              "doc": "Key type in a map"
                            },
                            {
                              "type": [
                                "null",
                                "string"
                              ],
                              "name": "valueType",
                              "default": null,
                              "doc": "Type of the value in a map"
                            }
                          ],
                          "doc": "Map field type."
                        },
                        {
                          "type": "record",
                          "name": "ArrayType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [
                            {
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": "string"
                                }
                              ],
                              "name": "nestedType",
                              "default": null,
                              "doc": "List of types this array holds."
                            }
                          ],
                          "doc": "Array field type."
                        },
                        {
                          "type": "record",
                          "name": "UnionType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [
                            {
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": "string"
                                }
                              ],
                              "name": "nestedTypes",
                              "default": null,
                              "doc": "List of types in union type."
                            }
                          ],
                          "doc": "Union field type."
                        },
                        {
                          "type": "record",
                          "name": "RecordType",
                          "namespace": "com.linkedin.pegasus2avro.schema",
                          "fields": [],
                          "doc": "Record field type."
                        }
                      ],
                      "name": "type",
                      "doc": "Data platform specific types"
                    }
                  ],
                  "doc": "Schema field data types"
                },
                "name": "type",
                "doc": "Platform independent field type of the field."
              },
              {
                "type": "string",
                "name": "nativeDataType",
                "doc": "The native type of the field in the dataset's platform as declared by platform schema."
              },
              {
                "type": "boolean",
                "name": "recursive",
                "default": false,
                "doc": "There are use cases when a field in type B references type A. A field in A references field of type B. In such cases, we will mark the first field as recursive."
              },
              {
                "Relationship": {
                  "/tags/*/tag": {
                    "entityTypes": [
                      "tag"
                    ],
                    "name": "SchemaFieldTaggedWith"
                  }
                },
                "Searchable": {
                  "/tags/*/attribution/actor": {
                    "fieldName": "fieldTagAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/tags/*/attribution/source": {
                    "fieldName": "fieldTagAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/tags/*/attribution/time": {
                    "fieldName": "fieldTagAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  },
                  "/tags/*/tag": {
                    "boostScore": 0.5,
                    "fieldName": "fieldTags",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "record",
                    "Aspect": {
                      "name": "globalTags"
                    },
                    "name": "GlobalTags",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "Relationship": {
                          "/*/tag": {
                            "entityTypes": [
                              "tag"
                            ],
                            "name": "TaggedWith"
                          }
                        },
                        "Searchable": {
                          "/*/tag": {
                            "addToFilters": true,
                            "boostScore": 0.5,
                            "fieldName": "tags",
                            "fieldType": "URN",
                            "filterNameOverride": "Tagged With",
                            "hasValuesFieldName": "hasTags",
                            "queryByDefault": true
                          }
                        },
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "TagAssociation",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.TagUrn"
                                },
                                "Urn": "TagUrn",
                                "type": "string",
                                "name": "tag",
                                "doc": "Urn of the applied tag"
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "context",
                                "default": null,
                                "doc": "Additional context about the association"
                              },
                              {
                                "Searchable": {
                                  "/actor": {
                                    "fieldName": "tagAttributionActors",
                                    "fieldType": "URN",
                                    "queryByDefault": false
                                  },
                                  "/source": {
                                    "fieldName": "tagAttributionSources",
                                    "fieldType": "URN",
                                    "queryByDefault": false
                                  },
                                  "/time": {
                                    "fieldName": "tagAttributionDates",
                                    "fieldType": "DATETIME",
                                    "queryByDefault": false
                                  }
                                },
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "MetadataAttribution",
                                    "namespace": "com.linkedin.pegasus2avro.common",
                                    "fields": [
                                      {
                                        "type": "long",
                                        "name": "time",
                                        "doc": "When this metadata was updated."
                                      },
                                      {
                                        "java": {
                                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                        },
                                        "Urn": "Urn",
                                        "type": "string",
                                        "name": "actor",
                                        "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\neither be a user (in case of UI edits) or the datahub system for automation."
                                      },
                                      {
                                        "java": {
                                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                        },
                                        "Urn": "Urn",
                                        "type": [
                                          "null",
                                          "string"
                                        ],
                                        "name": "source",
                                        "default": null,
                                        "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn."
                                      },
                                      {
                                        "type": {
                                          "type": "map",
                                          "values": "string"
                                        },
                                        "name": "sourceDetail",
                                        "default": {},
                                        "doc": "The details associated with why this metadata was applied. For example, this could include\nthe actual regex rule, sql statement, ingestion pipeline ID, etc.\nAlso can include flags like 'propagated'=true or 'inferred'=true."
                                      }
                                    ],
                                    "doc": "Information about who, why, and how this metadata was applied"
                                  }
                                ],
                                "name": "attribution",
                                "default": null,
                                "doc": "Information about who, why, and how this metadata was applied"
                              }
                            ],
                            "doc": "Properties of an applied tag. For now, just an Urn. In the future we can extend this with other properties, e.g.\npropagation parameters."
                          }
                        },
                        "name": "tags",
                        "doc": "Tags associated with a given entity"
                      }
                    ],
                    "doc": "Tag aspect used for applying tags to an entity"
                  }
                ],
                "name": "globalTags",
                "default": null,
                "doc": "Tags associated with the field"
              },
              {
                "Relationship": {
                  "/terms/*/urn": {
                    "entityTypes": [
                      "glossaryTerm"
                    ],
                    "name": "SchemaFieldWithGlossaryTerm"
                  }
                },
                "Searchable": {
                  "/terms/*/attribution/actor": {
                    "fieldName": "fieldTermAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/terms/*/attribution/source": {
                    "fieldName": "fieldTermAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/terms/*/attribution/time": {
                    "fieldName": "fieldTermAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  },
                  "/terms/*/urn": {
                    "boostScore": 0.5,
                    "fieldName": "fieldGlossaryTerms",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "record",
                    "Aspect": {
                      "name": "glossaryTerms"
                    },
                    "name": "GlossaryTerms",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "GlossaryTermAssociation",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "glossaryTerm"
                                  ],
                                  "name": "TermedWith"
                                },
                                "Searchable": {
                                  "addToFilters": true,
                                  "fieldName": "glossaryTerms",
                                  "fieldType": "URN",
                                  "filterNameOverride": "Glossary Term Applied",
                                  "hasValuesFieldName": "hasGlossaryTerms",
                                  "includeSystemModifiedAt": true,
                                  "systemModifiedAtFieldName": "termsModifiedAt"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.GlossaryTermUrn"
                                },
                                "Urn": "GlossaryTermUrn",
                                "entityTypes": [
                                  "glossaryTerm"
                                ],
                                "type": "string",
                                "name": "urn",
                                "doc": "Urn of the applied glossary term"
                              },
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "actor",
                                "default": null,
                                "doc": "The user URN which will be credited for adding associating this term to the entity"
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "context",
                                "default": null,
                                "doc": "Additional context about the association"
                              },
                              {
                                "Searchable": {
                                  "/actor": {
                                    "fieldName": "termAttributionActors",
                                    "fieldType": "URN",
                                    "queryByDefault": false
                                  },
                                  "/source": {
                                    "fieldName": "termAttributionSources",
                                    "fieldType": "URN",
                                    "queryByDefault": false
                                  },
                                  "/time": {
                                    "fieldName": "termAttributionDates",
                                    "fieldType": "DATETIME",
                                    "queryByDefault": false
                                  }
                                },
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.common.MetadataAttribution"
                                ],
                                "name": "attribution",
                                "default": null,
                                "doc": "Information about who, why, and how this metadata was applied"
                              }
                            ],
                            "doc": "Properties of an applied glossary term."
                          }
                        },
                        "name": "terms",
                        "doc": "The related business terms"
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "auditStamp",
                        "doc": "Audit stamp containing who reported the related business term"
                      }
                    ],
                    "doc": "Related business terms information"
                  }
                ],
                "name": "glossaryTerms",
                "default": null,
                "doc": "Glossary terms associated with the field"
              },
              {
                "type": "boolean",
                "name": "isPartOfKey",
                "default": false,
                "doc": "For schema fields that are part of complex keys, set this field to true\nWe do this to easily distinguish between value and key fields"
              },
              {
                "type": [
                  "null",
                  "boolean"
                ],
                "name": "isPartitioningKey",
                "default": null,
                "doc": "For Datasets which are partitioned, this determines the partitioning key.\nNote that multiple columns can be part of a partitioning key, but currently we do not support\nrendering the ordered partitioning key."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "jsonProps",
                "default": null,
                "doc": "For schema fields that have other properties that are not modeled explicitly,\nuse this field to serialize those properties into a JSON string"
              }
            ],
            "doc": "SchemaField to describe metadata related to dataset schema."
          }
        },
        "name": "fields",
        "doc": "Client provided a list of fields from document schema."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "primaryKeys",
        "default": null,
        "doc": "Client provided list of fields that define primary keys to access record. Field order defines hierarchical espresso keys. Empty lists indicates absence of primary key access patter. Value is a SchemaField@fieldPath."
      },
      {
        "deprecated": "Use foreignKeys instead.",
        "type": [
          "null",
          {
            "type": "map",
            "values": {
              "type": "record",
              "name": "ForeignKeySpec",
              "namespace": "com.linkedin.pegasus2avro.schema",
              "fields": [
                {
                  "type": [
                    {
                      "type": "record",
                      "name": "DatasetFieldForeignKey",
                      "namespace": "com.linkedin.pegasus2avro.schema",
                      "fields": [
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.DatasetUrn"
                          },
                          "Urn": "DatasetUrn",
                          "type": "string",
                          "name": "parentDataset",
                          "doc": "dataset that stores the resource."
                        },
                        {
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "currentFieldPaths",
                          "doc": "List of fields in hosting(current) SchemaMetadata that conform a foreign key. List can contain a single entry or multiple entries if several entries in hosting schema conform a foreign key in a single parent dataset."
                        },
                        {
                          "type": "string",
                          "name": "parentField",
                          "doc": "SchemaField@fieldPath that uniquely identify field in parent dataset that this field references."
                        }
                      ],
                      "doc": "For non-urn based foregin keys."
                    },
                    {
                      "type": "record",
                      "name": "UrnForeignKey",
                      "namespace": "com.linkedin.pegasus2avro.schema",
                      "fields": [
                        {
                          "type": "string",
                          "name": "currentFieldPath",
                          "doc": "Field in hosting(current) SchemaMetadata."
                        }
                      ],
                      "doc": "If SchemaMetadata fields make any external references and references are of type com.linkedin.pegasus2avro.common.Urn or any children, this models can be used to mark it."
                    }
                  ],
                  "name": "foreignKey",
                  "doc": "Foreign key definition in metadata schema."
                }
              ],
              "doc": "Description of a foreign key in a schema."
            }
          }
        ],
        "name": "foreignKeysSpecs",
        "default": null,
        "doc": "Map captures all the references schema makes to external datasets. Map key is ForeignKeySpecName typeref."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "ForeignKeyConstraint",
              "namespace": "com.linkedin.pegasus2avro.schema",
              "fields": [
                {
                  "type": "string",
                  "name": "name",
                  "doc": "Name of the constraint, likely provided from the source"
                },
                {
                  "Relationship": {
                    "/*": {
                      "entityTypes": [
                        "schemaField"
                      ],
                      "name": "ForeignKeyTo"
                    }
                  },
                  "Urn": "Urn",
                  "urn_is_array": true,
                  "type": {
                    "type": "array",
                    "items": "string"
                  },
                  "name": "foreignFields",
                  "doc": "Fields the constraint maps to on the foreign dataset"
                },
                {
                  "Urn": "Urn",
                  "urn_is_array": true,
                  "type": {
                    "type": "array",
                    "items": "string"
                  },
                  "name": "sourceFields",
                  "doc": "Fields the constraint maps to on the source dataset"
                },
                {
                  "Relationship": {
                    "entityTypes": [
                      "dataset"
                    ],
                    "name": "ForeignKeyToDataset"
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "dataset"
                  ],
                  "type": "string",
                  "name": "foreignDataset",
                  "doc": "Reference to the foreign dataset for ease of lookup"
                }
              ],
              "doc": "Description of a foreign key constraint in a schema."
            }
          }
        ],
        "name": "foreignKeys",
        "default": null,
        "doc": "List of foreign key constraints for the schema"
      }
    ],
    "doc": "SchemaMetadata to describe metadata related to store schema"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaProposals"
    },
    "name": "SchemaProposals",
    "namespace": "com.linkedin.pegasus2avro.schema",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaProposal",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "fieldPath",
                "doc": "FieldPath uniquely identifying the SchemaField this metadata is associated with"
              },
              {
                "Searchable": {
                  "/*": {
                    "fieldName": "proposedSchemaTags",
                    "fieldType": "URN",
                    "filterNameOverride": "Proposed Schema Tag"
                  }
                },
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "proposedSchemaTags",
                "default": null,
                "doc": "Proposed tags for a given entity"
              },
              {
                "Searchable": {
                  "/*": {
                    "fieldName": "proposedSchemaGlossaryTerms",
                    "fieldType": "URN",
                    "filterNameOverride": "Proposed Schema Glossary Term"
                  }
                },
                "Urn": "Urn",
                "urn_is_array": true,
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "proposedSchemaGlossaryTerms",
                "default": null,
                "doc": "Proposed glossary terms for a given entity"
              }
            ],
            "doc": "Schema proposal aspect for proposed schema tags and proposed schema glossary terms\nThese are secondary indices and ActionRequests remain the source of truth."
          }
        },
        "name": "schemaProposals",
        "doc": "Array of SchemaProposal"
      }
    ],
    "doc": "Schema proposals aspect for proposed tags and glossary terms on schema metadata."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableSchemaMetadata"
    },
    "name": "EditableSchemaMetadata",
    "namespace": "com.linkedin.pegasus2avro.schema",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "EditableSchemaFieldInfo",
            "namespace": "com.linkedin.pegasus2avro.schema",
            "fields": [
              {
                "type": "string",
                "name": "fieldPath",
                "doc": "FieldPath uniquely identifying the SchemaField this metadata is associated with"
              },
              {
                "Searchable": {
                  "boostScore": 0.1,
                  "fieldName": "editedFieldDescriptions",
                  "fieldType": "TEXT"
                },
                "type": [
                  "null",
                  "string"
                ],
                "name": "description",
                "default": null,
                "doc": "Description"
              },
              {
                "Relationship": {
                  "/tags/*/tag": {
                    "entityTypes": [
                      "tag"
                    ],
                    "name": "EditableSchemaFieldTaggedWith"
                  }
                },
                "Searchable": {
                  "/tags/*/attribution/actor": {
                    "fieldName": "editedFieldTagAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/tags/*/attribution/source": {
                    "fieldName": "editedFieldTagAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/tags/*/attribution/time": {
                    "fieldName": "editedFieldTagAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  },
                  "/tags/*/tag": {
                    "boostScore": 0.5,
                    "fieldName": "editedFieldTags",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.GlobalTags"
                ],
                "name": "globalTags",
                "default": null,
                "doc": "Tags associated with the field"
              },
              {
                "Relationship": {
                  "/terms/*/urn": {
                    "entityTypes": [
                      "glossaryTerm"
                    ],
                    "name": "EditableSchemaFieldWithGlossaryTerm"
                  }
                },
                "Searchable": {
                  "/terms/*/attribution/actor": {
                    "fieldName": "editedFieldTermAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/terms/*/attribution/source": {
                    "fieldName": "editedFieldTermAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/terms/*/attribution/time": {
                    "fieldName": "editedFieldTermAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  },
                  "/terms/*/urn": {
                    "boostScore": 0.5,
                    "fieldName": "editedFieldGlossaryTerms",
                    "fieldType": "URN",
                    "includeSystemModifiedAt": true,
                    "systemModifiedAtFieldName": "schemaFieldTermsModifiedAt"
                  }
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.GlossaryTerms"
                ],
                "name": "glossaryTerms",
                "default": null,
                "doc": "Glossary terms associated with the field"
              }
            ],
            "doc": "SchemaField to describe metadata related to dataset schema."
          }
        },
        "name": "editableSchemaFieldInfo",
        "doc": "Client provided a list of fields from document schema."
      }
    ],
    "doc": "EditableSchemaMetadata stores editable changes made to schema metadata. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "aiInferenceMetadata"
    },
    "name": "AiInferenceMetadata",
    "namespace": "com.linkedin.pegasus2avro.ai",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlossaryTermsInferenceMetadata",
            "namespace": "com.linkedin.pegasus2avro.ai",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "glossaryTermsLastInferredAt"
                },
                "type": "long",
                "name": "lastInferredAt",
                "doc": "Timestamp of the last inference in milliseconds."
              },
              {
                "Searchable": {
                  "fieldName": "glossaryTermsVersion"
                },
                "type": "long",
                "name": "version",
                "doc": "Monotonically incrementing version number. Once bumped, will re-trigger a new inference."
              }
            ]
          }
        ],
        "name": "glossaryTermsInference",
        "default": null,
        "doc": "Information about a glossary terms inference."
      }
    ],
    "doc": "AI Inference Metadata of various types."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "entityInferenceMetadata"
    },
    "name": "EntityInferenceMetadata",
    "namespace": "com.linkedin.pegasus2avro.ai",
    "fields": [
      {
        "Searchable": {
          "/lastInferredAt": {
            "fieldName": "glossaryTermsLastInferredAt",
            "queryByDefault": false
          },
          "/version": {
            "fieldName": "glossaryTermsVersion",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "record",
            "name": "InferenceGroupMetadata",
            "namespace": "com.linkedin.pegasus2avro.ai",
            "fields": [
              {
                "type": "long",
                "name": "lastInferredAt",
                "doc": "Timestamp of the last inference in milliseconds."
              },
              {
                "type": "int",
                "name": "version",
                "doc": "Monotonically incrementing version number. Once bumped, will re-trigger a new inference."
              }
            ],
            "doc": "Reusable metadata about a group of inferences of the same type."
          }
        ],
        "name": "glossaryTermsInference",
        "default": null,
        "doc": "Information about a group of inferences made for Glossary Terms."
      }
    ],
    "doc": "AI Inference Metadata for a specific entity."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPolicyInfo"
    },
    "name": "DataHubPolicyInfo",
    "namespace": "com.linkedin.pegasus2avro.policy",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "displayName",
        "doc": "Display name of the Policy"
      },
      {
        "Searchable": {
          "fieldType": "TEXT"
        },
        "type": "string",
        "name": "description",
        "doc": "Description of the Policy"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "type",
        "doc": "The type of policy"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "state",
        "doc": "The state of policy, ACTIVE or INACTIVE"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.policy.DataHubResourceFilter"
        ],
        "name": "resources",
        "default": null,
        "doc": "The resource that the policy applies to. Not required for some 'Platform' privileges."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "KEYWORD"
          }
        },
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "privileges",
        "doc": "The privileges that the policy grants."
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubActorFilter",
          "namespace": "com.linkedin.pegasus2avro.policy",
          "fields": [
            {
              "Searchable": {
                "/*": {
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "users",
              "default": null,
              "doc": "A specific set of users to apply the policy to (disjunctive)"
            },
            {
              "Searchable": {
                "/*": {
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "groups",
              "default": null,
              "doc": "A specific set of groups to apply the policy to (disjunctive)"
            },
            {
              "type": "boolean",
              "name": "resourceOwners",
              "default": false,
              "doc": "Whether the filter should return true for owners of a particular resource.\nOnly applies to policies of type 'Metadata', which have a resource associated with them."
            },
            {
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "resourceOwnersTypes",
              "default": null,
              "doc": "Define type of ownership for the policy"
            },
            {
              "Searchable": {
                "fieldType": "BOOLEAN"
              },
              "type": "boolean",
              "name": "allUsers",
              "default": false,
              "doc": "Whether the filter should apply to all users."
            },
            {
              "Searchable": {
                "fieldType": "BOOLEAN"
              },
              "type": "boolean",
              "name": "allGroups",
              "default": false,
              "doc": "Whether the filter should apply to all groups."
            },
            {
              "Relationship": {
                "/*": {
                  "entityTypes": [
                    "dataHubRole"
                  ],
                  "name": "IsAssociatedWithRole"
                }
              },
              "Searchable": {
                "/*": {
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "roles",
              "default": null,
              "doc": "A specific set of roles to apply the policy to (disjunctive)."
            }
          ],
          "doc": "Information used to filter DataHub actors."
        },
        "name": "actors",
        "doc": "The actors that the policy applies to."
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "editable",
        "default": true,
        "doc": "Whether the policy should be editable via the UI"
      },
      {
        "Searchable": {
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastUpdatedTimestamp",
        "default": null,
        "doc": "Timestamp when the policy was last updated"
      }
    ],
    "doc": "Information about a DataHub (UI) access policy."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRoleInfo"
    },
    "name": "DataHubRoleInfo",
    "namespace": "com.linkedin.pegasus2avro.policy",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the Role"
      },
      {
        "Searchable": {
          "fieldType": "TEXT"
        },
        "type": "string",
        "name": "description",
        "doc": "Description of the Role"
      },
      {
        "type": "boolean",
        "name": "editable",
        "default": false,
        "doc": "Whether the role should be editable via the UI"
      }
    ],
    "doc": "Information about a DataHub Role."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubViewInfo"
    },
    "name": "DataHubViewInfo",
    "namespace": "com.linkedin.pegasus2avro.view",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The name of the View"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the view"
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "GLOBAL": "A global view, which all users can see and use.",
            "PERSONAL": "A view private for a specific person."
          },
          "name": "DataHubViewType",
          "namespace": "com.linkedin.pegasus2avro.view",
          "symbols": [
            "PERSONAL",
            "GLOBAL"
          ]
        },
        "name": "type",
        "doc": "The type of View"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubViewDefinition",
          "namespace": "com.linkedin.pegasus2avro.view",
          "fields": [
            {
              "type": {
                "type": "array",
                "items": "string"
              },
              "name": "entityTypes",
              "doc": "The Entity Types in the scope of the View."
            },
            {
              "type": {
                "type": "record",
                "name": "Filter",
                "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                "fields": [
                  {
                    "type": [
                      "null",
                      {
                        "type": "array",
                        "items": {
                          "type": "record",
                          "name": "ConjunctiveCriterion",
                          "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                          "fields": [
                            {
                              "type": {
                                "type": "array",
                                "items": {
                                  "type": "record",
                                  "name": "Criterion",
                                  "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                                  "fields": [
                                    {
                                      "type": "string",
                                      "name": "field",
                                      "doc": "The name of the field that the criterion refers to"
                                    },
                                    {
                                      "type": "string",
                                      "name": "value",
                                      "doc": "The value of the intended field"
                                    },
                                    {
                                      "type": {
                                        "type": "array",
                                        "items": "string"
                                      },
                                      "name": "values",
                                      "default": [],
                                      "doc": "Values. one of which the intended field should match\nNote, if values is set, the above \"value\" field will be ignored"
                                    },
                                    {
                                      "type": {
                                        "type": "enum",
                                        "symbolDocs": {
                                          "ANCESTORS_INCL": "Represent the relation: URN field matches any nested parent in addition to the given URN",
                                          "BETWEEN": "Represent the relation within an inclusive range, e.g. 3 <= ownerCount <= 5. Note that the values in Criterion must have two entries for a lower and upper bound.",
                                          "CONTAIN": "Represent the relation: String field contains value, e.g. name contains Profile",
                                          "DESCENDANTS_INCL": "Represent the relation: URN field any nested children in addition to the given URN",
                                          "END_WITH": "Represent the relation: String field ends with value, e.g. name ends with Event",
                                          "EQUAL": "Represent the relation: field = value, e.g. platform = hdfs",
                                          "EXISTS": "Represents the relation: field exists and is non-empty, e.g. owners is not null and != [] (empty)",
                                          "GREATER_THAN": "Represent the relation greater than, e.g. ownerCount > 5",
                                          "GREATER_THAN_OR_EQUAL_TO": "Represent the relation greater than or equal to, e.g. ownerCount >= 5",
                                          "IEQUAL": "Represent the relation: field = value and support case insensitive values, e.g. platform = hdfs",
                                          "IN": "Represent the relation: String field is one of the array values to, e.g. name in [\"Profile\", \"Event\"]",
                                          "IS_NULL": "Represent the relation: field is null, e.g. platform is null",
                                          "LESS_THAN": "Represent the relation less than, e.g. ownerCount < 3",
                                          "LESS_THAN_OR_EQUAL_TO": "Represent the relation less than or equal to, e.g. ownerCount <= 3",
                                          "RELATED_INCL": "Represent the relation: URN field matches any nested child or parent in addition to the given URN",
                                          "START_WITH": "Represent the relation: String field starts with value, e.g. name starts with PageView"
                                        },
                                        "name": "Condition",
                                        "namespace": "com.linkedin.pegasus2avro.metadata.query.filter",
                                        "symbols": [
                                          "CONTAIN",
                                          "END_WITH",
                                          "EQUAL",
                                          "IEQUAL",
                                          "IS_NULL",
                                          "EXISTS",
                                          "GREATER_THAN",
                                          "GREATER_THAN_OR_EQUAL_TO",
                                          "IN",
                                          "LESS_THAN",
                                          "LESS_THAN_OR_EQUAL_TO",
                                          "BETWEEN",
                                          "START_WITH",
                                          "DESCENDANTS_INCL",
                                          "ANCESTORS_INCL",
                                          "RELATED_INCL"
                                        ],
                                        "doc": "The matching condition in a filter criterion"
                                      },
                                      "name": "condition",
                                      "default": "EQUAL",
                                      "doc": "The condition for the criterion, e.g. EQUAL, START_WITH"
                                    },
                                    {
                                      "type": "boolean",
                                      "name": "negated",
                                      "default": false,
                                      "doc": "Whether the condition should be negated"
                                    }
                                  ],
                                  "doc": "A criterion for matching a field with given value"
                                }
                              },
                              "name": "and",
                              "doc": "A list of and criteria the filter applies to the query"
                            }
                          ],
                          "doc": "A list of criterion and'd together."
                        }
                      }
                    ],
                    "name": "or",
                    "default": null,
                    "doc": "A list of disjunctive criterion for the filter. (or operation to combine filters)"
                  },
                  {
                    "type": [
                      "null",
                      {
                        "type": "array",
                        "items": "com.linkedin.pegasus2avro.metadata.query.filter.Criterion"
                      }
                    ],
                    "name": "criteria",
                    "default": null,
                    "doc": "Deprecated! A list of conjunctive criterion for the filter. If \"or\" field is provided, then this field is ignored."
                  }
                ],
                "doc": "The filter for finding a record or a collection of records"
              },
              "name": "filter",
              "doc": "The filter criteria, which represents the view itself"
            }
          ],
          "doc": "A View definition."
        },
        "name": "definition",
        "doc": "The view itself"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp capturing the time and actor who created the View."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp capturing the time and actor who last modified the View."
      }
    ],
    "doc": "Information about a DataHub View. -- TODO: Understand whether an entity type filter is required."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataPlatformInstanceProperties"
    },
    "name": "DataPlatformInstanceProperties",
    "namespace": "com.linkedin.pegasus2avro.dataplatforminstance",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Data Platform Instance"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the Data Platform Instance"
      }
    ],
    "doc": "Properties associated with a Data Platform Instance"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "icebergWarehouseInfo"
    },
    "name": "IcebergWarehouseInfo",
    "namespace": "com.linkedin.pegasus2avro.dataplatforminstance",
    "fields": [
      {
        "type": "string",
        "name": "dataRoot",
        "doc": "Path of the root for the backing store of the tables in the warehouse."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "clientId",
        "doc": "clientId to be used to authenticate with storage hosting this warehouse"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "clientSecret",
        "doc": "client secret to authenticate with storage hosting this warehouse"
      },
      {
        "type": "string",
        "name": "region",
        "doc": "region where the warehouse is located."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "role",
        "default": null
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "tempCredentialExpirationSeconds",
        "default": null
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "CORP": "Designates corporation fabrics",
            "DEV": "Designates development fabrics",
            "EI": "Designates early-integration fabrics",
            "NON_PROD": "Designates non-production fabrics",
            "PRD": "Alternative Prod spelling",
            "PRE": "Designates pre-production fabrics",
            "PROD": "Designates production fabrics",
            "QA": "Designates quality assurance fabrics",
            "RVW": "Designates review fabrics",
            "SANDBOX": "Designates sandbox fabrics",
            "SBX": "Alternative spelling for sandbox",
            "SIT": "System Integration Testing",
            "STG": "Designates staging fabrics",
            "TEST": "Designates testing fabrics",
            "TST": "Alternative Test spelling",
            "UAT": "Designates user acceptance testing fabrics"
          },
          "name": "FabricType",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "DEV",
            "TEST",
            "QA",
            "UAT",
            "EI",
            "PRE",
            "STG",
            "NON_PROD",
            "PROD",
            "CORP",
            "RVW",
            "PRD",
            "TST",
            "SIT",
            "SBX",
            "SANDBOX"
          ],
          "doc": "Fabric group type"
        },
        "name": "env"
      }
    ],
    "doc": "An Iceberg warehouse location and credentails whose read/writes are governed by datahub catalog."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "subscriptionInfo"
    },
    "name": "SubscriptionInfo",
    "namespace": "com.linkedin.pegasus2avro.subscription",
    "fields": [
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "Actor Urn who will be notified "
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "actorType",
        "doc": "Actor type"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "subscriptionTypes",
            "fieldType": "KEYWORD"
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "enum",
            "symbolDocs": {
              "ENTITY_CHANGE": "Triggered via direct changes on an entity.",
              "UPSTREAM_ENTITY_CHANGE": "Triggered via upstream changes on an entity."
            },
            "name": "SubscriptionType",
            "namespace": "com.linkedin.pegasus2avro.subscription",
            "symbols": [
              "ENTITY_CHANGE",
              "UPSTREAM_ENTITY_CHANGE"
            ],
            "doc": "Enum to define the different types of subscriptions."
          }
        },
        "name": "types",
        "doc": "The subscription types."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "createdOn",
        "doc": "AuditStamp for when the subscription was created"
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "updatedOn",
        "doc": "AuditStamp for when the subscription was updated"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "entityUrn",
        "default": null,
        "doc": "Optional entity Urn - top level for now (Dataset, container etc. )"
      },
      {
        "Relationship": {
          "/*/filter/includeAssertions/*": {
            "entityTypes": [
              "assertion"
            ],
            "name": "SubscribedAssertions"
          }
        },
        "Searchable": {
          "/*/entityChangeType": {
            "fieldName": "entityChangeTypes",
            "fieldType": "KEYWORD"
          },
          "/*/filter/includeAssertions/*": {
            "fieldName": "subscribedAssertions",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "EntityChangeDetails",
              "namespace": "com.linkedin.pegasus2avro.subscription",
              "fields": [
                {
                  "type": {
                    "type": "enum",
                    "symbolDocs": {
                      "ASSERTION_PASSED": "Assertion run event created with specified states.",
                      "DEPRECATED": "Deprecation status changes.",
                      "DOCUMENTATION_CHANGE": "Documentation change.",
                      "GLOSSARY_TERM_ADDED": "Glossary term changes. Added, removed or proposed.",
                      "INCIDENT_RAISED": "Incident status changes.",
                      "INGESTION_SUCCEEDED": "Ingestion status changes.",
                      "OPERATION_COLUMN_ADDED": "Schema changes.",
                      "OPERATION_ROWS_INSERTED": "Operational metadata changes.",
                      "OWNER_ADDED": "Ownership changes. Added or removed.",
                      "TAG_ADDED": "Tag changes. Added, removed or proposed.",
                      "TEST_PASSED": "Test status changes."
                    },
                    "name": "EntityChangeType",
                    "namespace": "com.linkedin.pegasus2avro.subscription",
                    "symbols": [
                      "OPERATION_COLUMN_ADDED",
                      "OPERATION_COLUMN_REMOVED",
                      "OPERATION_COLUMN_MODIFIED",
                      "OPERATION_ROWS_INSERTED",
                      "OPERATION_ROWS_UPDATED",
                      "OPERATION_ROWS_REMOVED",
                      "ASSERTION_PASSED",
                      "ASSERTION_FAILED",
                      "ASSERTION_ERROR",
                      "INCIDENT_RAISED",
                      "INCIDENT_RESOLVED",
                      "TEST_PASSED",
                      "TEST_FAILED",
                      "DEPRECATED",
                      "UNDEPRECATED",
                      "INGESTION_SUCCEEDED",
                      "INGESTION_FAILED",
                      "DOCUMENTATION_CHANGE",
                      "OWNER_ADDED",
                      "OWNER_REMOVED",
                      "GLOSSARY_TERM_ADDED",
                      "GLOSSARY_TERM_REMOVED",
                      "GLOSSARY_TERM_PROPOSED",
                      "TAG_ADDED",
                      "TAG_REMOVED",
                      "TAG_PROPOSED"
                    ],
                    "doc": "Enum to define change types that can trigger a notification for a subscription."
                  },
                  "name": "entityChangeType",
                  "doc": "Change type that triggers a notification for the subscription."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "record",
                      "name": "EntityChangeDetailsFilter",
                      "namespace": "com.linkedin.pegasus2avro.subscription",
                      "fields": [
                        {
                          "Urn": "Urn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "includeAssertions",
                          "default": null,
                          "doc": "A list of assertions to inclusively filter when generating notifications.\nUsed for EntityChangeType values of ASSERTION_PASSED, ASSERTION_FAILED, ASSERTION_ERROR.\nEffectively allows for 'assertion level subscriptions'"
                        }
                      ],
                      "doc": "Details for filtering notifications relating to an EntityChangeType. Used by Subscriptions to determine how to\nfilter out change types when triggering a notification."
                    }
                  ],
                  "name": "filter",
                  "default": null,
                  "doc": "Optional filter that can be applied to exclude or include specific entity change events"
                }
              ],
              "doc": "Details involving an EntityChangeType. Used by Subscriptions to determine which\nchange types should trigger a notification."
            }
          }
        ],
        "name": "entityChangeTypes",
        "default": null,
        "doc": "Change types that trigger a notification for the subscription."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SubscriptionNotificationConfig",
            "namespace": "com.linkedin.pegasus2avro.subscription",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "NotificationSettings",
                    "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
                    "fields": [
                      {
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "enum",
                            "symbolDocs": {
                              "EMAIL": "Email target type.",
                              "SLACK": "Slack target type."
                            },
                            "name": "NotificationSinkType",
                            "namespace": "com.linkedin.pegasus2avro.event.notification",
                            "symbols": [
                              "SLACK",
                              "EMAIL"
                            ],
                            "doc": "A type of sink / platform to send a notification to."
                          }
                        },
                        "name": "sinkTypes",
                        "doc": "Sink types that notifications are sent to. This is a top-level on/off switch."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SlackNotificationSettings",
                            "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "userHandle",
                                "default": null,
                                "doc": "Optional user handle"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "string"
                                  }
                                ],
                                "name": "channels",
                                "default": null,
                                "doc": "Optional list of channels to send notifications to"
                              }
                            ],
                            "doc": "Slack Notification settings for an actor."
                          }
                        ],
                        "name": "slackSettings",
                        "default": null,
                        "doc": "Slack Notification Settings"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "EmailNotificationSettings",
                            "namespace": "com.linkedin.pegasus2avro.event.notification.settings",
                            "fields": [
                              {
                                "type": "string",
                                "name": "email",
                                "doc": "Optional user or group email address"
                              }
                            ],
                            "doc": "Email Notification settings for an actor."
                          }
                        ],
                        "name": "emailSettings",
                        "default": null,
                        "doc": "Email Notification Settings"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "map",
                            "values": {
                              "type": "record",
                              "name": "NotificationSetting",
                              "namespace": "com.linkedin.pegasus2avro.settings",
                              "fields": [
                                {
                                  "type": {
                                    "type": "enum",
                                    "symbolDocs": {
                                      "DISABLED": "Setting is disabled.",
                                      "ENABLED": "Setting is enabled."
                                    },
                                    "name": "NotificationSettingValue",
                                    "namespace": "com.linkedin.pegasus2avro.settings",
                                    "symbols": [
                                      "ENABLED",
                                      "DISABLED"
                                    ]
                                  },
                                  "name": "value",
                                  "doc": "Integrations between DataHub & other platforms."
                                },
                                {
                                  "type": [
                                    "null",
                                    {
                                      "type": "map",
                                      "values": "string"
                                    }
                                  ],
                                  "name": "params",
                                  "default": null,
                                  "doc": "Custom set of setting parameters.\nCurrently used to store sink enabled / disabled settings.\nE.g. slack.enabled = true, email.enabled = false"
                                }
                              ]
                            }
                          }
                        ],
                        "name": "settings",
                        "default": null,
                        "doc": "User or Group Notification Scenario Settings.\n\nA map of notification scenario type to the settings associated with it.\nFor a list of all scenario types to notify on, check out NotificationScenarioType enum."
                      }
                    ],
                    "doc": "Notification settings for an actor or subscription."
                  }
                ],
                "name": "notificationSettings",
                "default": null,
                "doc": "Notification settings for the subscription."
              }
            ]
          }
        ],
        "name": "notificationConfig",
        "default": null,
        "doc": "Optional notification config."
      }
    ],
    "doc": "Subscription info."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableERModelRelationshipProperties"
    },
    "name": "EditableERModelRelationshipProperties",
    "namespace": "com.linkedin.pegasus2avro.ermodelrelation",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the erModelRelationship"
      },
      {
        "Searchable": {
          "fieldName": "editedName",
          "fieldType": "TEXT_PARTIAL"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the ERModelRelation"
      }
    ],
    "doc": "EditableERModelRelationProperties stores editable changes made to erModelRelationship properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "erModelRelationshipProperties"
    },
    "name": "ERModelRelationshipProperties",
    "namespace": "com.linkedin.pegasus2avro.ermodelrelation",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the ERModelRelation"
      },
      {
        "Relationship": {
          "entityTypes": [
            "dataset"
          ],
          "name": "ermodelrelationA"
        },
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "TEXT_PARTIAL"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset"
        ],
        "type": "string",
        "name": "source",
        "doc": "First dataset in the erModelRelationship (no directionality)"
      },
      {
        "Relationship": {
          "entityTypes": [
            "dataset"
          ],
          "name": "ermodelrelationB"
        },
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "TEXT_PARTIAL"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset"
        ],
        "type": "string",
        "name": "destination",
        "doc": "Second dataset in the erModelRelationship (no directionality)"
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "RelationshipFieldMapping",
            "namespace": "com.linkedin.pegasus2avro.ermodelrelation",
            "fields": [
              {
                "type": "string",
                "name": "sourceField",
                "doc": "All fields from dataset A that are required for the join, maps to bFields 1:1"
              },
              {
                "type": "string",
                "name": "destinationField",
                "doc": "All fields from dataset B that are required for the join, maps to aFields 1:1"
              }
            ],
            "doc": "Individual Field Mapping of a relationship- one of several"
          }
        },
        "name": "relationshipFieldMappings",
        "doc": "ERModelRelationFieldMapping (in future we can make it an array)"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "A timestamp documenting when the asset was created in the source Data Platform (not on DataHub)"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "A timestamp documenting when the asset was last modified in the source Data Platform (not on DataHub)"
      },
      {
        "type": {
          "type": "enum",
          "name": "ERModelRelationshipCardinality",
          "namespace": "com.linkedin.pegasus2avro.ermodelrelation",
          "symbols": [
            "ONE_ONE",
            "ONE_N",
            "N_ONE",
            "N_N"
          ]
        },
        "name": "cardinality",
        "default": "N_N",
        "doc": "Cardinality of the relationship"
      }
    ],
    "doc": "Properties associated with a ERModelRelationship"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "structuredProperties"
    },
    "name": "StructuredProperties",
    "namespace": "com.linkedin.pegasus2avro.structured",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "StructuredPropertyValueAssignment",
            "namespace": "com.linkedin.pegasus2avro.structured",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "propertyUrn",
                "doc": "The property that is being assigned a value."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "string",
                    "double"
                  ]
                },
                "name": "values",
                "doc": "The value assigned to the property."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "created",
                "default": null,
                "doc": "Audit stamp containing who created this relationship edge and when"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastModified",
                "default": null,
                "doc": "Audit stamp containing who last modified this relationship edge and when"
              }
            ]
          }
        },
        "name": "properties",
        "doc": "Custom property bag."
      }
    ],
    "doc": "Properties about an entity governed by StructuredPropertyDefinition"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "propertyDefinition"
    },
    "name": "StructuredPropertyDefinition",
    "namespace": "com.linkedin.pegasus2avro.structured",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "qualifiedName",
        "doc": "The fully qualified name of the property. e.g. io.acryl.datahub.myProperty"
      },
      {
        "Searchable": {},
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "The display name of the property. This is the name that will be shown in the UI and can be used to look up the property id."
      },
      {
        "UrnValidation": {
          "entityTypes": [
            "dataType"
          ],
          "exist": true,
          "strict": true
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "valueType",
        "doc": "The value type of the property. Must be a dataType.\ne.g. To indicate that the property is of type DATE, use urn:li:dataType:datahub.date"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": {
              "type": "array",
              "items": "string"
            }
          }
        ],
        "name": "typeQualifier",
        "default": null,
        "doc": "A map that allows for type specialization of the valueType.\ne.g. a valueType of urn:li:dataType:datahub.urn\ncan be specialized to be a USER or GROUP URN by adding a typeQualifier like \n{ \"allowedTypes\": [\"urn:li:entityType:datahub.corpuser\", \"urn:li:entityType:datahub.corpGroup\"] }"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "PropertyValue",
              "namespace": "com.linkedin.pegasus2avro.structured",
              "fields": [
                {
                  "type": [
                    "string",
                    "double"
                  ],
                  "name": "value"
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "description",
                  "default": null,
                  "doc": "Optional description of the property value"
                }
              ]
            }
          }
        ],
        "name": "allowedValues",
        "default": null,
        "doc": "A list of allowed values that the property is allowed to take. \nIf this is not specified, then the property can take any value of given type."
      },
      {
        "type": [
          {
            "type": "enum",
            "name": "PropertyCardinality",
            "namespace": "com.linkedin.pegasus2avro.structured",
            "symbols": [
              "SINGLE",
              "MULTIPLE"
            ]
          },
          "null"
        ],
        "name": "cardinality",
        "default": "SINGLE",
        "doc": "The cardinality of the property. If not specified, then the property is assumed to be single valued.."
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "entityType"
            ],
            "name": "StructuredPropertyOf"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "entityTypes"
          }
        },
        "UrnValidation": {
          "entityTypes": [
            "entityType"
          ],
          "exist": true,
          "strict": true
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "entityTypes"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "The description of the property. This is the description that will be shown in the UI."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubSearchConfig",
            "namespace": "com.linkedin.pegasus2avro.datahub",
            "fields": [
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "fieldName",
                "default": null,
                "doc": "Name of the field in the search index. Defaults to the field name otherwise"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "name": "SearchFieldType",
                    "namespace": "com.linkedin.pegasus2avro.datahub",
                    "symbols": [
                      "KEYWORD",
                      "TEXT",
                      "TEXT_PARTIAL",
                      "BROWSE_PATH",
                      "URN",
                      "URN_PARTIAL",
                      "BOOLEAN",
                      "COUNT",
                      "DATETIME",
                      "OBJECT",
                      "BROWSE_PATH_V2",
                      "WORD_GRAM"
                    ]
                  }
                ],
                "name": "fieldType",
                "default": null,
                "doc": "Type of the field. Defines how the field is indexed and matched"
              },
              {
                "type": "boolean",
                "name": "queryByDefault",
                "default": false,
                "doc": "Whether we should match the field for the default search query"
              },
              {
                "type": "boolean",
                "name": "enableAutocomplete",
                "default": false,
                "doc": "Whether we should use the field for default autocomplete"
              },
              {
                "type": "boolean",
                "name": "addToFilters",
                "default": false,
                "doc": "Whether or not to add field to filters."
              },
              {
                "type": "boolean",
                "name": "addHasValuesToFilters",
                "default": true,
                "doc": "Whether or not to add the \"has values\" to filters.\ncheck if this is conditional on addToFilters being true"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "filterNameOverride",
                "default": null,
                "doc": "Display name of the filter"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "hasValuesFilterNameOverride",
                "default": null,
                "doc": "Display name of the has values filter"
              },
              {
                "type": "double",
                "name": "boostScore",
                "default": 1.0,
                "doc": "Boost multiplier to the match score. Matches on fields with higher boost score ranks higher"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "hasValuesFieldName",
                "default": null,
                "doc": "If set, add a index field of the given name that checks whether the field exists"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "numValuesFieldName",
                "default": null,
                "doc": "If set, add a index field of the given name that checks the number of elements"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "double"
                  }
                ],
                "name": "weightsPerFieldValue",
                "default": null,
                "doc": "(Optional) Weights to apply to score for a given value"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "fieldNameAliases",
                "default": null,
                "doc": "(Optional) Aliases for this given field that can be used for sorting etc."
              }
            ],
            "doc": "Configuration for how any given field should be indexed and matched in the DataHub search index."
          }
        ],
        "name": "searchConfiguration",
        "default": null,
        "doc": "Search configuration for this property. If not specified, then the property is indexed using the default mapping.\nfrom the logical type."
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "immutable",
        "default": false,
        "doc": "Whether the structured property value is immutable once applied to an entity."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "version",
        "default": null,
        "doc": "Definition version - Allows breaking schema changes. String is compared case-insensitive and new\n                     versions must be monotonically increasing. Cannot use periods/dots.\n                     Suggestions: v1, v2\n                                  20240610, 20240611"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModified",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Last Modified Audit stamp"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "deprecated": true,
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "DISABLED": "This structured property will not show up in search filters",
              "ENABLED": "This structured property will show up in search filters"
            },
            "name": "StructuredPropertyFilterStatus",
            "namespace": "com.linkedin.pegasus2avro.structured",
            "symbols": [
              "ENABLED",
              "DISABLED"
            ]
          },
          "null"
        ],
        "name": "filterStatus",
        "default": "DISABLED",
        "doc": "The filter status of this structured property - whether it will show up in search filters or not\nDeprecated! Use structuredPropertySettings.showInSearchFilters instead"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "structuredPropertySettings"
    },
    "name": "StructuredPropertySettings",
    "namespace": "com.linkedin.pegasus2avro.structured",
    "fields": [
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "isHidden",
        "default": false,
        "doc": "Whether or not this asset should be hidden in the main application"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "showInSearchFilters",
        "default": false,
        "doc": "Whether or not this asset should be displayed as a search filter"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "showInAssetSummary",
        "default": false,
        "doc": "Whether or not this asset should be displayed in the asset sidebar"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "showAsAssetBadge",
        "default": false,
        "doc": "Whether or not this asset should be displayed as an asset badge on other\nasset's headers"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "showInColumnsTable",
        "default": false,
        "doc": "Whether or not this asset should be displayed as a column in the schema field table\nin a Dataset's \"Columns\" tab."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedSettings",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Last Modified Audit stamp"
      }
    ],
    "doc": "Settings specific to a structured property entity"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "structuredPropertyKey",
      "keyForEntity": "structuredProperty",
      "entityCategory": "core",
      "entityAspects": [
        "propertyDefinition",
        "structuredPropertySettings",
        "institutionalMemory",
        "status",
        "share",
        "origin"
      ],
      "entityDoc": "Structured Property represents a property meant for extending the core model of a logical entity"
    },
    "name": "StructuredPropertyKey",
    "namespace": "com.linkedin.pegasus2avro.structured",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "The id for a structured proeprty."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionInferenceDetails"
    },
    "name": "AssertionInferenceDetails",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "modelId",
        "default": null,
        "doc": "The id of the assertion prediction model."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "modelVersion",
        "default": null,
        "doc": "The version of the model used to make the assertion."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "confidence",
        "default": null,
        "doc": "The confidence of the inference, if available."
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "parameters",
        "default": null,
        "doc": "The parameters used to make the inference."
      },
      {
        "Searchable": {},
        "type": [
          "null",
          "long"
        ],
        "name": "generatedAt",
        "default": null,
        "doc": "The time the inferred assertion was generated at in milliseconds."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionAdjustmentSettings",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "name": "AdjustmentAlgorithm",
                    "namespace": "com.linkedin.pegasus2avro.assertion",
                    "symbols": [
                      "CUSTOM"
                    ],
                    "doc": "The adjustment algorithm to use when determining the threshold for an assertion."
                  }
                ],
                "name": "algorithm",
                "default": null,
                "doc": "The algorithm to use to adjust assertion values to power the sensitivity control feature\n\nNote that for algorithm \"STDDEV\" which leverages the standard deviation of trailing values,\nthe \"stdDev\" field must be provided inside of AssertionEvaluationContext.pdl by the offline pipeline."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "algorithmName",
                "default": null,
                "doc": "The name of the algorithm to use to adjust assertion values to power the sensitivity control feature"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "string"
                  }
                ],
                "name": "context",
                "default": null,
                "doc": "The context to use to adjust assertion values"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "AssertionExclusionWindow",
                      "namespace": "com.linkedin.pegasus2avro.assertion",
                      "fields": [
                        {
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "FIXED_RANGE": "One-off time range to exclude",
                              "HOLIDAY": "Specific holiday to exclude",
                              "WEEKLY": "Recurring time range to exclude each week"
                            },
                            "name": "AssertionExclusionWindowType",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "symbols": [
                              "FIXED_RANGE",
                              "WEEKLY",
                              "HOLIDAY"
                            ]
                          },
                          "name": "type",
                          "doc": "The type of exclusion window."
                        },
                        {
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "displayName",
                          "default": null,
                          "doc": "Display name for this exclusion window"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "record",
                              "name": "AbsoluteTimeWindow",
                              "namespace": "com.linkedin.pegasus2avro.timeseries",
                              "fields": [
                                {
                                  "type": "long",
                                  "name": "startTimeMillis",
                                  "doc": "Start time as epoch at UTC."
                                },
                                {
                                  "type": "long",
                                  "name": "endTimeMillis",
                                  "doc": "End time as epoch at UTC."
                                }
                              ]
                            }
                          ],
                          "name": "fixedRange",
                          "default": null,
                          "doc": "Date window for one-off exclusion range\nOnly used when type is FIXED_RANGE"
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "record",
                              "name": "WeeklyWindow",
                              "namespace": "com.linkedin.pegasus2avro.timeseries",
                              "fields": [
                                {
                                  "type": {
                                    "type": "array",
                                    "items": {
                                      "type": "enum",
                                      "name": "DayOfWeek",
                                      "namespace": "com.linkedin.pegasus2avro.timeseries",
                                      "symbols": [
                                        "MONDAY",
                                        "TUESDAY",
                                        "WEDNESDAY",
                                        "THURSDAY",
                                        "FRIDAY",
                                        "SATURDAY",
                                        "SUNDAY"
                                      ]
                                    }
                                  },
                                  "name": "daysOfWeek",
                                  "doc": "Days of the week to include in the window.\nIf not specified, all days are included."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "startTime",
                                  "default": null,
                                  "doc": "Start time for the window on each specified day.\nFormat: \"HH:MM\" in 24-hour format (e.g., \"09:00\" for 9am, \"17:30\" for 5:30pm).\nIf not specified, defaults to start of day (\"00:00\")."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "endTime",
                                  "default": null,
                                  "doc": "End time for the window on each specified day.\nFormat: \"HH:MM\" in 24-hour format (e.g., \"17:00\" for 5pm, \"23:59\" for end of day).\nIf not specified, defaults to end of day (\"23:59\")."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "timezone",
                                  "default": null,
                                  "doc": "Time zone to interpret start and end times in.\nUses standard time zone identifiers (e.g., \"America/Los_Angeles\", \"UTC\").\nIf not specified, defaults to UTC."
                                }
                              ],
                              "doc": "Represents a recurring time window that repeats weekly.\nUsed to define exclusion periods for model training based on day of week and time of day."
                            }
                          ],
                          "name": "weekly",
                          "default": null,
                          "doc": "Window of time each week to exclude."
                        },
                        {
                          "type": [
                            "null",
                            {
                              "type": "record",
                              "name": "HolidayWindow",
                              "namespace": "com.linkedin.pegasus2avro.timeseries",
                              "fields": [
                                {
                                  "type": "string",
                                  "name": "name",
                                  "doc": "The name of the holiday."
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "region",
                                  "default": null,
                                  "doc": "The region of the holiday.\nExample: 'US'"
                                },
                                {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "timezone",
                                  "default": null,
                                  "doc": "The timezone of the holiday.\nExample: 'America/New_York'"
                                }
                              ]
                            }
                          ],
                          "name": "holiday",
                          "default": null,
                          "doc": "The holiday to exclude\nOnly used when type is HOLIDAY"
                        }
                      ],
                      "doc": "Information about an assertion exclusion window.\nThis is used to exclude specific time periods from assertion evaluation or training.\nFor example, excluding holidays, weekends, or known anomalous periods.\nSupports various recurrence patterns: one-off exclusions, or recurring exclusions\n(yearly, monthly, weekly, daily, or specific holidays)."
                    }
                  }
                ],
                "name": "exclusionWindows",
                "default": null,
                "doc": "The user-defined exclusion windows for the assertion."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                  }
                ],
                "name": "anomalyExclusionWindows",
                "default": null,
                "doc": "Exclude the anomaly data points for the assertion. These are detected automatically by the system."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "trainingDataLookbackWindowDays",
                "default": null,
                "doc": "The lookback window configuration for retrieving training data points.\nDefines how far back in time to look when gathering data for training.\nDefaults to 60 days if not specified."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionMonitorSensitivity",
                    "namespace": "com.linkedin.pegasus2avro.assertion",
                    "fields": [
                      {
                        "type": "int",
                        "name": "level",
                        "doc": "The assertion monitor level from 0-10"
                      }
                    ],
                    "doc": "Assertion monitor sensitivity is a measure of how sensitive the assertion monitor is to the assertion condition."
                  }
                ],
                "name": "sensitivity",
                "default": null,
                "doc": "The sensitivity level for an assertion"
              }
            ],
            "doc": "A set of settings that can be used to adjust assertion values\nNOTE: This is only applied against inferred assertions"
          }
        ],
        "name": "adjustmentSettings",
        "default": null,
        "doc": "The settings used to adjust the assertion."
      }
    ],
    "doc": "The details of an assertion that was inferred.\n\nDeprecated as an aspect for assertions!"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionRunEvent",
      "type": "timeseries"
    },
    "name": "AssertionRunEvent",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastCompletedTime",
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "type": "string",
        "name": "runId",
        "doc": " Native (platform-specific) identifier for this run"
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "asserteeUrn"
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETE": "The Assertion Run has completed"
          },
          "name": "AssertionRunStatus",
          "namespace": "com.linkedin.pegasus2avro.assertion",
          "symbols": [
            "COMPLETE"
          ],
          "doc": "The lifecycle status of an assertion run."
        },
        "name": "status",
        "doc": "The status of the assertion run as per this timeseries event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionResult",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "Relationship": {
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/fieldAssertion/entity": null,
                  "/freshnessAssertion/entity": null,
                  "/schemaAssertion/entity": null,
                  "/sqlAssertion/entity": null,
                  "/volumeAssertion/entity": null
                },
                "Searchable": {
                  "/customProperties/*": null,
                  "/datasetAssertion/aggregation": null,
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/datasetAssertion/scope": null,
                  "/externalUrl": null,
                  "/fieldAssertion/entity": null,
                  "/fieldAssertion/fieldMetricAssertion/field/path": null,
                  "/fieldAssertion/fieldValuesAssertion/field/path": null,
                  "/fieldAssertion/type": null,
                  "/freshnessAssertion/entity": null,
                  "/freshnessAssertion/schedule/type": null,
                  "/freshnessAssertion/type": null,
                  "/schemaAssertion/entity": null,
                  "/source/type": null,
                  "/sqlAssertion/entity": null,
                  "/sqlAssertion/type": null,
                  "/type": null,
                  "/volumeAssertion/entity": null,
                  "/volumeAssertion/type": null
                },
                "type": [
                  "null",
                  {
                    "type": "record",
                    "Aspect": {
                      "name": "assertionInfo"
                    },
                    "name": "AssertionInfo",
                    "namespace": "com.linkedin.pegasus2avro.assertion",
                    "fields": [
                      {
                        "Searchable": {
                          "/*": {
                            "fieldType": "TEXT",
                            "queryByDefault": true
                          }
                        },
                        "type": {
                          "type": "map",
                          "values": "string"
                        },
                        "name": "customProperties",
                        "default": {},
                        "doc": "Custom property bag."
                      },
                      {
                        "Searchable": {
                          "fieldType": "KEYWORD"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.url.Url",
                          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "externalUrl",
                        "default": null,
                        "doc": "URL where the reference exist"
                      },
                      {
                        "Searchable": {
                          "fieldName": "assertionType",
                          "fieldType": "KEYWORD"
                        },
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "CUSTOM": "A custom assertion. \nWhen this is the value, the customAssertion field will be populated.\nUse this assertion type when the exact type of assertion is not modeled in DataHub or\nas a starting point when integrating third-party data quality tools.",
                            "DATASET": "A single-dataset assertion.\nWhen this is the value, the datasetAssertion field will be populated.",
                            "DATA_SCHEMA": "A schema or structural assertion.\n\nWould have named this SCHEMA but the codegen for PDL does not allow this (reserved word).",
                            "FIELD": "A structured assertion targeting a specific column or field of the Dataset.",
                            "FRESHNESS": "A freshness assertion, or an assertion which indicates when a particular operation should occur\nto an asset.",
                            "SQL": "A raw SQL-statement based assertion",
                            "VOLUME": "A volume assertion, or an assertion which indicates how much data should be available for a\nparticular asset."
                          },
                          "name": "AssertionType",
                          "namespace": "com.linkedin.pegasus2avro.assertion",
                          "symbols": [
                            "DATASET",
                            "FRESHNESS",
                            "VOLUME",
                            "SQL",
                            "FIELD",
                            "DATA_SCHEMA",
                            "CUSTOM"
                          ],
                          "doc": "Type of assertion. Assertion types can evolve to span Datasets, Flows (Pipelines), Models, Features etc."
                        },
                        "name": "type",
                        "doc": "Type of assertion."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "DatasetAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset"
                                  ],
                                  "name": "Asserts"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset"
                                ],
                                "type": "string",
                                "name": "dataset",
                                "doc": "The dataset targeted by this assertion."
                              },
                              {
                                "Searchable": {},
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "DATASET_COLUMN": "This assertion applies to dataset column(s)",
                                    "DATASET_ROWS": "This assertion applies to entire rows of the dataset",
                                    "DATASET_SCHEMA": "This assertion applies to the schema of the dataset",
                                    "DATASET_STORAGE_SIZE": "This assertion applies to the storage size of the dataset",
                                    "UNKNOWN": "The scope of the assertion is unknown"
                                  },
                                  "name": "DatasetAssertionScope",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "DATASET_COLUMN",
                                    "DATASET_ROWS",
                                    "DATASET_STORAGE_SIZE",
                                    "DATASET_SCHEMA",
                                    "UNKNOWN"
                                  ]
                                },
                                "name": "scope",
                                "doc": "Scope of the Assertion. What part of the dataset does this assertion apply to?"
                              },
                              {
                                "Relationship": {
                                  "/*": {
                                    "entityTypes": [
                                      "schemaField"
                                    ],
                                    "name": "Asserts"
                                  }
                                },
                                "Searchable": {
                                  "/*": {
                                    "fieldType": "URN"
                                  }
                                },
                                "Urn": "Urn",
                                "urn_is_array": true,
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "string"
                                  }
                                ],
                                "name": "fields",
                                "default": null,
                                "doc": "One or more dataset schema fields that are targeted by this assertion.\n\nThis field is expected to be provided if the assertion scope is DATASET_COLUMN."
                              },
                              {
                                "Searchable": {},
                                "type": [
                                  "null",
                                  {
                                    "type": "enum",
                                    "symbolDocs": {
                                      "COLUMNS": "Assertion is applied on all columns.",
                                      "COLUMN_COUNT": "Assertion is applied on number of columns.",
                                      "IDENTITY": "Assertion is applied on individual column value. (No aggregation)",
                                      "MAX": "Assertion is applied on column std deviation",
                                      "MEAN": "Assertion is applied on column mean",
                                      "MEDIAN": "Assertion is applied on column median",
                                      "MIN": "Assertion is applied on column min",
                                      "NULL_COUNT": "Assertion is applied on number of null values in column",
                                      "NULL_PROPORTION": "Assertion is applied on proportion of null values in column",
                                      "ROW_COUNT": "Assertion is applied on number of rows.",
                                      "STDDEV": "Assertion is applied on column std deviation",
                                      "SUM": "Assertion is applied on column sum",
                                      "UNIQUE_COUNT": "Assertion is applied on number of distinct values in column",
                                      "UNIQUE_PROPORTION": "Assertion is applied on proportion of distinct values in column",
                                      "UNIQUE_PROPOTION": "Assertion is applied on proportion of distinct values in column\n\nDeprecated! Use UNIQUE_PROPORTION instead.",
                                      "_NATIVE_": "Other"
                                    },
                                    "name": "AssertionStdAggregation",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "symbols": [
                                      "ROW_COUNT",
                                      "COLUMNS",
                                      "COLUMN_COUNT",
                                      "IDENTITY",
                                      "MEAN",
                                      "MEDIAN",
                                      "UNIQUE_COUNT",
                                      "UNIQUE_PROPORTION",
                                      "UNIQUE_PROPOTION",
                                      "NULL_COUNT",
                                      "NULL_PROPORTION",
                                      "STDDEV",
                                      "MIN",
                                      "MAX",
                                      "SUM",
                                      "_NATIVE_"
                                    ],
                                    "doc": "The function that is applied to the aggregation input (schema, rows, column values) before evaluating an operator."
                                  }
                                ],
                                "name": "aggregation",
                                "default": null,
                                "doc": "Standardized assertion operator\nThis field is left blank if there is no selected aggregation or metric for a particular column."
                              },
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "BETWEEN": "Value being asserted is between min_value and max_value.  Requires 'minValue' & 'maxValue' parameters.",
                                    "CONTAIN": "Value being asserted contains value. Requires 'value' parameter.",
                                    "END_WITH": "Value being asserted ends with value. Requires 'value' parameter.",
                                    "EQUAL_TO": "Value being asserted is equal to value. Requires 'value' parameter.",
                                    "GREATER_THAN": "Value being asserted is greater than some value. Requires 'value' parameter.",
                                    "GREATER_THAN_OR_EQUAL_TO": "Value being asserted is greater than or equal to some value. Requires 'value' parameter.",
                                    "IN": "Value being asserted is one of the array values. Requires 'value' parameter.",
                                    "IS_FALSE": "Value being asserted is false. Requires no parameters.",
                                    "IS_TRUE": "Value being asserted is true. Requires no parameters.",
                                    "LESS_THAN": "Value being asserted is less than a max value. Requires 'value' parameter.",
                                    "LESS_THAN_OR_EQUAL_TO": "Value being asserted is less than or equal to some value. Requires 'value' parameter.",
                                    "NOT_EQUAL_TO": "Value being asserted is not equal to value. Requires 'value' parameter.",
                                    "NOT_IN": "Value being asserted is not in one of the array values. Requires 'value' parameter.",
                                    "NOT_NULL": "Value being asserted is not null. Requires no parameters.",
                                    "NULL": "Value being asserted is null. Requires no parameters.",
                                    "REGEX_MATCH": "Value being asserted matches the regex value. Requires 'value' parameter.",
                                    "START_WITH": "Value being asserted starts with value. Requires 'value' parameter.",
                                    "_NATIVE_": "Other"
                                  },
                                  "name": "AssertionStdOperator",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "BETWEEN",
                                    "LESS_THAN",
                                    "LESS_THAN_OR_EQUAL_TO",
                                    "GREATER_THAN",
                                    "GREATER_THAN_OR_EQUAL_TO",
                                    "EQUAL_TO",
                                    "NOT_EQUAL_TO",
                                    "NULL",
                                    "NOT_NULL",
                                    "CONTAIN",
                                    "END_WITH",
                                    "START_WITH",
                                    "REGEX_MATCH",
                                    "IN",
                                    "NOT_IN",
                                    "IS_TRUE",
                                    "IS_FALSE",
                                    "_NATIVE_"
                                  ],
                                  "doc": "A boolean operator that is applied on the input to an assertion, after an aggregation function has been applied."
                                },
                                "name": "operator",
                                "doc": "Standardized assertion operator"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "AssertionStdParameters",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "AssertionStdParameter",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "fields": [
                                              {
                                                "type": "string",
                                                "name": "value",
                                                "doc": "The parameter value"
                                              },
                                              {
                                                "type": {
                                                  "type": "enum",
                                                  "symbolDocs": {
                                                    "LIST": "A list of values. When used, value should be formatted as a serialized JSON array.",
                                                    "NUMBER": "A numeric value",
                                                    "SET": "A set of values. When used, value should be formatted as a serialized JSON array.",
                                                    "STRING": "A string value",
                                                    "UNKNOWN": "A value of unknown type"
                                                  },
                                                  "name": "AssertionStdParameterType",
                                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                                  "symbols": [
                                                    "STRING",
                                                    "NUMBER",
                                                    "LIST",
                                                    "SET",
                                                    "UNKNOWN"
                                                  ]
                                                },
                                                "name": "type",
                                                "doc": "The type of the parameter"
                                              }
                                            ],
                                            "doc": "Single parameter for AssertionStdOperators."
                                          }
                                        ],
                                        "name": "value",
                                        "default": null,
                                        "doc": "The value parameter of an assertion"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.assertion.AssertionStdParameter"
                                        ],
                                        "name": "maxValue",
                                        "default": null,
                                        "doc": "The maxValue parameter of an assertion"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.assertion.AssertionStdParameter"
                                        ],
                                        "name": "minValue",
                                        "default": null,
                                        "doc": "The minValue parameter of an assertion"
                                      }
                                    ],
                                    "doc": "Parameters for AssertionStdOperators."
                                  }
                                ],
                                "name": "parameters",
                                "default": null,
                                "doc": "Standard parameters required for the assertion. e.g. min_value, max_value, value, columns"
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "nativeType",
                                "default": null,
                                "doc": "Native assertion type"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "map",
                                    "values": "string"
                                  }
                                ],
                                "name": "nativeParameters",
                                "default": null,
                                "doc": "Native parameters required for the assertion."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "logic",
                                "default": null
                              }
                            ],
                            "doc": "Attributes that are applicable to single-Dataset Assertions"
                          }
                        ],
                        "name": "datasetAssertion",
                        "default": null,
                        "doc": "A Dataset Assertion definition. This field is populated when the type is DATASET."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "FreshnessAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "freshnessAssertionType",
                                  "fieldType": "KEYWORD"
                                },
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "DATASET_CHANGE": "An Freshness based on Operations performed on a particular Dataset (insert, update, delete, etc) and sourced from an audit log, as\nopposed to based on the highest watermark in a timestamp column (e.g. a query). Only valid when entity is of type \"dataset\".",
                                    "DATA_JOB_RUN": "An Freshness based on a successful execution of a Data Job."
                                  },
                                  "name": "FreshnessAssertionType",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "DATASET_CHANGE",
                                    "DATA_JOB_RUN"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of the freshness assertion being monitored."
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset",
                                    "dataJob"
                                  ],
                                  "name": "Asserts"
                                },
                                "Searchable": {
                                  "fieldType": "URN"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset",
                                  "dataJob"
                                ],
                                "type": "string",
                                "name": "entity",
                                "doc": "The entity targeted by this Freshness check."
                              },
                              {
                                "Searchable": {
                                  "/type": {
                                    "fieldName": "scheduleType"
                                  }
                                },
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "FreshnessAssertionSchedule",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "CRON": "A highly configurable recurring schedule which describes the times of events described\nby a CRON schedule, with the evaluation schedule assuming to be matching the cron schedule.\n\nIn a CRON schedule type, we compute the look-back window to be the time between the last scheduled event\nand the current event (evaluation time). This means that the evaluation schedule must match exactly\nthe schedule defined inside the cron schedule.\n\nFor example, a CRON schedule defined as \"0 8 * * *\" would represent a schedule of \"every day by 8am\". Assuming\nthat the assertion evaluation schedule is defined to match this, the freshness assertion would be evaluated in the following way:\n\n    1. Compute the \"last scheduled occurrence\" of the event using the CRON schedule. For example, yesterday at 8am.\n    2. Compute the bounds of a time window between the \"last scheduled occurrence\" (yesterday at 8am) until the \"current occurrence\" (today at 8am)\n    3. Verify that the target event has occurred within the CRON-interval window.\n    4. If the target event has occurred within the time window, then assertion passes.\n    5. If the target event has not occurred within the time window, then the assertion fails.",
                                            "FIXED_INTERVAL": "A fixed interval which is used to compute a look-back window for use when evaluating the assertion relative\nto the Evaluation Time of the Assertion.\n\nTo compute the valid look-back window, we subtract the fixed interval from the evaluation time. Then, we verify\nthat the target event has occurred within that window.\n\nFor example, a fixed interval of \"24h\" would represent a schedule of \"in the last 24 hours\".\nThe 24 hour interval is relative to the evaluation time of the assertion. For example if we schedule the assertion\nto be evaluated each hour, we'd compute the result as follows:\n\n    1. Subtract the fixed interval from the current time (Evaluation time) to compute the bounds of a fixed look-back window.\n    2. Verify that the target event has occurred within the look-back window.\n    3. If the target event has occurred within the time window, then assertion passes.\n    4. If the target event has not occurred within the time window, then the assertion fails.",
                                            "SINCE_THE_LAST_CHECK": "A stateful check that takes the last time this check ran to determine the look-back window.\n\nTo compute the valid look-back- window, we start at the time the monitor last evaluated this assertion,\nand we end at the point in time the check is currently running.\n\nFor example, let's say a Freshness assertion is of type SINCE_THE_LAST_CHECK, and the monitor is configured to\nrun every day at 12:00am. Let's assume this assertion was last evaluated yesterday at 12:04am. We'd compute\nthe result as follows:\n\n    1. Get the timestamp for the last run of the monitor on this assertion.\n    2. look_back_window_start_time = latest_monitor_run.timestampMillis [ie. 12:04a yesterday]\n    3. look_back_window_end_time = nowMillis [ie. 12:02a today]\n    4. If the target event has occurred within the window [ie. 12:04a yday to 12:02a today],\n       then the assertion passes.\n    5. If the target event has not occurred within the window, then the assertion fails."
                                          },
                                          "name": "FreshnessAssertionScheduleType",
                                          "namespace": "com.linkedin.pegasus2avro.assertion",
                                          "symbols": [
                                            "CRON",
                                            "FIXED_INTERVAL",
                                            "SINCE_THE_LAST_CHECK"
                                          ]
                                        },
                                        "name": "type",
                                        "doc": "The type of a Freshness Assertion Schedule.\n\nOnce we support data-time-relative schedules (e.g. schedules relative to time partitions),\nwe will add those schedule types here."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "FreshnessCronSchedule",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "fields": [
                                              {
                                                "type": "string",
                                                "name": "cron",
                                                "doc": "A cron-formatted execution interval, as a cron string, e.g. 1 * * * *"
                                              },
                                              {
                                                "type": "string",
                                                "name": "timezone",
                                                "doc": "Timezone in which the cron interval applies, e.g. America/Los Angeles"
                                              },
                                              {
                                                "type": [
                                                  "null",
                                                  "long"
                                                ],
                                                "name": "windowStartOffsetMs",
                                                "default": null,
                                                "doc": "An optional offset in milliseconds to SUBTRACT from the timestamp generated by the cron schedule\nto generate the lower bounds of the \"freshness window\", or the window of time in which an event must have occurred in order for the Freshness check\nto be considering passing.\n\nIf left empty, the start of the SLA window will be the _end_ of the previously evaluated Freshness window."
                                              }
                                            ],
                                            "doc": "Attributes defining a CRON-formatted schedule used for defining a freshness assertion."
                                          }
                                        ],
                                        "name": "cron",
                                        "default": null,
                                        "doc": "A cron schedule. This field is required when type is CRON."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "FixedIntervalSchedule",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "fields": [
                                              {
                                                "type": {
                                                  "type": "enum",
                                                  "name": "CalendarInterval",
                                                  "namespace": "com.linkedin.pegasus2avro.timeseries",
                                                  "symbols": [
                                                    "SECOND",
                                                    "MINUTE",
                                                    "HOUR",
                                                    "DAY",
                                                    "WEEK",
                                                    "MONTH",
                                                    "QUARTER",
                                                    "YEAR"
                                                  ]
                                                },
                                                "name": "unit",
                                                "doc": "Interval unit such as minute/hour/day etc."
                                              },
                                              {
                                                "type": "int",
                                                "name": "multiple",
                                                "default": 1,
                                                "doc": "How many units. Defaults to 1."
                                              }
                                            ],
                                            "doc": "Attributes defining a relative fixed interval SLA schedule."
                                          }
                                        ],
                                        "name": "fixedInterval",
                                        "default": null,
                                        "doc": "A fixed interval schedule. This field is required when type is FIXED_INTERVAL."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "array",
                                            "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                                          }
                                        ],
                                        "name": "exclusions",
                                        "default": null,
                                        "doc": "Blackout windows. Periods of time to exclude from the schedule."
                                      }
                                    ],
                                    "doc": "Attributes defining a single Freshness schedule."
                                  }
                                ],
                                "name": "schedule",
                                "default": null,
                                "doc": "Produce FAILURE Assertion Result if the asset is not updated on the cadence and within the time range described by the schedule."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "DatasetFilter",
                                    "namespace": "com.linkedin.pegasus2avro.dataset",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "SQL": "The partition is represented as a an opaque, raw SQL\nclause."
                                          },
                                          "name": "DatasetFilterType",
                                          "namespace": "com.linkedin.pegasus2avro.dataset",
                                          "symbols": [
                                            "SQL"
                                          ]
                                        },
                                        "name": "type",
                                        "doc": "How the partition will be represented in this model.\n\nIn the future, we'll likely add support for more structured\npredicates."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "string"
                                        ],
                                        "name": "sql",
                                        "default": null,
                                        "doc": "The raw where clause string which will be used for monitoring.\nRequired if the type is SQL."
                                      }
                                    ],
                                    "doc": "A definition of filters that should be used when\nquerying an external Dataset or Table.\n\nNote that this models should NOT be used for working with\nsearch / filter on DataHub Platform itself."
                                  }
                                ],
                                "name": "filter",
                                "default": null,
                                "doc": "A definition of the specific filters that should be applied, when performing monitoring.\nIf not provided, there is no filter, and the full table is under consideration."
                              }
                            ],
                            "doc": "Attributes defining a Freshness Assertion."
                          }
                        ],
                        "name": "freshnessAssertion",
                        "default": null,
                        "doc": "An Freshness Assertion definition. This field is populated when the type is FRESHNESS."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "VolumeAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "volumeAssertionType",
                                  "fieldType": "KEYWORD"
                                },
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "INCREMENTING_SEGMENT_ROW_COUNT_CHANGE": "A volume assertion that compares the row counts in neighboring \"segments\" or \"partitions\"\nof an incrementing column.\nThis can be used to track changes between subsequent date partition\nin a table, for example.",
                                    "INCREMENTING_SEGMENT_ROW_COUNT_TOTAL": "A volume assertion that checks the latest \"segment\" in a table based on an incrementing\ncolumn to check whether it's row count falls into a particular range.\n\nThis can be used to monitor the row count of an incrementing date-partition column segment.",
                                    "ROW_COUNT_CHANGE": "A volume assertion that is evaluated against an incremental row count of a dataset,\nor a row count change.",
                                    "ROW_COUNT_TOTAL": "A volume assertion that is evaluated against the total row count of a dataset."
                                  },
                                  "name": "VolumeAssertionType",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "ROW_COUNT_TOTAL",
                                    "ROW_COUNT_CHANGE",
                                    "INCREMENTING_SEGMENT_ROW_COUNT_TOTAL",
                                    "INCREMENTING_SEGMENT_ROW_COUNT_CHANGE"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of the volume assertion being monitored."
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset"
                                  ],
                                  "name": "Asserts"
                                },
                                "Searchable": {
                                  "fieldType": "URN"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset"
                                ],
                                "type": "string",
                                "name": "entity",
                                "doc": "The entity targeted by this Volume check."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "RowCountTotal",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                        "name": "operator",
                                        "doc": "The operator you'd like to apply.\n\nNote that only numeric operators are valid inputs:\nGREATER_THAN, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO,\nBETWEEN."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdParameters",
                                        "name": "parameters",
                                        "doc": "The parameters you'd like to provide as input to the operator.\n\nNote that only numeric parameter types are valid inputs: NUMBER."
                                      }
                                    ],
                                    "doc": "Attributes defining a ROW_COUNT_TOTAL volume assertion."
                                  }
                                ],
                                "name": "rowCountTotal",
                                "default": null,
                                "doc": "Produce FAILURE Assertion Result if the row count of the asset does not meet specific requirements.\nRequired if type is 'ROW_COUNT_TOTAL'"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "RowCountChange",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "ABSOLUTE": "A change that is defined in absolute terms.",
                                            "PERCENTAGE": "A change that is defined in relative terms using percentage change\nfrom the original value."
                                          },
                                          "name": "AssertionValueChangeType",
                                          "namespace": "com.linkedin.pegasus2avro.assertion",
                                          "symbols": [
                                            "ABSOLUTE",
                                            "PERCENTAGE"
                                          ],
                                          "doc": "An enum to represent a type of change in an assertion value, metric, or measurement."
                                        },
                                        "name": "type",
                                        "doc": "The type of the value used to evaluate the assertion: a fixed absolute value or a relative percentage."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                        "name": "operator",
                                        "doc": "The operator you'd like to apply.\n\nNote that only numeric operators are valid inputs:\nGREATER_THAN, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO,\nBETWEEN."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdParameters",
                                        "name": "parameters",
                                        "doc": "The parameters you'd like to provide as input to the operator.\n\nNote that only numeric parameter types are valid inputs: NUMBER."
                                      }
                                    ],
                                    "doc": "Attributes defining a ROW_COUNT_CHANGE volume assertion."
                                  }
                                ],
                                "name": "rowCountChange",
                                "default": null,
                                "doc": "Produce FAILURE Assertion Result if the delta row count of the asset does not meet specific requirements\nwithin a given period of time.\nRequired if type is 'ROW_COUNT_CHANGE'"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "IncrementingSegmentRowCountTotal",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": {
                                          "type": "record",
                                          "name": "IncrementingSegmentSpec",
                                          "namespace": "com.linkedin.pegasus2avro.assertion",
                                          "fields": [
                                            {
                                              "type": {
                                                "type": "record",
                                                "name": "SchemaFieldSpec",
                                                "namespace": "com.linkedin.pegasus2avro.schema",
                                                "fields": [
                                                  {
                                                    "type": "string",
                                                    "name": "path",
                                                    "doc": "The field path"
                                                  },
                                                  {
                                                    "type": "string",
                                                    "name": "type",
                                                    "doc": "The DataHub standard schema field type."
                                                  },
                                                  {
                                                    "type": "string",
                                                    "name": "nativeType",
                                                    "doc": "The native field type"
                                                  }
                                                ],
                                                "doc": "Lightweight spec used for referencing a particular schema field."
                                              },
                                              "name": "field",
                                              "doc": "The field to use to generate segments. It must be constantly incrementing as new rows are inserted."
                                            },
                                            {
                                              "type": [
                                                "null",
                                                {
                                                  "type": "record",
                                                  "name": "IncrementingSegmentFieldTransformer",
                                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                                  "fields": [
                                                    {
                                                      "type": {
                                                        "type": "enum",
                                                        "symbolDocs": {
                                                          "CEILING": "Rounds a numeric value up to the nearest integer.",
                                                          "FLOOR": "Rounds a numeric value down to the nearest integer.",
                                                          "NATIVE": "A backdoor to provide a native operator type specific to a given source system like\nSnowflake, Redshift, BQ, etc.",
                                                          "TIMESTAMP_MS_TO_DATE": "Rounds a timestamp (in milliseconds) down to the start of the day.",
                                                          "TIMESTAMP_MS_TO_HOUR": "Rounds a timestamp (in milliseconds) down to the nearest hour.",
                                                          "TIMESTAMP_MS_TO_MINUTE": "Rounds a timestamp (in seconds) down to the start of the month.",
                                                          "TIMESTAMP_MS_TO_MONTH": "Rounds a timestamp (in milliseconds) down to the start of the month",
                                                          "TIMESTAMP_MS_TO_YEAR": "Rounds a timestamp (in milliseconds) down to the start of the year"
                                                        },
                                                        "name": "IncrementingSegmentFieldTransformerType",
                                                        "namespace": "com.linkedin.pegasus2avro.assertion",
                                                        "symbols": [
                                                          "TIMESTAMP_MS_TO_MINUTE",
                                                          "TIMESTAMP_MS_TO_HOUR",
                                                          "TIMESTAMP_MS_TO_DATE",
                                                          "TIMESTAMP_MS_TO_MONTH",
                                                          "TIMESTAMP_MS_TO_YEAR",
                                                          "FLOOR",
                                                          "CEILING",
                                                          "NATIVE"
                                                        ]
                                                      },
                                                      "name": "type",
                                                      "doc": "A 'standard' transformer type. Note that not all source systems will support all operators."
                                                    },
                                                    {
                                                      "type": [
                                                        "null",
                                                        "string"
                                                      ],
                                                      "name": "nativeType",
                                                      "default": null,
                                                      "doc": "The 'native' transformer type, useful as a back door if a custom operator is required.\nThis field is required if the type is NATIVE."
                                                    }
                                                  ],
                                                  "doc": "The definition of the transformer function  that should be applied to a given field / column value in a dataset\nin order to determine the segment or bucket that it belongs to, which in turn is used to evaluate\nvolume assertions."
                                                }
                                              ],
                                              "name": "transformer",
                                              "default": null,
                                              "doc": "Optional transformer function to apply to the field in order to obtain the final segment or bucket identifier.\nIf not provided, then no operator will be applied to the field. (identity function)"
                                            }
                                          ],
                                          "doc": "Core attributes required to identify an incrementing segment in a table. This type is mainly useful\nfor tables that constantly increase with new rows being added on a particular cadence (e.g. fact or event tables)\n\nAn incrementing segment represents a logical chunk of data which is INSERTED\ninto a dataset on a regular interval, along with the presence of a constantly-incrementing column\nvalue such as an event time, date partition, or last modified column.\n\nAn incrementing segment is principally identified by 2 key attributes combined:\n\n 1. A field or column that represents the incrementing value. New rows that are inserted will be identified using this column.\n    Note that the value of this column may not by itself represent the \"bucket\" or the \"segment\" in which the row falls.\n\n 2. [Optional] An transformer function that may be applied to the selected column value in order\n    to obtain the final \"segment identifier\" or \"bucket identifier\". Rows that have the same value after applying the transformation\n    will be grouped into the same segment, using which the final value (e.g. row count) will be determined."
                                        },
                                        "name": "segment",
                                        "doc": "A specification of how the 'segment' can be derived using a column and an optional transformer function."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                        "name": "operator",
                                        "doc": "The operator you'd like to apply.\n\nNote that only numeric operators are valid inputs:\nGREATER_THAN, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO,\nBETWEEN."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdParameters",
                                        "name": "parameters",
                                        "doc": "The parameters you'd like to provide as input to the operator.\n\nNote that only numeric parameter types are valid inputs: NUMBER."
                                      }
                                    ],
                                    "doc": "Attributes defining an INCREMENTING_SEGMENT_ROW_COUNT_TOTAL volume assertion."
                                  }
                                ],
                                "name": "incrementingSegmentRowCountTotal",
                                "default": null,
                                "doc": "Produce FAILURE Assertion Result if the asset's latest incrementing segment row count total\ndoes not meet specific requirements. Required if type is 'INCREMENTING_SEGMENT_ROW_COUNT_TOTAL'"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "IncrementingSegmentRowCountChange",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.IncrementingSegmentSpec",
                                        "name": "segment",
                                        "doc": "A specification of how the 'segment' can be derived using a column and an optional transformer function."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionValueChangeType",
                                        "name": "type",
                                        "doc": "The type of the value used to evaluate the assertion: a fixed absolute value or a relative percentage."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                        "name": "operator",
                                        "doc": "The operator you'd like to apply to the row count value\n\nNote that only numeric operators are valid inputs:\nGREATER_THAN, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO,\nBETWEEN."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdParameters",
                                        "name": "parameters",
                                        "doc": "The parameters you'd like to provide as input to the operator.\n\nNote that only numeric parameter types are valid inputs: NUMBER."
                                      }
                                    ],
                                    "doc": "Attributes defining an INCREMENTING_SEGMENT_ROW_COUNT_CHANGE volume assertion."
                                  }
                                ],
                                "name": "incrementingSegmentRowCountChange",
                                "default": null,
                                "doc": "Produce FAILURE Assertion Result if the asset's incrementing segment row count delta\ndoes not meet specific requirements. Required if type is 'INCREMENTING_SEGMENT_ROW_COUNT_CHANGE'"
                              },
                              {
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.dataset.DatasetFilter"
                                ],
                                "name": "filter",
                                "default": null,
                                "doc": "A definition of the specific filters that should be applied, when performing monitoring.\nIf not provided, there is no filter, and the full table is under consideration."
                              }
                            ],
                            "doc": "Attributes defining a dataset Volume Assertion"
                          }
                        ],
                        "name": "volumeAssertion",
                        "default": null,
                        "doc": "An Volume Assertion definition. This field is populated when the type is VOLUME."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SqlAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "sqlAssertionType",
                                  "fieldType": "KEYWORD"
                                },
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "METRIC": "A SQL Metric Assertion, e.g. one based on a numeric value returned by an arbitrary SQL query.",
                                    "METRIC_CHANGE": "A SQL assertion that is evaluated against the CHANGE in a metric assertion\nover time."
                                  },
                                  "name": "SqlAssertionType",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "METRIC",
                                    "METRIC_CHANGE"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of the SQL assertion being monitored."
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset"
                                  ],
                                  "name": "Asserts"
                                },
                                "Searchable": {
                                  "fieldType": "URN"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset"
                                ],
                                "type": "string",
                                "name": "entity",
                                "doc": "The entity targeted by this SQL check."
                              },
                              {
                                "type": "string",
                                "name": "statement",
                                "doc": "The SQL statement to be executed when evaluating the assertion (or computing the metric).\nThis should be a valid and complete statement, executable by itself.\n\nUsually this should be a SELECT query statement."
                              },
                              {
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.assertion.AssertionValueChangeType"
                                ],
                                "name": "changeType",
                                "default": null,
                                "doc": "The type of the value used to evaluate the assertion: a fixed absolute value or a relative percentage.\nThis value is required if the type is METRIC_CHANGE."
                              },
                              {
                                "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                "name": "operator",
                                "doc": "The operator you'd like to apply to the result of the SQL query.\n\nNote that at this time, only numeric operators are valid inputs:\nGREATER_THAN, GREATER_THAN_OR_EQUAL_TO, EQUAL_TO, LESS_THAN, LESS_THAN_OR_EQUAL_TO,\nBETWEEN."
                              },
                              {
                                "type": "com.linkedin.pegasus2avro.assertion.AssertionStdParameters",
                                "name": "parameters",
                                "doc": "The parameters you'd like to provide as input to the operator.\n\nNote that only numeric parameter types are valid inputs: NUMBER."
                              }
                            ],
                            "doc": "Attributes defining a SQL Assertion"
                          }
                        ],
                        "name": "sqlAssertion",
                        "default": null,
                        "doc": "A SQL Assertion definition. This field is populated when the type is SQL."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "FieldAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "fieldAssertionType",
                                  "fieldType": "KEYWORD"
                                },
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "FIELD_METRIC": "An assertion used to validate the value of a common field / column metric (e.g. aggregation) such as null count + percentage,\nmin, max, median, and more.",
                                    "FIELD_VALUES": "An assertion used to validate the values contained with a field / column given a set of rows."
                                  },
                                  "name": "FieldAssertionType",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "FIELD_VALUES",
                                    "FIELD_METRIC"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of the field assertion being monitored."
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset"
                                  ],
                                  "name": "Asserts"
                                },
                                "Searchable": {
                                  "fieldType": "URN"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset"
                                ],
                                "type": "string",
                                "name": "entity",
                                "doc": "The entity targeted by this Field check."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "FieldValuesAssertion",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "Searchable": {
                                          "/path": {
                                            "fieldName": "fieldPath"
                                          }
                                        },
                                        "type": "com.linkedin.pegasus2avro.schema.SchemaFieldSpec",
                                        "name": "field",
                                        "doc": "The field under evaluation"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "record",
                                            "name": "FieldTransform",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "fields": [
                                              {
                                                "type": {
                                                  "type": "enum",
                                                  "symbolDocs": {
                                                    "LENGTH": "Obtain the length of a string field / column (applicable to string types)"
                                                  },
                                                  "name": "FieldTransformType",
                                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                                  "symbols": [
                                                    "LENGTH"
                                                  ]
                                                },
                                                "name": "type",
                                                "doc": "The type of the field transform, e.g. the transformation\nfunction / operator to apply."
                                              }
                                            ],
                                            "doc": "Definition of a transform applied to the values of a column / field.\nNote that the applicability of a field transform ultimately depends on the native type\nof the field / column.\n\nModel has single field to permit extension."
                                          }
                                        ],
                                        "name": "transform",
                                        "default": null,
                                        "doc": "An optional transform to apply to field values\nbefore evaluating the operator.\n\nIf none is applied, the field value will be compared as is."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                        "name": "operator",
                                        "doc": "The predicate to evaluate against a single value of the field.\nDepending on the operator, parameters may be required in order to successfully\nevaluate the assertion against the field value."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.assertion.AssertionStdParameters"
                                        ],
                                        "name": "parameters",
                                        "default": null,
                                        "doc": "Standard parameters required for the assertion. e.g. min_value, max_value, value, columns"
                                      },
                                      {
                                        "type": {
                                          "type": "record",
                                          "name": "FieldValuesFailThreshold",
                                          "namespace": "com.linkedin.pegasus2avro.assertion",
                                          "fields": [
                                            {
                                              "type": {
                                                "type": "enum",
                                                "name": "FieldValuesFailThresholdType",
                                                "namespace": "com.linkedin.pegasus2avro.assertion",
                                                "symbols": [
                                                  "COUNT",
                                                  "PERCENTAGE"
                                                ]
                                              },
                                              "name": "type",
                                              "default": "COUNT",
                                              "doc": "The type of failure threshold. Either based on the number\nof column values (rows) that fail the expectations, or the percentage\nof the total rows under consideration."
                                            },
                                            {
                                              "type": "long",
                                              "name": "value",
                                              "default": 0,
                                              "doc": "By default this is 0, meaning that ALL column values (i.e. rows) must\nmeet the defined expectations."
                                            }
                                          ]
                                        },
                                        "name": "failThreshold",
                                        "doc": "Additional customization about when the assertion\nshould be officially considered failing."
                                      },
                                      {
                                        "type": "boolean",
                                        "name": "excludeNulls",
                                        "default": true,
                                        "doc": "Whether to ignore or allow nulls when running the values assertion. (i.e.\nconsider only non-null values) using operators OTHER than the IS_NULL operator.\n\nDefaults to true, allowing null values."
                                      }
                                    ],
                                    "doc": "Attributes defining a field values assertion, which asserts that the values for a field / column\nof a dataset / table matches a set of expectations.\n\nIn other words, this type of assertion acts as a semantic constraint applied to fields for a specific column.\n\nTODO: We should display the \"failed row count\" to the user if the column fails the verification rules.\nTODO: Determine whether we need an \"operator\" that can be applied to the field."
                                  }
                                ],
                                "name": "fieldValuesAssertion",
                                "default": null,
                                "doc": "The definition of an assertion that validates individual values of a field / column for a set of rows.\nThis type of assertion verifies that each column value meets a particular requirement."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "FieldMetricAssertion",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "Searchable": {
                                          "/path": {
                                            "fieldName": "fieldPath"
                                          }
                                        },
                                        "type": "com.linkedin.pegasus2avro.schema.SchemaFieldSpec",
                                        "name": "field",
                                        "doc": "The field path under evaluation"
                                      },
                                      {
                                        "type": {
                                          "type": "enum",
                                          "symbolDocs": {
                                            "EMPTY_COUNT": "The number of empty string values found in the value set (applies to string columns).\nNote: This is a completely different metric different from NULL_COUNT!",
                                            "EMPTY_PERCENTAGE": "The percentage of empty string values to total rows for the dataset (applies to string columns)\nNote: This is a completely different metric different from NULL_PERCENTAGE!",
                                            "MAX": "The maximum value in the column set (applies to numeric columns)",
                                            "MAX_LENGTH": "The maximum length found in the column set (applies to string columns)",
                                            "MEAN": "The mean length found in the column set (applies to numeric columns)",
                                            "MEDIAN": "The median length found in the column set (applies to numeric columns)",
                                            "MIN": "The minimum value in the column set (applies to numeric columns)",
                                            "MIN_LENGTH": "The minimum length found in the column set (applies to string columns)",
                                            "NEGATIVE_COUNT": "The number of negative values found in the value set (applies to numeric columns)",
                                            "NEGATIVE_PERCENTAGE": "The percentage of negative values to total rows for the dataset (applies to numeric columns)",
                                            "NULL_COUNT": "The number of null values found in the column value set",
                                            "NULL_PERCENTAGE": "The percentage of null values to total rows for the dataset",
                                            "STDDEV": "The stddev length found in the column set (applies to numeric columns)",
                                            "UNIQUE_COUNT": "The number of unique values found in the column value set",
                                            "UNIQUE_PERCENTAGE": "The percentage of unique values to total rows for the dataset",
                                            "ZERO_COUNT": "The number of zero values found in the value set (applies to numeric columns)",
                                            "ZERO_PERCENTAGE": "The percentage of zero values to total rows for the dataset (applies to numeric columns)"
                                          },
                                          "name": "FieldMetricType",
                                          "namespace": "com.linkedin.pegasus2avro.assertion",
                                          "symbols": [
                                            "UNIQUE_COUNT",
                                            "UNIQUE_PERCENTAGE",
                                            "NULL_COUNT",
                                            "NULL_PERCENTAGE",
                                            "MIN",
                                            "MAX",
                                            "MEAN",
                                            "MEDIAN",
                                            "STDDEV",
                                            "NEGATIVE_COUNT",
                                            "NEGATIVE_PERCENTAGE",
                                            "ZERO_COUNT",
                                            "ZERO_PERCENTAGE",
                                            "MIN_LENGTH",
                                            "MAX_LENGTH",
                                            "EMPTY_COUNT",
                                            "EMPTY_PERCENTAGE"
                                          ],
                                          "doc": "A standard metric that can be derived from the set of values\nfor a specific field / column of a dataset / table."
                                        },
                                        "name": "metric",
                                        "doc": "The specific metric to assert against. This is the value that\nwill be obtained by applying a standard operation, such as an aggregation,\nto the selected field."
                                      },
                                      {
                                        "type": "com.linkedin.pegasus2avro.assertion.AssertionStdOperator",
                                        "name": "operator",
                                        "doc": "The predicate to evaluate against the metric for the field / column.\nDepending on the operator, parameters may be required in order to successfully\nevaluate the assertion against the metric value."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "com.linkedin.pegasus2avro.assertion.AssertionStdParameters"
                                        ],
                                        "name": "parameters",
                                        "default": null,
                                        "doc": "Standard parameters required for the assertion. e.g. min_value, max_value, value, columns"
                                      }
                                    ],
                                    "doc": "Attributes defining a field metric assertion, which asserts an expectation against\na common metric derived from the set of field / column values, for example:\nmax, min, median, null count, null percentage, unique count, unique percentage, and more."
                                  }
                                ],
                                "name": "fieldMetricAssertion",
                                "default": null,
                                "doc": "The definition of an assertion that validates a common metric obtained about a field / column for a set of rows.\nThis type of assertion verifies that the value of a high-level metric obtained by aggregating over a column meets\nexpectations"
                              },
                              {
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.dataset.DatasetFilter"
                                ],
                                "name": "filter",
                                "default": null,
                                "doc": "A definition of the specific filters that should be applied, when performing monitoring.\nIf not provided, there is no filter, and the full table is under consideration.\nIf using DataHub Dataset Profiles as the assertion source type, the value of this field will be ignored."
                              }
                            ],
                            "doc": "Attributes defining a Field Assertion."
                          }
                        ],
                        "name": "fieldAssertion",
                        "default": null,
                        "doc": "A Field Assertion definition. This field is populated when the type is FIELD."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SchemaAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset",
                                    "dataJob"
                                  ],
                                  "name": "Asserts"
                                },
                                "Searchable": {
                                  "fieldType": "URN"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset",
                                  "dataJob"
                                ],
                                "type": "string",
                                "name": "entity",
                                "doc": "The entity targeted by the assertion"
                              },
                              {
                                "Relationship": {
                                  "/fields/*/globalTags/tags/*/tag": null,
                                  "/fields/*/glossaryTerms/terms/*/urn": null,
                                  "/foreignKeys/*/foreignDataset": null,
                                  "/foreignKeys/*/foreignFields/*": null
                                },
                                "Searchable": {
                                  "/fields/*/description": null,
                                  "/fields/*/fieldPath": null,
                                  "/fields/*/globalTags/tags/*/tag": null,
                                  "/fields/*/glossaryTerms/terms/*/urn": null,
                                  "/fields/*/label": null
                                },
                                "type": "com.linkedin.pegasus2avro.schema.SchemaMetadata",
                                "name": "schema",
                                "doc": "A definition of the expected structure for the asset\n\nNote that many of the fields of this model, especially those related to metadata (tags, terms)\nwill go unused in this context."
                              },
                              {
                                "type": [
                                  {
                                    "type": "enum",
                                    "symbolDocs": {
                                      "EXACT_MATCH": "The actual schema must be exactly the same as the expected schema",
                                      "SUBSET": "The actual schema must be a subset of the expected schema",
                                      "SUPERSET": "The actual schema must be a superset of the expected schema"
                                    },
                                    "name": "SchemaAssertionCompatibility",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "symbols": [
                                      "EXACT_MATCH",
                                      "SUPERSET",
                                      "SUBSET"
                                    ]
                                  },
                                  "null"
                                ],
                                "name": "compatibility",
                                "default": "EXACT_MATCH",
                                "doc": "The required compatibility level for the schema assertion to pass."
                              }
                            ],
                            "doc": "Attributes that are applicable to schema assertions"
                          }
                        ],
                        "name": "schemaAssertion",
                        "default": null,
                        "doc": "An schema Assertion definition. This field is populated when the type is DATA_SCHEMA"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "CustomAssertionInfo",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "customType",
                                  "fieldType": "KEYWORD"
                                },
                                "type": "string",
                                "name": "type",
                                "doc": "The type of custom assertion.\nThis is how your assertion will appear categorized in DataHub UI. "
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "dataset"
                                  ],
                                  "name": "Asserts"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "dataset"
                                ],
                                "type": "string",
                                "name": "entity",
                                "doc": "The entity targeted by this assertion.\nThis can have support more entityTypes (e.g. dataJob) in future"
                              },
                              {
                                "Relationship": {
                                  "entityTypes": [
                                    "schemaField"
                                  ],
                                  "name": "Asserts"
                                },
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "entityTypes": [
                                  "schemaField"
                                ],
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "field",
                                "default": null,
                                "doc": "dataset schema field targeted by this assertion.\n\nThis field is expected to be provided if the assertion is on dataset field"
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "logic",
                                "default": null
                              }
                            ],
                            "doc": "Attributes that are applicable to Custom Assertions"
                          }
                        ],
                        "name": "customAssertion",
                        "default": null,
                        "doc": "A Custom Assertion definition. This field is populated when type is CUSTOM."
                      },
                      {
                        "Searchable": {
                          "/created/actor": {
                            "fieldName": "creator",
                            "fieldType": "URN",
                            "filterNameOverride": "Created By",
                            "hasValuesFieldName": "hasCreator"
                          }
                        },
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionSource",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "Searchable": {
                                  "fieldName": "sourceType"
                                },
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "EXTERNAL": "The assertion was defined and managed externally of DataHub.",
                                    "INFERRED": "The assertion was inferred, e.g. from offline AI / ML models.\nDataHub Cloud only",
                                    "NATIVE": "The assertion was defined natively on DataHub by a user.\nDataHub Cloud only"
                                  },
                                  "name": "AssertionSourceType",
                                  "namespace": "com.linkedin.pegasus2avro.assertion",
                                  "symbols": [
                                    "NATIVE",
                                    "EXTERNAL",
                                    "INFERRED"
                                  ]
                                },
                                "name": "type",
                                "doc": "The type of the Assertion Source"
                              },
                              {
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.common.AuditStamp"
                                ],
                                "name": "created",
                                "default": null,
                                "doc": "The time at which the assertion was initially created and the author who created it.\nThis field is only present for Native assertions created after this field was introduced."
                              }
                            ],
                            "doc": "The source of an assertion"
                          }
                        ],
                        "name": "source",
                        "default": null,
                        "doc": "The source or origin of the Assertion definition.\n\nIf the source type of the Assertion is EXTERNAL, it is expected to have a corresponding dataPlatformInstance aspect detailing\nthe platform where it was ingested from."
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.common.AuditStamp"
                        ],
                        "name": "lastUpdated",
                        "default": null,
                        "doc": "The time at which the assertion was last updated and the actor who updated it.\nThis field is only present for Native assertions updated after this field was introduced."
                      },
                      {
                        "Searchable": {
                          "fieldName": "assertionDescription",
                          "fieldType": "TEXT",
                          "hasValuesFieldName": "hasAssertionDescription"
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "description",
                        "default": null,
                        "doc": "An optional human-readable description of the assertion"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionNote",
                            "namespace": "com.linkedin.pegasus2avro.assertion",
                            "fields": [
                              {
                                "type": "string",
                                "name": "content",
                                "doc": "The note to give technical owners more context about the assertion, and how to troubleshoot it."
                              },
                              {
                                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                "name": "lastModified",
                                "doc": "The time at which the note was last modified."
                              }
                            ]
                          }
                        ],
                        "name": "note",
                        "default": null,
                        "doc": "An optional note to give technical owners more context about the assertion, and how to troubleshoot it.\nThe UI will render this in markdown format."
                      }
                    ],
                    "doc": "Information about an assertion\n\nAcryl Only: Did you update AssertionWithoutAnnotations.pdl? If not, please update it."
                  }
                ],
                "name": "assertion",
                "default": null,
                "doc": "Acryl Only! An assertion without any searchable or relationship annotations."
              },
              {
                "Relationship": {
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/fieldAssertion/entity": null,
                  "/freshnessAssertion/entity": null,
                  "/schemaAssertion/entity": null,
                  "/sqlAssertion/entity": null,
                  "/volumeAssertion/entity": null
                },
                "Searchable": {
                  "/customProperties/*": null,
                  "/datasetAssertion/aggregation": null,
                  "/datasetAssertion/dataset": null,
                  "/datasetAssertion/fields/*": null,
                  "/datasetAssertion/scope": null,
                  "/externalUrl": null,
                  "/fieldAssertion/entity": null,
                  "/fieldAssertion/fieldMetricAssertion/field/path": null,
                  "/fieldAssertion/fieldValuesAssertion/field/path": null,
                  "/fieldAssertion/type": null,
                  "/freshnessAssertion/entity": null,
                  "/freshnessAssertion/schedule/type": null,
                  "/freshnessAssertion/type": null,
                  "/schemaAssertion/entity": null,
                  "/source/type": null,
                  "/sqlAssertion/entity": null,
                  "/sqlAssertion/type": null,
                  "/type": null,
                  "/volumeAssertion/entity": null,
                  "/volumeAssertion/type": null
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionInfo"
                ],
                "name": "baseAssertion",
                "default": null,
                "doc": "The optional AssertionInfo which contains the original/untransformed assertion that was predicted.\nThis field is used to store the original assertion that was made before the evaluation process.\nIt is optional and may not always be present in the AssertionRunEvent record.\nWhen present, it provides additional context about the original assertion that was made.\n\nAcryl Only! An assertion without any searchable or relationship annotations."
              },
              {
                "Searchable": {
                  "fieldName": "lastResultType",
                  "fieldType": "KEYWORD"
                },
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ERROR": " The Assertion encountered an Error",
                    "FAILURE": " The Assertion Failed",
                    "INIT": " The Assertion has not yet been fully evaluated",
                    "SUCCESS": " The Assertion Succeeded"
                  },
                  "name": "AssertionResultType",
                  "namespace": "com.linkedin.pegasus2avro.assertion",
                  "symbols": [
                    "INIT",
                    "SUCCESS",
                    "FAILURE",
                    "ERROR"
                  ],
                  "doc": " The final result of evaluating an assertion, e.g. SUCCESS, FAILURE, or ERROR."
                },
                "name": "type",
                "doc": " The final result, e.g. either SUCCESS, FAILURE, or ERROR."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "rowCount",
                "default": null,
                "doc": "Number of rows for evaluated batch"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "missingCount",
                "default": null,
                "doc": "Number of rows with missing value for evaluated batch"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "unexpectedCount",
                "default": null,
                "doc": "Number of rows with unexpected value for evaluated batch"
              },
              {
                "type": [
                  "null",
                  "float"
                ],
                "name": "actualAggValue",
                "default": null,
                "doc": "Observed aggregate value for evaluated batch"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "string"
                  }
                ],
                "name": "nativeResults",
                "default": null,
                "doc": "Other results of evaluation"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "externalUrl",
                "default": null,
                "doc": "External URL where full results are available. Only present when assertion source is not native."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionResultError",
                    "namespace": "com.linkedin.pegasus2avro.assertion",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "CUSTOM_SQL_ERROR": " Error while executing a custom SQL assertion",
                            "FIELD_ASSERTION_ERROR": " Error while executing a field assertion",
                            "INSUFFICIENT_DATA": " Insufficient data to evaluate the assertion",
                            "INVALID_PARAMETERS": " Invalid parameters were detected",
                            "INVALID_SOURCE_TYPE": " Event type not supported by the specified source",
                            "SOURCE_CONNECTION_ERROR": " Source is unreachable",
                            "SOURCE_QUERY_FAILED": " Source query failed to execute",
                            "UNKNOWN_ERROR": " Unknown error",
                            "UNSUPPORTED_PLATFORM": " Unsupported platform"
                          },
                          "name": "AssertionResultErrorType",
                          "namespace": "com.linkedin.pegasus2avro.assertion",
                          "symbols": [
                            "SOURCE_CONNECTION_ERROR",
                            "SOURCE_QUERY_FAILED",
                            "INSUFFICIENT_DATA",
                            "INVALID_PARAMETERS",
                            "INVALID_SOURCE_TYPE",
                            "UNSUPPORTED_PLATFORM",
                            "CUSTOM_SQL_ERROR",
                            "FIELD_ASSERTION_ERROR",
                            "UNKNOWN_ERROR"
                          ]
                        },
                        "name": "type",
                        "doc": " The type of error encountered"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "map",
                            "values": "string"
                          }
                        ],
                        "name": "properties",
                        "default": null,
                        "doc": " Additional metadata depending on the type of error"
                      }
                    ],
                    "doc": " An error encountered when evaluating an AssertionResult"
                  }
                ],
                "name": "error",
                "default": null,
                "doc": " The error object if AssertionResultType is an Error"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionEvaluationParameters",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "DATASET_FIELD": "Parameters required to evaluate a Dataset Field (Column) Assertion",
                            "DATASET_FRESHNESS": "Parameters required to evaluate a Dataset Freshness Assertion",
                            "DATASET_SCHEMA": "Parameters required to evaluate a Dataset Schema Assertion",
                            "DATASET_SQL": "Parameters required to evaluate a Dataset SQL Assertion",
                            "DATASET_VOLUME": "Parameters required to evaluate a Dataset Volume Assertion"
                          },
                          "name": "AssertionEvaluationParametersType",
                          "namespace": "com.linkedin.pegasus2avro.monitor",
                          "symbols": [
                            "DATASET_FRESHNESS",
                            "DATASET_VOLUME",
                            "DATASET_SQL",
                            "DATASET_FIELD",
                            "DATASET_SCHEMA"
                          ]
                        },
                        "name": "type",
                        "doc": "The type of parameters"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "DatasetFreshnessAssertionParameters",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "AUDIT_LOG": "Determine that a change has occurred by inspecting an audit log API",
                                    "DATAHUB_OPERATION": "Determine whether the table has changed using an Operation aspect",
                                    "FIELD_VALUE": "Determine that a change has occurred by inspecting a particular field's value.",
                                    "FILE_METADATA": "Determine that a change has occurred by inspecting underlying file system.",
                                    "INFORMATION_SCHEMA": "Determine that a change has occurred by inspecting an information schema table, or other system metadata table."
                                  },
                                  "name": "DatasetFreshnessSourceType",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "FIELD_VALUE",
                                    "INFORMATION_SCHEMA",
                                    "AUDIT_LOG",
                                    "FILE_METADATA",
                                    "DATAHUB_OPERATION"
                                  ]
                                },
                                "name": "sourceType",
                                "doc": "The source of the change operation."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "FreshnessFieldSpec",
                                    "namespace": "com.linkedin.pegasus2avro.assertion",
                                    "fields": [
                                      {
                                        "type": "string",
                                        "name": "path",
                                        "doc": "The field path"
                                      },
                                      {
                                        "type": "string",
                                        "name": "type",
                                        "doc": "The DataHub standard schema field type."
                                      },
                                      {
                                        "type": "string",
                                        "name": "nativeType",
                                        "doc": "The native field type"
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "enum",
                                            "symbolDocs": {
                                              "HIGH_WATERMARK": "Determine that a change has occurred by inspecting a field which should be tracked as the\n\"high watermark\" for the table. This should be an ascending number or date field.\n\nIf rows with this column have not been added since the previous check\nthen the Freshness Assertion will fail.",
                                              "LAST_MODIFIED": "Determine that a change has occurred by inspecting an last modified field which\nrepresents the last time at which a row was changed."
                                            },
                                            "name": "FreshnessFieldKind",
                                            "namespace": "com.linkedin.pegasus2avro.assertion",
                                            "symbols": [
                                              "LAST_MODIFIED",
                                              "HIGH_WATERMARK"
                                            ]
                                          }
                                        ],
                                        "name": "kind",
                                        "default": null,
                                        "doc": "The type of the field being used to verify the Freshness of the asset."
                                      }
                                    ],
                                    "doc": "Lightweight spec used for referencing a particular schema field that is used to compute\na freshness signal or operation.\nTODO: Since this is now leveraged across assertions & metrics / operations, we should consider moving this to a common package."
                                  }
                                ],
                                "name": "field",
                                "default": null,
                                "doc": "Information about the field to use. Present when sourceType is FIELD_VALUE"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "AuditLogSpec",
                                    "namespace": "com.linkedin.pegasus2avro.monitor",
                                    "fields": [
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "array",
                                            "items": "string"
                                          }
                                        ],
                                        "name": "operationTypes",
                                        "default": null,
                                        "doc": "The list of operation types that should be monitored. If not provided, a default set will be used."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          "string"
                                        ],
                                        "name": "userName",
                                        "default": null,
                                        "doc": "Optional: The user name associated with the operation."
                                      }
                                    ],
                                    "doc": "Information about the Audit Log operation to use in evaluating an assertion."
                                  }
                                ],
                                "name": "auditLog",
                                "default": null,
                                "doc": "Information about the audit log operation to use. Present when sourceType is AUDIT_LOG"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "DataHubOperationSpec",
                                    "namespace": "com.linkedin.pegasus2avro.monitor",
                                    "fields": [
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "array",
                                            "items": "string"
                                          }
                                        ],
                                        "name": "operationTypes",
                                        "default": null,
                                        "doc": "The list of operation types that should be monitored. If not provided, a default set will be used."
                                      },
                                      {
                                        "type": [
                                          "null",
                                          {
                                            "type": "array",
                                            "items": "string"
                                          }
                                        ],
                                        "name": "customOperationTypes",
                                        "default": null,
                                        "doc": "The list of custom operation types that should be monitored. If not provided, no custom operation types will be used."
                                      }
                                    ],
                                    "doc": "Information about the DataHub Operation aspect used to evaluate a freshness assertion"
                                  }
                                ],
                                "name": "dataHubOperation",
                                "default": null,
                                "doc": "Information about the DataHub operation. Present when sourceType is DATAHUB_OPERATION"
                              }
                            ],
                            "doc": "Information about the parameters required to evaluate an assertion"
                          }
                        ],
                        "name": "datasetFreshnessParameters",
                        "default": null,
                        "doc": "Parameters required to evaluate a Dataset Freshness Assertion. Present if type is DATASET_FRESHNESS."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "DatasetVolumeAssertionParameters",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "DATAHUB_DATASET_PROFILE": "Determine the row count using the DataHub Dataset Profile aspect",
                                    "INFORMATION_SCHEMA": "Determine the row count using an information schema query - not applicable to all platforms.",
                                    "QUERY": "Determine the row count using a COUNT(*) query"
                                  },
                                  "name": "DatasetVolumeSourceType",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "INFORMATION_SCHEMA",
                                    "QUERY",
                                    "DATAHUB_DATASET_PROFILE"
                                  ]
                                },
                                "name": "sourceType",
                                "doc": "The source of the change operation."
                              }
                            ],
                            "doc": "Information about the parameters required to evaluate a volume assertion"
                          }
                        ],
                        "name": "datasetVolumeParameters",
                        "default": null,
                        "doc": "Parameters required to evaluate a Dataset Volume Assertion. Present if type is DATASET_VOLUME."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "DatasetFieldAssertionParameters",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "ALL_ROWS_QUERY": "Issue a query to the table to obtain the metric or values across\nall rows.",
                                    "CHANGED_ROWS_QUERY": "Issue a query to the table to obtain the metric values across\nonly the rows which have changed since the previous evaluation.",
                                    "DATAHUB_DATASET_PROFILE": "Determine the metric value using the DataHub dataset profile. Only applicable\nfor Column Metric assertions, not Column Value assertions."
                                  },
                                  "name": "DatasetFieldAssertionSourceType",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "ALL_ROWS_QUERY",
                                    "CHANGED_ROWS_QUERY",
                                    "DATAHUB_DATASET_PROFILE"
                                  ]
                                },
                                "name": "sourceType",
                                "doc": "The source of the information used to evaluate\na column values or metric assertion"
                              },
                              {
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.assertion.FreshnessFieldSpec"
                                ],
                                "name": "changedRowsField",
                                "default": null,
                                "doc": "A field that can be used to filter for the fresh rows since the previous assertion\nevaluation. This should be present when sourceType = CHANGED_ROWS_QUERY.\n\nIf not provided, or the metricSourceType is not QUERY, then the assertion will be evaluated against the\nentire dataset."
                              }
                            ],
                            "doc": "Information about the parameters required to evaluate a field / column assertion"
                          }
                        ],
                        "name": "datasetFieldParameters",
                        "default": null,
                        "doc": "Parameters required to evaluate a Dataset Field (Column) Assertion. Present if type is DATASET_FIELD."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "DatasetSchemaAssertionParameters",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "DATAHUB_SCHEMA": "Validate the expected columns against the DataHub Schema Metadata aspect (the only option currently)"
                                  },
                                  "name": "DatasetSchemaSourceType",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "DATAHUB_SCHEMA"
                                  ]
                                },
                                "name": "sourceType",
                                "doc": "The source of the actual schema."
                              }
                            ],
                            "doc": "Information about the parameters required to evaluate a schema assertion."
                          }
                        ],
                        "name": "datasetSchemaParameters",
                        "default": null,
                        "doc": "Parameters required to evaluate a Dataset Schema Assertion. Present if type is DATASET_SCHEMA."
                      }
                    ],
                    "doc": "Information about the parameters required to evaluate an assertion"
                  }
                ],
                "name": "parameters",
                "default": null,
                "doc": "Acryl Only! The parameters that were used for running the assertion."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionInferenceDetails"
                ],
                "name": "assertionInferenceDetails",
                "default": null,
                "doc": "The optional AssertionInferenceDetails which contains the settings used for the inferred assertion.\nThis field is used to store the settings used for the smart assertion.\nIt is optional and may not always be present in the AssertionRunEvent record.\nWhen present, it provides additional context about the settings used for the smart assertion."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionMetric",
                    "namespace": "com.linkedin.pegasus2avro.assertion",
                    "fields": [
                      {
                        "type": "long",
                        "name": "timestampMs",
                        "doc": "The timestamp associated with the metric sampling time in milliseconds since epoch"
                      },
                      {
                        "type": "float",
                        "name": "value",
                        "doc": "The value of the metric that was sampled"
                      }
                    ]
                  }
                ],
                "name": "metric",
                "default": null,
                "doc": "Information about the metric that was sampled & used when evaluating the assertion.\n\nCurrently, this is only populated for Volume & Field Metric Assertions and used for anomaly\nlogging for Smart Assertions."
              }
            ],
            "doc": "The result of running an assertion"
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Results of assertion, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "runtimeContext",
        "default": null,
        "doc": "Runtime parameters of evaluation"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "BatchSpec",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "Searchable": {
                  "/*": {
                    "fieldType": "TEXT",
                    "queryByDefault": true
                  }
                },
                "type": {
                  "type": "map",
                  "values": "string"
                },
                "name": "customProperties",
                "default": {},
                "doc": "Custom property bag."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "nativeBatchId",
                "default": null,
                "doc": "The native identifier as specified by the system operating on the batch."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "query",
                "default": null,
                "doc": "A query that identifies a batch of data"
              },
              {
                "type": [
                  "null",
                  "int"
                ],
                "name": "limit",
                "default": null,
                "doc": "Any limit to the number of rows in the batch, if applied"
              }
            ],
            "doc": "A batch on which certain operations, e.g. data quality evaluation, is done."
          }
        ],
        "name": "batchSpec",
        "default": null,
        "doc": "Specification of the batch which this run is evaluating"
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "assertionUrn"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TimeWindowSize",
            "namespace": "com.linkedin.pegasus2avro.timeseries",
            "fields": [
              {
                "type": "com.linkedin.pegasus2avro.timeseries.CalendarInterval",
                "name": "unit",
                "doc": "Interval unit such as minute/hour/day etc."
              },
              {
                "type": "int",
                "name": "multiple",
                "default": 1,
                "doc": "How many units. Defaults to 1."
              }
            ],
            "doc": "Defines the size of a time window."
          }
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          {
            "type": "record",
            "name": "PartitionSpec",
            "namespace": "com.linkedin.pegasus2avro.timeseries",
            "fields": [
              {
                "TimeseriesField": {},
                "type": "string",
                "name": "partition",
                "doc": "A unique id / value for the partition for which statistics were collected,\ngenerated by applying the key definition to a given row."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TimeWindow",
                    "namespace": "com.linkedin.pegasus2avro.timeseries",
                    "fields": [
                      {
                        "type": "long",
                        "name": "startTimeMillis",
                        "doc": "Start time as epoch at UTC."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.timeseries.TimeWindowSize",
                        "name": "length",
                        "doc": "The length of the window."
                      }
                    ]
                  }
                ],
                "name": "timePartition",
                "default": null,
                "doc": "Time window of the partition, if we are able to extract it from the partition key."
              },
              {
                "deprecated": true,
                "type": {
                  "type": "enum",
                  "name": "PartitionType",
                  "namespace": "com.linkedin.pegasus2avro.timeseries",
                  "symbols": [
                    "FULL_TABLE",
                    "QUERY",
                    "PARTITION"
                  ]
                },
                "name": "type",
                "default": "PARTITION",
                "doc": "Unused!"
              }
            ],
            "doc": "A reference to a specific partition in a dataset."
          },
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "An event representing the current status of evaluating an assertion on a batch.\nAssertionRunEvent should be used for reporting the status of a run as an assertion evaluation progresses."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionAnalyticsRunEvent",
      "type": "timeseries"
    },
    "name": "AssertionAnalyticsRunEvent",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.assertion.AssertionType",
        "name": "type",
        "doc": "Type of assertion."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "creator",
        "default": null,
        "doc": "Creator of the assertion."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeDomain"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeDomains",
        "default": null,
        "doc": "The Domains attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeDataProduct"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeDataProducts",
        "default": null,
        "doc": "The Data Products attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeTags"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeTags",
        "default": null,
        "doc": "The Tags attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeGlossaryTerms"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeGlossaryTerms",
        "default": null,
        "doc": "The Glossary Terms attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeOwners"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeOwners",
        "default": null,
        "doc": "Parent Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name\n(Caveat: only corpuser is currently supported in the frontend.)"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "URN"
        },
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "asserteeDataPlatform",
        "default": null,
        "doc": "Data Platform for parent"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeContainer"
          }
        },
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "asserteeContainer",
        "default": null,
        "doc": "The Container attached to the entity's parent Asset"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "URN"
        },
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "asserteeDataPlatformInstance",
        "default": null,
        "doc": "Instance of the parent's data platform (e.g. db instance)"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeSchemaFieldGlossaryTerms"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeSchemaFieldGlossaryTerms",
        "default": null,
        "doc": "Only provided if the Assertion is of type 'Column'. The glossary terms associated with the target column."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN",
            "hasValuesFieldName": "hasAsserteeSchemaFieldTags"
          }
        },
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "asserteeSchemaFieldTags",
        "default": null,
        "doc": "Only provided if the Assertion is of type 'Column'. The tags associated with the target column."
      },
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "type": "string",
        "name": "runId",
        "doc": " Native (platform-specific) identifier for this run"
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "asserteeUrn"
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "assertionUrn"
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.assertion.AssertionRunStatus",
        "name": "status",
        "doc": "The status of the assertion run as per this timeseries event."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.assertion.AssertionResult"
        ],
        "name": "result",
        "default": null,
        "doc": "Results of assertion, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "An event representing the current status of evaluating an assertion on a batch.\nThis should be derrived from {@link AssertionRunEvent}.\n\nIt represents the subset of data used for analytics, and hydrates extra fields for filtering"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionRunSummary"
    },
    "name": "AssertionRunSummary",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastFailedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastFailedAtMillis",
        "default": null,
        "doc": "The last failure event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "Searchable": {
          "fieldName": "lastErroredAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastErroredAtMillis",
        "default": null,
        "doc": "The last error event timestamp field as epoch at UTC in milliseconds."
      },
      {
        "Searchable": {
          "fieldName": "lastPassedAtMillis",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastPassedAtMillis",
        "default": null,
        "doc": "The last pass event timestamp field as epoch at UTC in milliseconds."
      }
    ],
    "doc": "Derived.\nTracks the latest summary details of an assertion."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionActions"
    },
    "name": "AssertionActions",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "AssertionAction",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "RAISE_INCIDENT": "Raise an incident.",
                    "RESOLVE_INCIDENT": "Resolve open incidents related to the assertion."
                  },
                  "name": "AssertionActionType",
                  "namespace": "com.linkedin.pegasus2avro.assertion",
                  "symbols": [
                    "RAISE_INCIDENT",
                    "RESOLVE_INCIDENT"
                  ]
                },
                "name": "type",
                "doc": "The type of the Action"
              }
            ],
            "doc": "The Actions about an Assertion.\nIn the future, we'll likely extend this model to support additional\nparameters or options related to the assertion actions."
          }
        },
        "name": "onSuccess",
        "default": [],
        "doc": "Actions to be executed on successful assertion run."
      },
      {
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.assertion.AssertionAction"
        },
        "name": "onFailure",
        "default": [],
        "doc": "Actions to be executed on failed assertion run."
      }
    ],
    "doc": "The Actions about an Assertion"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionDryRunEvent",
      "type": "timeseries"
    },
    "name": "AssertionDryRunEvent",
    "namespace": "com.linkedin.pegasus2avro.assertion",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "asserteeUrn"
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.assertion.AssertionRunStatus",
        "name": "status",
        "doc": "The status of the assertion dry run as per this timeseries event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionDryRunResult",
            "namespace": "com.linkedin.pegasus2avro.assertion",
            "fields": [
              {
                "TimeseriesField": {},
                "type": "com.linkedin.pegasus2avro.assertion.AssertionResultType",
                "name": "type",
                "doc": " The final result, e.g. either SUCCESS, FAILURE, or ERROR."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "rowCount",
                "default": null,
                "doc": "Number of rows for evaluated batch"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "missingCount",
                "default": null,
                "doc": "Number of rows with missing value for evaluated batch"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "unexpectedCount",
                "default": null,
                "doc": "Number of rows with unexpected value for evaluated batch"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "string"
                  }
                ],
                "name": "nativeResults",
                "default": null,
                "doc": "Other results of evaluation"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionResultError"
                ],
                "name": "error",
                "default": null,
                "doc": " The error object if AssertionResultType is an Error"
              }
            ],
            "doc": "The result of dry running an assertion.\n\nA subset of AssertionResult without the @Searchables."
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Results of assertion, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "runtimeContext",
        "default": null,
        "doc": "Runtime parameters of evaluation"
      }
    ],
    "doc": "An event produced when assertion is executed in dry-run mode, e.g.\nwhen an assertion is being \"dark-tested\".\n\nThis is used primarily in Acryl Observe to test assertion inference before production release.\n\nA subset of AssertionRunEvent without the @Searchables."
  },
  "com.linkedin.pegasus2avro.assertion.AssertionInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "dashboardUsageStatistics",
      "type": "timeseries"
    },
    "name": "DashboardUsageStatistics",
    "namespace": "com.linkedin.pegasus2avro.dashboard",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "viewsCount",
        "default": null,
        "doc": "The total number of times dashboard has been viewed"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "executionsCount",
        "default": null,
        "doc": "The total number of dashboard executions (refreshes / syncs) "
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "user"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DashboardUserUsageCounts",
              "namespace": "com.linkedin.pegasus2avro.dashboard",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "user",
                  "doc": "The unique id of the user."
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "int"
                  ],
                  "name": "viewsCount",
                  "default": null,
                  "doc": "The number of times the user has viewed the dashboard"
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "int"
                  ],
                  "name": "executionsCount",
                  "default": null,
                  "doc": "The number of times the user has executed (refreshed) the dashboard"
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "int"
                  ],
                  "name": "usageCount",
                  "default": null,
                  "doc": "Normalized numeric metric representing user's dashboard usage -- the number of times the user executed or viewed the dashboard. "
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "userEmail",
                  "default": null,
                  "doc": "If user_email is set, we attempt to resolve the user's urn upon ingest"
                }
              ],
              "doc": "Records a single user's usage counts for a given resource"
            }
          }
        ],
        "name": "userCounts",
        "default": null,
        "doc": "Users within this bucket, with frequency counts"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "favoritesCount",
        "default": null,
        "doc": "The total number of times that the dashboard has been favorited "
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "lastViewedAt",
        "default": null,
        "doc": "Last viewed at\n\nThis should not be set in cases where statistics are windowed. "
      }
    ],
    "doc": "Experimental (Subject to breaking change) -- Stats corresponding to dashboard's usage.\n\nIf this aspect represents the latest snapshot of the statistics about a Dashboard, the eventGranularity field should be null. \nIf this aspect represents a bucketed window of usage statistics (e.g. over a day), then the eventGranularity field should be set accordingly. "
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dashboardInfo"
    },
    "name": "DashboardInfo",
    "namespace": "com.linkedin.pegasus2avro.dashboard",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "title",
        "doc": "Title of the dashboard"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": "string",
        "name": "description",
        "doc": "Detailed description about the dashboard"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "chart"
            ],
            "isLineage": true,
            "name": "Contains"
          }
        },
        "deprecated": true,
        "Urn": "ChartUrn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "charts",
        "default": [],
        "doc": "Charts in a dashboard\nDeprecated! Use chartEdges instead."
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "chartEdges/*/created/actor",
            "createdOn": "chartEdges/*/created/time",
            "entityTypes": [
              "chart"
            ],
            "isLineage": true,
            "name": "Contains",
            "properties": "chartEdges/*/properties",
            "updatedActor": "chartEdges/*/lastModified/actor",
            "updatedOn": "chartEdges/*/lastModified/time"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "Edge",
              "namespace": "com.linkedin.pegasus2avro.common",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "sourceUrn",
                  "default": null,
                  "doc": "Urn of the source of this relationship edge.\nIf not specified, assumed to be the entity that this aspect belongs to."
                },
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "destinationUrn",
                  "doc": "Urn of the destination of this relationship edge."
                },
                {
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.common.AuditStamp"
                  ],
                  "name": "created",
                  "default": null,
                  "doc": "Audit stamp containing who created this relationship edge and when"
                },
                {
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.common.AuditStamp"
                  ],
                  "name": "lastModified",
                  "default": null,
                  "doc": "Audit stamp containing who last modified this relationship edge and when"
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "map",
                      "values": "string"
                    }
                  ],
                  "name": "properties",
                  "default": null,
                  "doc": "A generic properties bag that allows us to store specific information on this graph edge."
                }
              ],
              "doc": "A common structure to represent all edges to entities when used inside aspects as collections\nThis ensures that all edges have common structure around audit-stamps and will support PATCH, time-travel automatically."
            }
          }
        ],
        "name": "chartEdges",
        "default": null,
        "doc": "Charts in a dashboard"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "name": "Consumes"
          }
        },
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "datasets",
        "default": [],
        "doc": "Datasets consumed by a dashboard\nDeprecated! Use datasetEdges instead."
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "datasetEdges/*/created/actor",
            "createdOn": "datasetEdges/*/created/time",
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "name": "Consumes",
            "properties": "datasetEdges/*/properties",
            "updatedActor": "datasetEdges/*/lastModified/actor",
            "updatedOn": "datasetEdges/*/lastModified/time"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.Edge"
          }
        ],
        "name": "datasetEdges",
        "default": null,
        "doc": "Datasets consumed by a dashboard"
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "dashboards/*/created/actor",
            "createdOn": "dashboards/*/created/time",
            "entityTypes": [
              "dashboard"
            ],
            "isLineage": true,
            "name": "DashboardContainsDashboard",
            "properties": "dashboards/*/properties",
            "updatedActor": "dashboards/*/lastModified/actor",
            "updatedOn": "dashboards/*/lastModified/time"
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.Edge"
        },
        "name": "dashboards",
        "default": [],
        "doc": "Dashboards included by this dashboard.\nSome dashboard entities (e.g. PowerBI Apps) can contain other dashboards.\n\nThe Edge's sourceUrn should never be set, as it will always be the base dashboard."
      },
      {
        "Searchable": {
          "/lastModified/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": {
          "type": "record",
          "name": "ChangeAuditStamps",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "type": "com.linkedin.pegasus2avro.common.AuditStamp",
              "name": "created",
              "default": {
                "actor": "urn:li:corpuser:unknown",
                "impersonator": null,
                "time": 0,
                "message": null
              },
              "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
            },
            {
              "type": "com.linkedin.pegasus2avro.common.AuditStamp",
              "name": "lastModified",
              "default": {
                "actor": "urn:li:corpuser:unknown",
                "impersonator": null,
                "time": 0,
                "message": null
              },
              "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.common.AuditStamp"
              ],
              "name": "deleted",
              "default": null,
              "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
            }
          ],
          "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into various lifecycle stages, and who acted to move it into those lifecycle stages. The recommended best practice is to include this record in your record schema, and annotate its fields as @readOnly in your resource. See https://github.com/linkedin/rest.li/wiki/Validation-in-Rest.li#restli-validation-annotations"
        },
        "name": "lastModified",
        "doc": "Captures information about who created/last modified/deleted this dashboard and when"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "dashboardUrl",
        "default": null,
        "doc": "URL for the dashboard. This could be used as an external link on DataHub to allow users access/view the dashboard"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD",
          "filterNameOverride": "Access Level"
        },
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "PRIVATE": "Private availability to certain set of users",
              "PUBLIC": "Publicly available access level"
            },
            "name": "AccessLevel",
            "namespace": "com.linkedin.pegasus2avro.common",
            "symbols": [
              "PUBLIC",
              "PRIVATE"
            ],
            "doc": "The various access levels"
          }
        ],
        "name": "access",
        "default": null,
        "doc": "Access level for the dashboard"
      },
      {
        "Searchable": {
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastRefreshed",
        "default": null,
        "doc": "The time when this dashboard last refreshed"
      },
      {
        "Searchable": {
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "lastRefreshedBy",
        "default": null,
        "doc": "The actor who last refreshed this dashboard"
      }
    ],
    "doc": "Information about a dashboard"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableDashboardProperties"
    },
    "name": "EditableDashboardProperties",
    "namespace": "com.linkedin.pegasus2avro.dashboard",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Edited documentation of the dashboard"
      }
    ],
    "doc": "Stores editable changes made to properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formAssignmentStatus"
    },
    "name": "FormAssignmentStatus",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETE": "Assets assignment is complete",
            "IN_PROGRESS": "Assets are currently being assigned"
          },
          "name": "AssignmentStatus",
          "namespace": "com.linkedin.pegasus2avro.form",
          "symbols": [
            "IN_PROGRESS",
            "COMPLETE"
          ]
        },
        "name": "status",
        "doc": "Notification settings for a form"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "timestamp",
        "default": null,
        "doc": "Timestamp this aspect was last updated at"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formSettings"
    },
    "name": "FormSettings",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "FormNotificationSettings",
          "namespace": "com.linkedin.pegasus2avro.form",
          "fields": [
            {
              "Searchable": {
                "fieldType": "BOOLEAN"
              },
              "type": "boolean",
              "name": "notifyAssigneesOnPublish",
              "default": false,
              "doc": "Whether to notify the assignees of the form when it is published."
            }
          ]
        },
        "name": "notificationSettings",
        "doc": "Notification settings for a form"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dynamicFormAssignment"
    },
    "name": "DynamicFormAssignment",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
        "name": "filter",
        "doc": "The filter applied when assigning this form to entities. Entities that match this filter\nwill have this form applied to them. Right now this filter only supports filtering by\nplatform, entity type, container, and domain through the UI."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "json",
        "default": null,
        "doc": "The stringified json representing the logical predicate built in the UI to select assets.\nThis predicate is turned into orFilters to send through graphql since graphql doesn't support\narbitrary nesting. This string is used to restore the UI for this logical predicate."
      }
    ],
    "doc": "Information about how a form is assigned to entities dynamically. Provide a filter to\nmatch a set of entities instead of explicitly applying a form to specific entities."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formInfo"
    },
    "name": "FormInfo",
    "namespace": "com.linkedin.pegasus2avro.form",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the form"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the form"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETION": "A form simply used for collecting metadata fields for an entity.",
            "VERIFICATION": "This form is used for \"verifying\" that entities comply with a policy via presence of a specific set of metadata fields."
          },
          "name": "FormType",
          "namespace": "com.linkedin.pegasus2avro.form",
          "symbols": [
            "COMPLETION",
            "VERIFICATION"
          ]
        },
        "name": "type",
        "default": "COMPLETION",
        "doc": "The type of this form"
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormPrompt",
            "namespace": "com.linkedin.pegasus2avro.form",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "promptId",
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": "string",
                "name": "id",
                "doc": "The unique id for this prompt. This must be GLOBALLY unique."
              },
              {
                "type": "string",
                "name": "title",
                "doc": "The title of this prompt"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "description",
                "default": null,
                "doc": "The description of this prompt"
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "DOCUMENTATION": "This prompt is meant to apply documentation to an entity",
                    "DOMAIN": "This prompt is meant to apply a domain to an entity",
                    "FIELDS_DOCUMENTATION": "This prompt is meant to apply documentation to a schema field entity",
                    "FIELDS_GLOSSARY_TERMS": "This prompt is meant to apply glossary terms to a schema field entity",
                    "FIELDS_STRUCTURED_PROPERTY": "This prompt is meant to apply a structured property to a schema field entity",
                    "GLOSSARY_TERMS": "This prompt is meant to apply glossary terms to an entity",
                    "OWNERSHIP": "This prompt is meant to apply ownership to an entity",
                    "STRUCTURED_PROPERTY": "This prompt is meant to apply a structured property to an entity"
                  },
                  "name": "FormPromptType",
                  "namespace": "com.linkedin.pegasus2avro.form",
                  "symbols": [
                    "STRUCTURED_PROPERTY",
                    "FIELDS_STRUCTURED_PROPERTY",
                    "OWNERSHIP",
                    "DOCUMENTATION",
                    "FIELDS_DOCUMENTATION",
                    "GLOSSARY_TERMS",
                    "FIELDS_GLOSSARY_TERMS",
                    "DOMAIN"
                  ]
                },
                "name": "type",
                "doc": "The type of prompt"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "StructuredPropertyParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "Searchable": {
                          "fieldName": "structuredPropertyPromptUrns",
                          "fieldType": "URN"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "urn",
                        "doc": "The structured property that is required on this entity"
                      }
                    ]
                  }
                ],
                "name": "structuredPropertyParams",
                "default": null,
                "doc": "An optional set of information specific to structured properties prompts.\nThis should be filled out if the prompt is type STRUCTURED_PROPERTY or FIELDS_STRUCTURED_PROPERTY."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OwnershipParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "MULTIPLE": "The prompt accepts multiple values as a response",
                            "SINGLE": "The prompt accepts a singular value as a response"
                          },
                          "name": "PromptCardinality",
                          "namespace": "com.linkedin.pegasus2avro.form",
                          "symbols": [
                            "SINGLE",
                            "MULTIPLE"
                          ],
                          "doc": "The cardinality of the prompt."
                        },
                        "name": "cardinality",
                        "default": "MULTIPLE",
                        "doc": "Whether one or multiple owners are accepted as a response."
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "corpuser",
                              "corpGroup"
                            ],
                            "name": "allowedOwnerOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedOwners",
                        "default": null,
                        "doc": "An optional list of allowed owners to choose from"
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "ownershipType"
                            ],
                            "name": "allowedOwnershipTypeOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedOwnershipTypes",
                        "default": null,
                        "doc": "An optional list of ownership type urns to choose from. If this is empty, all types will be allowed.\nIf only one type is provided, the user will be required to set that type when responding."
                      }
                    ],
                    "doc": "Information specific to glossary terms prompts."
                  }
                ],
                "name": "ownershipParams",
                "default": null,
                "doc": "An optional set of information specific to ownership prompts.\nThis should be filled out if the prompt is type OWNERSHIP."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlossaryTermsParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "type": "com.linkedin.pegasus2avro.form.PromptCardinality",
                        "name": "cardinality",
                        "default": "MULTIPLE",
                        "doc": "Whether one or multiple terms are accepted as a response."
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "glossaryTerm"
                            ],
                            "name": "allowedTermOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedTerms",
                        "default": null,
                        "doc": "An optional list of allowed glossary terms to choose from"
                      },
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "glossaryNode"
                            ],
                            "name": "allowedTermGroupOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedTermGroups",
                        "default": null,
                        "doc": "An optional list of glossary term groups where a selection set of terms are underneath.\nRight now this is not recursive. Provided a term group, we will display its direct children as options."
                      }
                    ],
                    "doc": "Information specific to glossary terms prompts."
                  }
                ],
                "name": "glossaryTermsParams",
                "default": null,
                "doc": "An optional set of information specific to glossary terms prompts.\nThis should be filled out if the prompt is type GLOSSARY_TERMS or FIELDS_GLOSSARY_TERM."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DomainParams",
                    "namespace": "com.linkedin.pegasus2avro.form",
                    "fields": [
                      {
                        "Relationship": {
                          "/*": {
                            "entityTypes": [
                              "domain"
                            ],
                            "name": "allowedDomainOn"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "allowedDomains",
                        "default": null,
                        "doc": "An optional list of allowed domains to choose from"
                      }
                    ],
                    "doc": "Information specific to glossary terms prompts."
                  }
                ],
                "name": "domainParams",
                "default": null,
                "doc": "An optional set of information specific to domain prompts.\nThis should be filled out if the prompt is type DOMAIN."
              },
              {
                "type": "boolean",
                "name": "required",
                "default": false,
                "doc": "Whether the prompt is required to be completed, in order for the form to be marked as complete."
              }
            ],
            "doc": "A prompt to present to the user to encourage filling out metadata"
          }
        },
        "name": "prompts",
        "default": [],
        "doc": "List of prompts to present to the user to encourage filling out metadata"
      },
      {
        "type": {
          "type": "record",
          "name": "FormActorAssignment",
          "namespace": "com.linkedin.pegasus2avro.form",
          "fields": [
            {
              "Searchable": {
                "fieldName": "isOwnershipForm",
                "fieldType": "BOOLEAN"
              },
              "type": "boolean",
              "name": "owners",
              "default": true,
              "doc": "Whether the form should be assigned to the owners of assets that it is applied to.\nThis is the default."
            },
            {
              "Searchable": {
                "/*": {
                  "fieldName": "assignedGroups",
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "groups",
              "default": null,
              "doc": "Optional: Specific set of groups that are targeted by this form assignment."
            },
            {
              "Searchable": {
                "/*": {
                  "fieldName": "assignedUsers",
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "users",
              "default": null,
              "doc": "Optional: Specific set of users that are targeted by this form assignment."
            }
          ]
        },
        "name": "actors",
        "default": {
          "groups": null,
          "owners": true,
          "users": null
        },
        "doc": "Who the form is assigned to, e.g. who should see the form when visiting the entity page or governance center"
      },
      {
        "Searchable": {
          "/state": {
            "fieldName": "formStatus",
            "fieldType": "KEYWORD"
          }
        },
        "type": {
          "type": "record",
          "name": "FormStatus",
          "namespace": "com.linkedin.pegasus2avro.form",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "DRAFT": "This form is in draft state and is not viewable by any users",
                  "PUBLISHED": "This form is published and viewable by users to fill it out",
                  "UNPUBLISHED": "This form is unpublished and is not viewable by users"
                },
                "name": "FormState",
                "namespace": "com.linkedin.pegasus2avro.form",
                "symbols": [
                  "DRAFT",
                  "PUBLISHED",
                  "UNPUBLISHED"
                ]
              },
              "name": "state",
              "doc": "The state of this form. Draft means no users are prompted to fill it out yet and unpublished is hidden.\nPublished forms are out in the world for users to see. Setting default to PUBLISHED for old data."
            },
            {
              "type": [
                "null",
                "com.linkedin.pegasus2avro.common.AuditStamp"
              ],
              "name": "lastModified",
              "default": null,
              "doc": "Audit stamp containing who last modified the form state and when."
            }
          ],
          "doc": "Information about the state of a form"
        },
        "name": "status",
        "default": {
          "state": "PUBLISHED",
          "lastModified": null
        },
        "doc": "Information about the state and status of this form"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModified",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Last Modified Audit stamp"
      }
    ],
    "doc": "Information about a form to help with filling out metadata on entities."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "linkPreviewInfo"
    },
    "name": "LinkPreviewInfo",
    "namespace": "com.linkedin.pegasus2avro.link",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "SLACK_MESSAGE": "Preview of a Slack Message",
            "TEAMS_MESSAGE": "Preview of a Microsoft Teams Message"
          },
          "name": "LinkPreviewType",
          "namespace": "com.linkedin.pegasus2avro.link",
          "symbols": [
            "SLACK_MESSAGE",
            "TEAMS_MESSAGE"
          ]
        },
        "name": "type",
        "doc": "The type of the Link Preview"
      },
      {
        "type": "string",
        "name": "json",
        "doc": "The JSON-encoded preview. Understood and rendered by DataHub UI."
      },
      {
        "type": "long",
        "name": "lastRefreshedMs",
        "doc": "The time at which the preview was last refreshed."
      }
    ],
    "doc": "Information about a Link Preview"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "testInfo"
    },
    "name": "TestInfo",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The name of the test"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "category",
        "doc": "Category of the test - Operational, Governance, etc."
      },
      {
        "Searchable": {
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the test"
      },
      {
        "type": {
          "type": "record",
          "name": "TestDefinition",
          "namespace": "com.linkedin.pegasus2avro.test",
          "fields": [
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "JSON": "JSON / YAML test def"
                },
                "name": "TestDefinitionType",
                "namespace": "com.linkedin.pegasus2avro.test",
                "symbols": [
                  "JSON"
                ]
              },
              "name": "type",
              "doc": "The Test Definition Type"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "json",
              "default": null,
              "doc": "JSON format configuration for the test"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "md5",
              "default": null,
              "doc": "MD5 hash of the test definition.\nComputed by the server.\nUsed to stamp test results accurately.\nSee TestResult for more details."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "onQuery",
              "default": null,
              "doc": "Optional search query to execute to get the assets this test applies to.\nThis only works with elastic search test executor and when evaluating a single test."
            }
          ]
        },
        "name": "definition",
        "doc": "Configuration for the Test"
      },
      {
        "Searchable": {
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastUpdatedTimestamp",
        "default": null,
        "doc": "Timestamp when the test was last updated"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastUpdatedTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastUpdated",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TestStatus",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "Searchable": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ACTIVE": "The test is running on a schedule in the default running mode.",
                    "INACTIVE": "The test is paused, disabled, not running."
                  },
                  "name": "TestMode",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "ACTIVE",
                    "INACTIVE"
                  ]
                },
                "name": "mode",
                "doc": "The evaluation mode of the Metadata Test."
              }
            ],
            "doc": "The status of a Metadata Test"
          }
        ],
        "name": "status",
        "default": null,
        "doc": "The current status of the Metadata Test, e.g. whether it is actively running."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TestSource",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType"
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "BULK_FORM_SUBMISSION": "The test was system-generated to complete a bulk form submission task",
                    "FORMS": "The test was system-generated by the system for the FORMs feature.",
                    "FORM_PROMPT": "The test was system-generated by the system for the FORMs feature to test\nfor form prompt completion."
                  },
                  "name": "TestSourceType",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "FORMS",
                    "BULK_FORM_SUBMISSION",
                    "FORM_PROMPT"
                  ]
                },
                "name": "type",
                "doc": "The source type of the metadata test"
              },
              {
                "Searchable": {
                  "fieldType": "URN"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "sourceEntity",
                "default": null,
                "doc": "An optional source 'entity' that is responsible for this test.\n\nThis is currently only used for keeping track of the Form which owns a set of metadata tests."
              }
            ],
            "doc": "The source of a metadata test"
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source of the metadata test, e.g. whether the test is user generated or system generated."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "TestSchedule",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "DAILY": "This test runs once a day",
                    "NONE": "This test does not run on a schedule"
                  },
                  "name": "TestInterval",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "DAILY",
                    "NONE"
                  ]
                },
                "name": "interval",
                "default": "DAILY",
                "doc": "The interval at which this metadata test is scheduled"
              }
            ],
            "doc": "The result of running a batch metadata test"
          }
        ],
        "name": "schedule",
        "default": null,
        "doc": "Information about the schedule at which this test runs"
      }
    ],
    "doc": "Information about a DataHub Test"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "testResults"
    },
    "name": "TestResults",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Relationship": {
          "/*/test": {
            "entityTypes": [
              "test"
            ],
            "name": "IsFailing"
          }
        },
        "Searchable": {
          "/*/test": {
            "fieldName": "failingTests",
            "fieldType": "URN",
            "hasValuesFieldName": "hasFailingTests",
            "queryByDefault": false
          },
          "/*/testDefinitionMd5": {
            "fieldName": "failingTestDefinitionMd5",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "TestResult",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "test",
                "doc": "The urn of the test"
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "FAILURE": " The Test Failed",
                    "SUCCESS": " The Test Succeeded"
                  },
                  "name": "TestResultType",
                  "namespace": "com.linkedin.pegasus2avro.test",
                  "symbols": [
                    "SUCCESS",
                    "FAILURE"
                  ]
                },
                "name": "type",
                "doc": "The type of the result"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "testDefinitionMd5",
                "default": null,
                "doc": "The md5 of the test definition that was used to compute this result.\nSee TestInfo.testDefinition.md5 for more information."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastComputed",
                "default": null,
                "doc": "The audit stamp of when the result was computed, including the actor who computed it."
              }
            ],
            "doc": "Information about a Test Result"
          }
        },
        "name": "failing",
        "doc": "Results that are failing"
      },
      {
        "Relationship": {
          "/*/test": {
            "entityTypes": [
              "test"
            ],
            "name": "IsPassing"
          }
        },
        "Searchable": {
          "/*/test": {
            "fieldName": "passingTests",
            "fieldType": "URN",
            "hasValuesFieldName": "hasPassingTests",
            "queryByDefault": false
          },
          "/*/testDefinitionMd5": {
            "fieldName": "passingTestDefinitionMd5",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.test.TestResult"
        },
        "name": "passing",
        "doc": "Results that are passing"
      }
    ],
    "doc": "Information about a Test Result"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "batchTestRunEvent",
      "type": "timeseries"
    },
    "name": "BatchTestRunEvent",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Searchable": {
          "fieldName": "lastCompletedTime",
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "COMPLETE": "The Test Run has completed",
            "RUNNING": "The Test is currently in progress"
          },
          "name": "BatchTestRunStatus",
          "namespace": "com.linkedin.pegasus2avro.test",
          "symbols": [
            "RUNNING",
            "COMPLETE"
          ]
        },
        "name": "status",
        "doc": "The status of the Test run as per this timeseries event."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "BatchTestRunResult",
            "namespace": "com.linkedin.pegasus2avro.test",
            "fields": [
              {
                "type": "long",
                "name": "passingCount",
                "doc": "Number of assets that were passing the test."
              },
              {
                "type": "long",
                "name": "failingCount",
                "doc": "Number of assets that were failing the test."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "testDefinition",
                "default": null,
                "doc": "Test definition that was used to run the test."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TestReport",
                    "namespace": "com.linkedin.pegasus2avro.test",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "TestActionsReport",
                            "namespace": "com.linkedin.pegasus2avro.test",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "record",
                                      "name": "TestActionsError",
                                      "namespace": "com.linkedin.pegasus2avro.test",
                                      "fields": [
                                        {
                                          "type": "string",
                                          "name": "actionType",
                                          "doc": "The type of action being taken in this test"
                                        },
                                        {
                                          "java": {
                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                          },
                                          "Urn": "Urn",
                                          "type": [
                                            "null",
                                            "string"
                                          ],
                                          "name": "urn",
                                          "default": null,
                                          "doc": "The asset urn related to this error"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            "string"
                                          ],
                                          "name": "message",
                                          "default": null,
                                          "doc": "Any additional info about this error"
                                        }
                                      ],
                                      "doc": "Error related to the actions applied in this test"
                                    }
                                  }
                                ],
                                "name": "errors",
                                "default": null,
                                "doc": "Errors related to the actions applied in this test"
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "totalEntityCount",
                                "default": null,
                                "doc": "The total number of entities that are affected by the actions of this test"
                              },
                              {
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "processedEntityCount",
                                "default": null,
                                "doc": "The number of entities that have already been acted upon by this test automation"
                              }
                            ],
                            "doc": "Report related to the actions applied in this test"
                          }
                        ],
                        "name": "actions",
                        "default": null,
                        "doc": "Report related to the actions applied in this test"
                      }
                    ]
                  }
                ],
                "name": "report",
                "default": null,
                "doc": "Reporting information about the run event of this metadata test"
              }
            ],
            "doc": "The result of running a batch metadata test"
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Results of test, present if the status is COMPLETE"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "An event representing the current status of evaluating a batch metadata test (run offline)"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "queryUsageStatistics",
      "type": "timeseries"
    },
    "name": "QueryUsageStatistics",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "queryCount",
        "default": null,
        "doc": "Total query count in this bucket"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "double"
        ],
        "name": "queryCost",
        "default": null,
        "doc": "Query cost for this query and bucket"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "lastExecutedAt",
        "default": null,
        "doc": "Last executed timestamp"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "user"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DatasetUserUsageCounts",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "user",
                  "doc": "The unique id of the user."
                },
                {
                  "TimeseriesField": {},
                  "type": "int",
                  "name": "count",
                  "doc": "Number of times the dataset has been used by the user."
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "userEmail",
                  "default": null,
                  "doc": "If user_email is set, we attempt to resolve the user's urn upon ingest"
                }
              ],
              "doc": "Records a single user's usage counts for a given resource"
            }
          }
        ],
        "name": "userCounts",
        "default": null,
        "doc": "Users within this bucket, with frequency counts"
      }
    ],
    "doc": "Stats corresponding to dataset's usage."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "querySubjects"
    },
    "name": "QuerySubjects",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "QuerySubject",
            "namespace": "com.linkedin.pegasus2avro.query",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "entities",
                  "fieldType": "URN"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "entity",
                "doc": "An entity which is the subject of a query."
              }
            ],
            "doc": "A single subject of a particular query.\nIn the future, we may evolve this model to include richer details\nabout the Query Subject in relation to the query."
          }
        },
        "name": "subjects",
        "doc": "One or more subjects of the query.\n\nIn single-asset queries (e.g. table select), this will contain the Table reference\nand optionally schema field references.\n\nIn multi-asset queries (e.g. table joins), this may contain multiple Table references\nand optionally schema field references."
      }
    ],
    "doc": "Information about the subjects of a particular Query, i.e. the assets\nbeing queried."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "queryUsageFeatures"
    },
    "name": "QueryUsageFeatures",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "Searchable": {
          "fieldName": "queryCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountLast30Days",
        "default": null,
        "doc": "Number of times this query was executed in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCountFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountTotal",
        "default": null,
        "doc": "Query count total \nTotal number of executions of this query"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "topUsersLast30DaysFeature",
            "fieldType": "URN",
            "hasValuesFieldName": "hasTopUsersLast30DaysFeature"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "topUsersLast30Days",
        "default": null,
        "doc": "Top users of this query in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCostLast30DaysFeature"
        },
        "type": [
          "null",
          "double"
        ],
        "name": "queryCostLast30Days",
        "default": null,
        "doc": "Total cost of this query in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "runsPercentileLast30days"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "runsPercentileLast30days",
        "default": null,
        "doc": "The percentile rank of this query based on runs last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "lastExecutedAtFeature",
          "fieldType": "DATETIME"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastExecutedAt",
        "default": null,
        "doc": "Last time this query was executed"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "queryProperties"
    },
    "name": "QueryProperties",
    "namespace": "com.linkedin.pegasus2avro.query",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "type": {
          "type": "record",
          "name": "QueryStatement",
          "namespace": "com.linkedin.pegasus2avro.query",
          "fields": [
            {
              "type": "string",
              "name": "value",
              "doc": "The query text"
            },
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "SQL": "A SQL Query",
                  "UNKNOWN": "Unknown query language"
                },
                "name": "QueryLanguage",
                "namespace": "com.linkedin.pegasus2avro.query",
                "symbols": [
                  "SQL",
                  "UNKNOWN"
                ]
              },
              "name": "language",
              "default": "SQL",
              "doc": "The language of the Query, e.g. SQL."
            }
          ],
          "doc": "A query statement against one or more data assets."
        },
        "name": "statement",
        "doc": "The Query Statement."
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "MANUAL": "The query was entered manually by a user (via the UI).",
            "SYSTEM": "The query was discovered by a crawler."
          },
          "name": "QuerySource",
          "namespace": "com.linkedin.pegasus2avro.query",
          "symbols": [
            "MANUAL",
            "SYSTEM"
          ]
        },
        "name": "source",
        "doc": "The source of the Query"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Optional display name to identify the query."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "The Query description."
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp capturing the time and actor who created the Query."
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "lastModifiedBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp capturing the time and actor who last modified the Query."
      },
      {
        "Searchable": {
          "addToFilters": false,
          "fieldType": "URN",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "origin",
        "default": null,
        "doc": "The origin of the Query.\nThis is the source of the Query (e.g. a View, Stored Procedure, dbt Model, etc.) that the Query was created from."
      }
    ],
    "doc": "Information about a Query against one or more data assets (e.g. Tables or Views)."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "ownershipTypeInfo"
    },
    "name": "OwnershipTypeInfo",
    "namespace": "com.linkedin.pegasus2avro.ownership",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the Ownership Type"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Ownership Type"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp capturing the time and actor who created the Ownership Type."
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "lastModifiedBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp capturing the time and actor who last modified the Ownership Type."
      }
    ],
    "doc": "Information about an ownership type"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestInfo"
    },
    "name": "ActionRequestInfo",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "type",
        "doc": "The type of the action request, for example 'TAG_ASSOCIATION', 'WORKFLOW_FORM_REQUEST'"
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "assignedUsers",
        "doc": "The users this action request is assigned to.\nBy default, action requests are assigned to Dataset Owners\nand with anyone who has the View Proposals platform privilege."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "assignedGroups",
        "doc": "The groups this action request is assigned to\nBy default, action requests are assigned to Dataset Owners\nand with anyone who has the View Proposals platform privilege."
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "assignedRoles",
        "default": null,
        "doc": "The roles this action request is assigned to\nBy default, action requests are assigned any roles that have the View Proposals platform privilege."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "resourceType",
        "default": null,
        "doc": "The resource type that the action is associated with, for example 'dataset'"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "resource",
        "default": null,
        "doc": "The resource identifier that the action is associated with, for example 'urn:li:dataset:...'"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "subResourceType",
        "default": null,
        "doc": "The sub resource type that the action is associated with, for example 'datasetField'"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "subResource",
        "default": null,
        "doc": "The sub-resource identifier that the action is associated with, for example 'fieldName'.\nCurrently, this is only used for Field Paths & schema fields."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "ActionRequestParams",
            "namespace": "com.linkedin.pegasus2avro.actionrequest",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlossaryTermProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "glossaryTerms"
                        },
                        "deprecated": true,
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "glossaryTerm",
                        "default": null,
                        "doc": "This field is deprecated and will be removed in a future version. Use glossaryTerms instead.\nThe urn of the glossary term being proposed."
                      },
                      {
                        "Searchable": {
                          "/*": {
                            "addToFilters": true,
                            "fieldName": "glossaryTerms"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "glossaryTerms",
                        "default": null,
                        "doc": "The urns of the glossary terms being proposed.\nUse this field over glossaryTerm."
                      }
                    ]
                  }
                ],
                "name": "glossaryTermProposal",
                "default": null,
                "doc": "An optional set of information specific to term proposals.\nTODO: Add validation that ensures that glossaryTerm or glossaryTerms field is provided, but not both."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TagProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "tags"
                        },
                        "deprecated": true,
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "tag",
                        "default": null,
                        "doc": "This field is deprecated and will be removed in a future version. Use tags instead.\nThe urn of the tag being proposed."
                      },
                      {
                        "Searchable": {
                          "/*": {
                            "addToFilters": true,
                            "fieldName": "tags"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "string"
                          }
                        ],
                        "name": "tags",
                        "default": null,
                        "doc": "The urns of the glossary terms being proposed.\nUse this field over glossaryTerm."
                      }
                    ]
                  }
                ],
                "name": "tagProposal",
                "default": null,
                "doc": "An optional set of information specific to tag proposals.\nTODO: Add validation that ensures that tag or tagUrns field is provided, but not both."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DomainProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "/*": {
                            "addToFilters": true,
                            "fieldName": "domains"
                          }
                        },
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "domains",
                        "doc": "The urns of the domain(s) being proposed. Currently, only 1 domain is supported per asset.\nIf this changes in the future, this data modeling will suffice."
                      }
                    ]
                  }
                ],
                "name": "domainProposal",
                "default": null,
                "doc": "An optional set of information specific to domain proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OwnerProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "/*/owner": {
                            "addToFilters": true,
                            "fieldName": "owners"
                          },
                          "/*/typeUrn": {
                            "addToFilters": true,
                            "fieldName": "ownershipTypes"
                          }
                        },
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "Owner",
                              "namespace": "com.linkedin.pegasus2avro.common",
                              "fields": [
                                {
                                  "Relationship": {
                                    "entityTypes": [
                                      "corpuser",
                                      "corpGroup"
                                    ],
                                    "name": "OwnedBy"
                                  },
                                  "Searchable": {
                                    "addToFilters": true,
                                    "fieldName": "owners",
                                    "fieldType": "URN",
                                    "filterNameOverride": "Owned By",
                                    "hasValuesFieldName": "hasOwners",
                                    "queryByDefault": false
                                  },
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "entityTypes": [
                                    "corpuser",
                                    "corpGroup"
                                  ],
                                  "type": "string",
                                  "name": "owner",
                                  "doc": "Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name\n(Caveat: only corpuser is currently supported in the frontend.)"
                                },
                                {
                                  "deprecated": true,
                                  "type": {
                                    "type": "enum",
                                    "symbolDocs": {
                                      "BUSINESS_OWNER": "A person or group who is responsible for logical, or business related, aspects of the asset.",
                                      "CONSUMER": "A person, group, or service that consumes the data\nDeprecated! Use TECHNICAL_OWNER or BUSINESS_OWNER instead.",
                                      "CUSTOM": "Set when ownership type is unknown or a when new one is specified as an ownership type entity for which we have no\nenum value for. This is used for backwards compatibility",
                                      "DATAOWNER": "A person or group that is owning the data\nDeprecated! Use TECHNICAL_OWNER instead.",
                                      "DATA_STEWARD": "A steward, expert, or delegate responsible for the asset.",
                                      "DELEGATE": "A person or a group that overseas the operation, e.g. a DBA or SRE.\nDeprecated! Use TECHNICAL_OWNER instead.",
                                      "DEVELOPER": "A person or group that is in charge of developing the code\nDeprecated! Use TECHNICAL_OWNER instead.",
                                      "NONE": "No specific type associated to the owner.",
                                      "PRODUCER": "A person, group, or service that produces/generates the data\nDeprecated! Use TECHNICAL_OWNER instead.",
                                      "STAKEHOLDER": "A person or a group that has direct business interest\nDeprecated! Use TECHNICAL_OWNER, BUSINESS_OWNER, or STEWARD instead.",
                                      "TECHNICAL_OWNER": "person or group who is responsible for technical aspects of the asset."
                                    },
                                    "deprecatedSymbols": {
                                      "CONSUMER": true,
                                      "DATAOWNER": true,
                                      "DELEGATE": true,
                                      "DEVELOPER": true,
                                      "PRODUCER": true,
                                      "STAKEHOLDER": true
                                    },
                                    "name": "OwnershipType",
                                    "namespace": "com.linkedin.pegasus2avro.common",
                                    "symbols": [
                                      "CUSTOM",
                                      "TECHNICAL_OWNER",
                                      "BUSINESS_OWNER",
                                      "DATA_STEWARD",
                                      "NONE",
                                      "DEVELOPER",
                                      "DATAOWNER",
                                      "DELEGATE",
                                      "PRODUCER",
                                      "CONSUMER",
                                      "STAKEHOLDER"
                                    ],
                                    "doc": "Asset owner types"
                                  },
                                  "name": "type",
                                  "doc": "The type of the ownership"
                                },
                                {
                                  "Relationship": {
                                    "entityTypes": [
                                      "ownershipType"
                                    ],
                                    "name": "ownershipType"
                                  },
                                  "Searchable": {
                                    "fieldName": "ownershipTypeUrn",
                                    "fieldType": "URN",
                                    "queryByDefault": false
                                  },
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "entityTypes": [
                                    "ownershipType"
                                  ],
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "typeUrn",
                                  "default": null,
                                  "doc": "The type of the ownership\nUrn of type O"
                                },
                                {
                                  "type": [
                                    "null",
                                    {
                                      "type": "record",
                                      "name": "OwnershipSource",
                                      "namespace": "com.linkedin.pegasus2avro.common",
                                      "fields": [
                                        {
                                          "type": {
                                            "type": "enum",
                                            "symbolDocs": {
                                              "AUDIT": "Auditing system or audit logs",
                                              "DATABASE": "Database, e.g. GRANTS table",
                                              "FILE_SYSTEM": "File system, e.g. file/directory owner",
                                              "ISSUE_TRACKING_SYSTEM": "Issue tracking system, e.g. Jira",
                                              "MANUAL": "Manually provided by a user",
                                              "OTHER": "Other sources",
                                              "SERVICE": "Other ownership-like service, e.g. Nuage, ACL service etc",
                                              "SOURCE_CONTROL": "SCM system, e.g. GIT, SVN"
                                            },
                                            "name": "OwnershipSourceType",
                                            "namespace": "com.linkedin.pegasus2avro.common",
                                            "symbols": [
                                              "AUDIT",
                                              "DATABASE",
                                              "FILE_SYSTEM",
                                              "ISSUE_TRACKING_SYSTEM",
                                              "MANUAL",
                                              "SERVICE",
                                              "SOURCE_CONTROL",
                                              "OTHER"
                                            ]
                                          },
                                          "name": "type",
                                          "doc": "The type of the source"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            "string"
                                          ],
                                          "name": "url",
                                          "default": null,
                                          "doc": "A reference URL for the source"
                                        }
                                      ],
                                      "doc": "Source/provider of the ownership information"
                                    }
                                  ],
                                  "name": "source",
                                  "default": null,
                                  "doc": "Source information for the ownership"
                                }
                              ],
                              "doc": "Ownership information"
                            }
                          }
                        ],
                        "name": "owners",
                        "default": null,
                        "doc": "The urns of the owner(s) being proposed."
                      }
                    ]
                  }
                ],
                "name": "ownerProposal",
                "default": null,
                "doc": "An optional set of information specific to ownership proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "StructuredPropertyProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "Searchable": {
                          "/*/propertyUrn": {
                            "addToFilters": true,
                            "fieldName": "structuredPropertyUrns"
                          }
                        },
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.structured.StructuredPropertyValueAssignment"
                          }
                        ],
                        "name": "structuredPropertyValues",
                        "default": null,
                        "doc": "The urns of the domain(s) being proposed. Currently, only 1 domain is supported per asset.\nIf this changes in the future, the data model will be ready.\nTODO: Decide if indexing the value would also be useful."
                      }
                    ]
                  }
                ],
                "name": "structuredPropertyProposal",
                "default": null,
                "doc": "An optional set of information specific to structured property proposals."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "CreateGlossaryTermProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": "string",
                        "name": "name",
                        "doc": "Name of the proposed Glossary Term"
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "parentNode",
                        "default": null,
                        "doc": "The urn of the parent node of the Proposed Term"
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "description",
                        "default": null,
                        "doc": "The description of the Proposed Term"
                      }
                    ]
                  }
                ],
                "name": "createGlossaryTermProposal",
                "default": null,
                "doc": "An optional set of information specific to proposals for creating new Glossary Terms."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "CreateGlossaryNodeProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": "string",
                        "name": "name",
                        "doc": "Name of the proposed Glossary Node"
                      },
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "parentNode",
                        "default": null,
                        "doc": "The urn of the parent node of the Proposed Node"
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "description",
                        "default": null,
                        "doc": "The description of the Proposed Node"
                      }
                    ]
                  }
                ],
                "name": "createGlossaryNodeProposal",
                "default": null,
                "doc": "An optional set of information specific to proposals for creating new Glossary Nodes."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DescriptionProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": "string",
                        "name": "description",
                        "doc": "The text of the description."
                      }
                    ]
                  }
                ],
                "name": "updateDescriptionProposal",
                "default": null,
                "doc": "An optional set of information specific to proposals for updating Descriptions."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DataContractProposal",
                    "namespace": "com.linkedin.pegasus2avro.actionrequest",
                    "fields": [
                      {
                        "type": [
                          {
                            "type": "enum",
                            "symbolDocs": {
                              "ADD": "Add contracts to existing contract",
                              "OVERWRITE": "Overwrite the contract in its entirety"
                            },
                            "name": "DataContractProposalOperationType",
                            "namespace": "com.linkedin.pegasus2avro.actionrequest",
                            "symbols": [
                              "ADD",
                              "OVERWRITE"
                            ]
                          },
                          "null"
                        ],
                        "name": "type",
                        "default": "OVERWRITE",
                        "doc": "How to apply the Data Contract"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "SchemaContract",
                              "namespace": "com.linkedin.pegasus2avro.datacontract",
                              "fields": [
                                {
                                  "Relationship": {
                                    "entityTypes": [
                                      "assertion"
                                    ],
                                    "name": "IncludesSchemaAssertion"
                                  },
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "entityTypes": [
                                    "assertion"
                                  ],
                                  "type": "string",
                                  "name": "assertion",
                                  "doc": "The assertion representing the schema contract."
                                }
                              ],
                              "doc": "Expectations for a logical schema"
                            }
                          }
                        ],
                        "name": "schema",
                        "default": null,
                        "doc": "An optional set of schema contracts. If this is a dataset contract, there will only be one."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "FreshnessContract",
                              "namespace": "com.linkedin.pegasus2avro.datacontract",
                              "fields": [
                                {
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "type": "string",
                                  "name": "assertion",
                                  "doc": "The assertion representing the SLA contract."
                                }
                              ],
                              "doc": "A contract pertaining to the operational SLAs of a physical data asset"
                            }
                          }
                        ],
                        "name": "freshness",
                        "default": null,
                        "doc": "An optional set of Freshness contracts. If this is a dataset contract, there will only be one."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "DataQualityContract",
                              "namespace": "com.linkedin.pegasus2avro.datacontract",
                              "fields": [
                                {
                                  "Relationship": {
                                    "entityTypes": [
                                      "assertion"
                                    ],
                                    "name": "IncludesDataQualityAssertion"
                                  },
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "entityTypes": [
                                    "assertion"
                                  ],
                                  "type": "string",
                                  "name": "assertion",
                                  "doc": "The assertion representing the Data Quality contract.\nE.g. a table or column-level assertion."
                                }
                              ],
                              "doc": "A data quality contract pertaining to a physical data asset\nData Quality contracts are used to make assertions about data quality metrics for a physical data asset"
                            }
                          }
                        ],
                        "name": "dataQuality",
                        "default": null,
                        "doc": "An optional set of Data Quality contracts, e.g. table and column level contract constraints."
                      }
                    ]
                  }
                ],
                "name": "dataContractProposal",
                "default": null,
                "doc": "A proposal to create or modify a Data Contract"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ActionWorkflowFormRequest",
                    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                    "fields": [
                      {
                        "Searchable": {
                          "fieldName": "actionWorkflow"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "workflow",
                        "doc": "The urn of the associated access request workflow."
                      },
                      {
                        "Searchable": {
                          "fieldName": "workflowCategory"
                        },
                        "type": {
                          "type": "enum",
                          "symbolDocs": {
                            "ACCESS": "Workflow for requesting access to a resource, such as a dataset or data job.\nRequires the `access` field to be populated with specific access parameters.",
                            "CUSTOM": "Custom, non-access related workflow. For example, may be used to model workflows like\nasset creation, asset cleanup or deletion, etc."
                          },
                          "name": "ActionWorkflowCategory",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "symbols": [
                            "ACCESS",
                            "CUSTOM"
                          ]
                        },
                        "name": "category",
                        "doc": "The category of the workflow. \nPrimarily used for searching / filtering action requests."
                      },
                      {
                        "Searchable": {
                          "fieldName": "customWorkflowCategory"
                        },
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "customCategory",
                        "default": null,
                        "doc": "The custom category of the workflow, if category is custom.\nPrimarily used for searching / filtering action requests."
                      },
                      {
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "record",
                            "name": "ActionWorkflowFormRequestField",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "fields": [
                              {
                                "type": "string",
                                "name": "id",
                                "doc": "Workflow-local id for the field"
                              },
                              {
                                "type": {
                                  "type": "array",
                                  "items": [
                                    "string",
                                    "double"
                                  ]
                                },
                                "name": "values",
                                "doc": "Value, reused model from structured properties. Empty if no response was provided."
                              }
                            ],
                            "doc": "Simply capture the field id + the value."
                          }
                        },
                        "name": "fields",
                        "doc": "Custom fields provided by the user making the request if the action request is of type FORM_SUBMITTED\nEventually, these may need to become search indexed. For now, not indexed."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "ActionWorkflowRequestAccess",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "fields": [
                              {
                                "Searchable": {},
                                "type": [
                                  "null",
                                  "long"
                                ],
                                "name": "expiresAt",
                                "default": null,
                                "doc": "Expiration time for the action request (optional, if part of the template)."
                              }
                            ]
                          }
                        ],
                        "name": "access",
                        "default": null,
                        "doc": "Details specific for access request workflow requests."
                      },
                      {
                        "type": {
                          "type": "record",
                          "name": "ActionWorkflowRequestStepState",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "Searchable": {
                                "fieldName": "workflowStepId"
                              },
                              "type": "string",
                              "name": "stepId",
                              "doc": "The id of the current step in the workflow, which should be of type ACTION_REQUEST_REVIEW."
                            }
                          ]
                        },
                        "name": "stepState",
                        "doc": "State related to steps. This should correspond to a step of type ACTION_REQUEST_REVIEW in the workflow \ndefinition."
                      }
                    ],
                    "doc": "A request for an access workflow form to be reviewed.\n\nFor an access workflow of trigger type FORM, this action request currently represents the \"state\" \nof the workflow instance. \n\nIn the future, we may add more features like due dates, escalations, etc.\nIdeally, for now we are keeping these out of here."
                  }
                ],
                "name": "workflowFormRequest",
                "default": null,
                "doc": "An action workflow form request."
              }
            ],
            "doc": "Parameters provided with a particular action request. Only one of the fields will be populated,\ndepending on the action request type."
          }
        ],
        "name": "params",
        "default": null,
        "doc": "Parameters specific for a particular Action Request type"
      },
      {
        "Searchable": {
          "fieldType": "COUNT"
        },
        "type": "long",
        "name": "created",
        "doc": "The time at which the request was initially created"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "createdBy",
        "doc": "Who the action request was created by"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "An optional description that can be added to the action request\nto explain the intention behind it."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "dueDate",
        "default": null,
        "doc": "The time at which the request is due"
      },
      {
        "Searchable": {
          "addToFilters": true
        },
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "INFERRED": "The Action Request was inferred by an inference pipeline, e.g. DataHub AI.",
              "MANUAL": "The Action Request was created by the user or group via the API or UI"
            },
            "name": "ActionRequestOrigin",
            "namespace": "com.linkedin.pegasus2avro.actionrequest",
            "symbols": [
              "MANUAL",
              "INFERRED"
            ],
            "doc": "The origin type of an Action Request"
          },
          "null"
        ],
        "name": "origin",
        "default": "MANUAL",
        "doc": "The origin of the action request"
      },
      {
        "Searchable": {
          "/confidenceLevel": {
            "addToFilters": true,
            "fieldName": "inferenceConfidenceLevel"
          },
          "/lastInferredAt": {
            "fieldName": "inferenceLastInferredAt"
          }
        },
        "type": [
          "null",
          {
            "type": "record",
            "name": "InferenceMetadata",
            "namespace": "com.linkedin.pegasus2avro.ai",
            "fields": [
              {
                "type": "long",
                "name": "lastInferredAt",
                "doc": "Timestamp of the last inference in milliseconds."
              },
              {
                "type": "int",
                "name": "version",
                "doc": "Monotonically incrementing version number. Once bumped, will re-trigger a new inference."
              },
              {
                "type": [
                  "null",
                  "int"
                ],
                "name": "confidenceLevel",
                "default": null,
                "doc": "Numeric confidence level of the inference that was made.\n\n   0 = Low Confidence\n   1 = Medium Confidence\n   2 = High Confidence"
              }
            ],
            "doc": "Reusable metadata about an individual inference - i.e. a single glossary term, tag, description, etc."
          }
        ],
        "name": "inferenceMetadata",
        "default": null,
        "doc": "Additional inference metadata. Optionally provided if the origin is INFERRED."
      }
    ],
    "doc": "The status of the action request - e.g. accepted, rejected, pending, etc"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestArchived"
    },
    "name": "ActionRequestArchived",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "archived",
        "default": false,
        "doc": "Status of the action request."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp containing who last modified the archival status and when."
      }
    ],
    "doc": "Stores the archival status of an Action Request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestStatus"
    },
    "name": "ActionRequestStatus",
    "namespace": "com.linkedin.pegasus2avro.actionrequest",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "status",
        "doc": "Status of the action request. e.g. PENDING / COMPLETED"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "result",
        "default": null,
        "doc": "Optional result of the action request, e.g. APPROVE or DENY in case of request approvals."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "note",
        "default": null,
        "doc": "Optional note associated with the status.\nE.g. if the request is rejected, the reason for rejection. If the request is approved, the reason for approval."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModified",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp containing who last modified the status and when."
      }
    ],
    "doc": "The status of the action request - e.g. accepted, rejected, pending, etc"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "versionSetProperties"
    },
    "name": "VersionSetProperties",
    "namespace": "com.linkedin.pegasus2avro.versionset",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "queryByDefault": "false"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "latest",
        "doc": "The latest versioned entity linked to in this version set"
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ALPHANUMERIC_GENERATED_BY_DATAHUB": "String managed by DataHub. Currently, an 8 character alphabetical string.",
            "LEXICOGRAPHIC_STRING": "String sorted lexicographically."
          },
          "name": "VersioningScheme",
          "namespace": "com.linkedin.pegasus2avro.versionset",
          "symbols": [
            "LEXICOGRAPHIC_STRING",
            "ALPHANUMERIC_GENERATED_BY_DATAHUB"
          ]
        },
        "name": "versioningScheme",
        "doc": "What versioning scheme is being utilized for the versioned entities sort criterion. Static once set"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorInfo"
    },
    "name": "MonitorInfo",
    "namespace": "com.linkedin.pegasus2avro.monitor",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ASSERTION": "A monitor responsible for evaluating Assertions.",
            "FRESHNESS": "A monitor responsible for evaluating system freshness monitors - This is not used"
          },
          "name": "MonitorType",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "symbols": [
            "ASSERTION",
            "FRESHNESS"
          ]
        },
        "name": "type",
        "doc": "Type of monitor."
      },
      {
        "type": {
          "type": "record",
          "name": "MonitorStatus",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "fields": [
            {
              "Searchable": {},
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "ACTIVE": "The monitor should be actively operating.",
                  "INACTIVE": "The monitor is not actively operating.",
                  "PASSIVE": "The monitor is running in passive mode.\nFor assertion monitors, this means that assertions will be run in dry mode.\nThis is for internal troubleshooting purposes."
                },
                "name": "MonitorMode",
                "namespace": "com.linkedin.pegasus2avro.monitor",
                "symbols": [
                  "ACTIVE",
                  "INACTIVE",
                  "PASSIVE"
                ]
              },
              "name": "mode",
              "doc": "The current operation mode of the monitor"
            },
            {
              "Searchable": {},
              "type": [
                "null",
                {
                  "type": "enum",
                  "symbolDocs": {
                    "ERROR": "The monitor is in the evaluation stage.",
                    "EVALUATION": "The monitor is in the evaluation stage.",
                    "TRAINING": "The monitor is in the training stage."
                  },
                  "name": "MonitorState",
                  "namespace": "com.linkedin.pegasus2avro.monitor",
                  "symbols": [
                    "TRAINING",
                    "EVALUATION",
                    "ERROR"
                  ]
                }
              ],
              "name": "state",
              "default": null,
              "doc": "The start time of the monitor"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "MonitorError",
                  "namespace": "com.linkedin.pegasus2avro.monitor",
                  "fields": [
                    {
                      "Searchable": {},
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "UNKNOWN": "An unknown error occurred"
                        },
                        "name": "MonitorErrorType",
                        "namespace": "com.linkedin.pegasus2avro.monitor",
                        "symbols": [
                          "UNKNOWN"
                        ]
                      },
                      "name": "type",
                      "doc": "The error for the monitor"
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "message",
                      "default": null,
                      "doc": "Optional custom message for the error"
                    }
                  ],
                  "doc": "Error details for the monitor"
                }
              ],
              "name": "error",
              "default": null,
              "doc": "The last time the monitor was started"
            },
            {
              "Searchable": {},
              "type": [
                "null",
                "long"
              ],
              "name": "reviewedAt",
              "default": null,
              "doc": "The last time the monitor was started"
            }
          ],
          "doc": "The status of an asset monitor"
        },
        "name": "status",
        "doc": "Information about the status of a monitor."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssertionMonitor",
            "namespace": "com.linkedin.pegasus2avro.monitor",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "AssertionEvaluationSpec",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "Relationship": {
                          "entityTypes": [
                            "assertion"
                          ],
                          "name": "Evaluates"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "entityTypes": [
                          "assertion"
                        ],
                        "type": "string",
                        "name": "assertion",
                        "doc": "The urn of the assertion itself"
                      },
                      {
                        "type": {
                          "type": "record",
                          "name": "CronSchedule",
                          "namespace": "com.linkedin.pegasus2avro.common",
                          "fields": [
                            {
                              "type": "string",
                              "name": "cron",
                              "doc": "A cron-formatted execution interval, as a cron string, e.g. 1 * * * *"
                            },
                            {
                              "type": "string",
                              "name": "timezone",
                              "doc": "Timezone in which the cron interval applies, e.g. America/Los Angeles"
                            }
                          ],
                          "doc": "Attributes defining a CRON-formatted schedule."
                        },
                        "name": "schedule",
                        "doc": "The evaluation schedule for the assertion"
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.monitor.AssertionEvaluationParameters"
                        ],
                        "name": "parameters",
                        "default": null,
                        "doc": "Parameters required to evaluate the assertion"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionEvaluationContext",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "record",
                                      "name": "EmbeddedAssertion",
                                      "namespace": "com.linkedin.pegasus2avro.monitor",
                                      "fields": [
                                        {
                                          "Relationship": {
                                            "/datasetAssertion/dataset": null,
                                            "/datasetAssertion/fields/*": null,
                                            "/fieldAssertion/entity": null,
                                            "/freshnessAssertion/entity": null,
                                            "/schemaAssertion/entity": null,
                                            "/sqlAssertion/entity": null,
                                            "/volumeAssertion/entity": null
                                          },
                                          "Searchable": {
                                            "/customProperties/*": null,
                                            "/datasetAssertion/aggregation": null,
                                            "/datasetAssertion/dataset": null,
                                            "/datasetAssertion/fields/*": null,
                                            "/datasetAssertion/scope": null,
                                            "/externalUrl": null,
                                            "/fieldAssertion/entity": null,
                                            "/fieldAssertion/fieldMetricAssertion/field/path": null,
                                            "/fieldAssertion/fieldValuesAssertion/field/path": null,
                                            "/fieldAssertion/type": null,
                                            "/freshnessAssertion/entity": null,
                                            "/freshnessAssertion/schedule/type": null,
                                            "/freshnessAssertion/type": null,
                                            "/schemaAssertion/entity": null,
                                            "/source/type": null,
                                            "/sqlAssertion/entity": null,
                                            "/sqlAssertion/type": null,
                                            "/type": null,
                                            "/volumeAssertion/entity": null,
                                            "/volumeAssertion/type": null
                                          },
                                          "type": [
                                            "null",
                                            "com.linkedin.pegasus2avro.assertion.AssertionInfo"
                                          ],
                                          "name": "assertion",
                                          "default": null,
                                          "doc": "Acryl Only! An assertion without any searchable or relationship annotations."
                                        },
                                        {
                                          "type": [
                                            "null",
                                            "com.linkedin.pegasus2avro.timeseries.TimeWindow"
                                          ],
                                          "name": "evaluationTimeWindow",
                                          "default": null,
                                          "doc": "Validity period of the assertion, ie the window of time where it should be used in evaluation"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            {
                                              "type": "map",
                                              "values": "string"
                                            }
                                          ],
                                          "name": "context",
                                          "default": null,
                                          "doc": "Context about the embedded assertion prediction"
                                        }
                                      ],
                                      "doc": "Embedded assertion to be evaluated"
                                    }
                                  }
                                ],
                                "name": "embeddedAssertions",
                                "default": null,
                                "doc": "Currently used for Smart Assertions\nAn embedded copy of the assertion used to evaluate which will overwrite the referenced assertion\nif present and if the EmbeddedAssertion's evaluationTimeWindow period is valid"
                              },
                              {
                                "type": [
                                  "null",
                                  "com.linkedin.pegasus2avro.assertion.AssertionInferenceDetails"
                                ],
                                "name": "inferenceDetails",
                                "default": null,
                                "doc": "Details about the assertion inference."
                              },
                              {
                                "type": [
                                  "null",
                                  "float"
                                ],
                                "name": "stdDev",
                                "default": null,
                                "doc": "The std deviation of the metric values used for training.\nThis is used to determine the final adjusted threshold for the assertion."
                              }
                            ],
                            "doc": "Additional context about assertion being evaluated."
                          }
                        ],
                        "name": "context",
                        "default": null,
                        "doc": "Additional context about assertion being evaluated."
                      }
                    ],
                    "doc": "Information required for a monitor to evaluate an assertion"
                  }
                },
                "name": "assertions",
                "doc": "Specs for each assertion to evaluate\nThis will always have 1 reference. Modelling error caused it to be an array.\nIf it is != 1 then we have data corruption."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionMonitorSettings",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.assertion.AssertionAdjustmentSettings"
                        ],
                        "name": "adjustmentSettings",
                        "default": null,
                        "doc": "In adjustment settings, the settings"
                      },
                      {
                        "Searchable": {
                          "/*": {}
                        },
                        "type": {
                          "type": "array",
                          "items": {
                            "type": "enum",
                            "symbolDocs": {
                              "ASSERTION_EVALUATION": "Whether the metrics used for evaluating an assertion should be collected and saved. These metrics\ncan be used for training, debugging, and even display in other contexts of the application.\n\nThis is particularly useful for smart assertion evaluation, where the assertion is evaluated based on the metrics collected.",
                              "METRIC_COLLECTION": "Whether the metrics used for evaluating an assertion should be collected and saved in a shared, globally accessible location (e.g. asset profiles).\nThese metrics can be used for training, debugging, and even display in other contexts of the application.\n\nThis is particularly useful for offline smart assertion training, where the smart assertion inference pipeline\nis de-coupled process that trains and updates the assertion itself based on historical metric values."
                            },
                            "name": "AssertionMonitorCapability",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "symbols": [
                              "ASSERTION_EVALUATION",
                              "METRIC_COLLECTION"
                            ],
                            "doc": "Individual toggle-able capability for an assertion monitor."
                          }
                        },
                        "name": "capabilities",
                        "default": [
                          "ASSERTION_EVALUATION"
                        ],
                        "doc": "Capabilities that are currently enabled for the assertion monitor."
                      }
                    ],
                    "doc": "General purpose settings for the assertion monitor."
                  }
                ],
                "name": "settings",
                "default": null,
                "doc": "Specific settings for an assertion monitor"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "AssertionMonitorBootstrapStatus",
                    "namespace": "com.linkedin.pegasus2avro.monitor",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "AssertionMonitorMetricsCubeBootstrapStatus",
                            "namespace": "com.linkedin.pegasus2avro.monitor",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "COMPLETED": "The metrics cube for this monitor has been bootstrapped.",
                                    "FAILED": "The metrics cube for this monitor has failed to bootstrap.",
                                    "PENDING": "The metrics cube for this monitor has not been bootstrapped."
                                  },
                                  "name": "AssertionMonitorMetricsCubeBootstrapState",
                                  "namespace": "com.linkedin.pegasus2avro.monitor",
                                  "symbols": [
                                    "PENDING",
                                    "FAILED",
                                    "COMPLETED"
                                  ]
                                },
                                "name": "state",
                                "doc": "Whether the metrics cube for this monitor has been bootstrapped."
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "message",
                                "default": null,
                                "doc": "The message associated with the bootstrap status.\nI.e., an error message if the bootstrap failed."
                              }
                            ]
                          }
                        ],
                        "name": "metricsCubeBootstrapStatus",
                        "default": null,
                        "doc": "Whether the metrics cube for this monitor has been bootstrapped."
                      }
                    ]
                  }
                ],
                "name": "bootstrapStatus",
                "default": null,
                "doc": "The status of the bootstrap actions performed on the assertion."
              }
            ],
            "doc": "Information about an Assertion monitor."
          }
        ],
        "name": "assertionMonitor",
        "default": null,
        "doc": "Information about the assertions being monitored. Required if type is ASSERTION."
      },
      {
        "Searchable": {},
        "type": [
          "null",
          "string"
        ],
        "name": "executorId",
        "default": null,
        "doc": "Advanced: The executor pool id of the remote monitor service, if any."
      }
    ],
    "doc": "Information about an asset monitor."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorSuiteInfo"
    },
    "name": "MonitorSuiteInfo",
    "namespace": "com.linkedin.pegasus2avro.monitor",
    "fields": [
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "DATA_SCHEMA": "A monitor responsible for evaluating schema changes.",
            "FRESHNESS": "A monitor responsible for evaluating freshness anomalies.",
            "VOLUME": "A monitor responsible for evaluating volume anomalies."
          },
          "name": "MonitorSuiteType",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "symbols": [
            "FRESHNESS",
            "VOLUME",
            "DATA_SCHEMA"
          ]
        },
        "name": "type",
        "doc": "Type of monitor suite."
      },
      {
        "type": {
          "type": "record",
          "name": "MonitorSuiteAssignmentSpec",
          "namespace": "com.linkedin.pegasus2avro.monitor",
          "fields": [
            {
              "type": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
              "name": "filter",
              "doc": "The filter applied when assigning this form to entities. Entities that match this filter\nwill have this form applied to them. Right now this filter only supports filtering by\nplatform, entity type, container, term, tag, domain, and urns through the UI."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "json",
              "default": null,
              "doc": "The stringified json representing the logical predicate built in the UI to select assets.\nThis predicate is turned into orFilters to send through graphql since graphql doesn't support\narbitrary nesting. This string is used to restore the UI for this logical predicate."
            }
          ],
          "doc": "Information about entities that should be monitored by a monitor suite."
        },
        "name": "assignment",
        "doc": "The assignment rule to define the entities that are monitored by this group."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "MonitorSuiteAssertionSettings",
            "namespace": "com.linkedin.pegasus2avro.monitor",
            "fields": [
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.FixedIntervalSchedule"
                ],
                "name": "schedule",
                "default": null,
                "doc": "The schedule for the assertion monitors within this group.\nNot applicable for freshness anomaly monitors."
              },
              {
                "type": "long",
                "name": "trainingDataLookbackWindowDays",
                "default": 60,
                "doc": "The lookback window configuration for retrieving training data points.\nDefines how far back in time to look when gathering data for training.\nDefaults to 60 days if not specified."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.AssertionAction"
                ],
                "name": "action",
                "default": null,
                "doc": "The action to take when an assertion evaluates.\nI.e., raise an incident if the assertion fails."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.assertion.AssertionExclusionWindow"
                  }
                ],
                "name": "exclusionWindows",
                "default": null,
                "doc": "The exclusion windows for the assertion monitors within this group."
              }
            ],
            "doc": "Settings for assertion monitors within a monitor suite."
          }
        ],
        "name": "assertionSettings",
        "default": null,
        "doc": "Settings for assertion monitors within this group."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "MonitorSuiteNotificationSettings",
            "namespace": "com.linkedin.pegasus2avro.monitor",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.subscription.EntityChangeDetails"
                },
                "name": "entityChangeTypes",
                "doc": "The change types that trigger a notification for the monitor suite.\nNOTE: only use Assertion and Incident change types for monitor suites."
              },
              {
                "type": "com.linkedin.pegasus2avro.subscription.SubscriptionNotificationConfig",
                "name": "notificationConfig",
                "doc": "The notification config for the monitor suite."
              }
            ],
            "doc": "Settings for notifications from monitors within a monitor suite."
          }
        ],
        "name": "notificationSettings",
        "default": null,
        "doc": "Settings for notifications from monitors within this group."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "updatedTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "updated",
        "default": null,
        "doc": "Updated Audit stamp"
      }
    ],
    "doc": "Information about an asset monitor."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorTimeseriesState",
      "type": "timeseries"
    },
    "name": "MonitorTimeseriesState",
    "namespace": "com.linkedin.pegasus2avro.monitor",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "id",
        "default": null,
        "doc": "An optional identifier for the state. Useful for partitioning + filtering state."
      }
    ],
    "doc": "Stats required to evaluate continuous monitors."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorAnomalyEvent",
      "type": "timeseries"
    },
    "name": "MonitorAnomalyEvent",
    "namespace": "com.linkedin.pegasus2avro.anomaly",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "CONFIRMED": "The anomaly has been confirmed by a human reviewer. This means the anomaly was validated.",
              "REJECTED": "The anomaly has been dismissed, or ignored, by a human reviewer. This means the anomaly should have been ignored."
            },
            "name": "AnomalyReviewState",
            "namespace": "com.linkedin.pegasus2avro.anomaly",
            "symbols": [
              "CONFIRMED",
              "REJECTED"
            ]
          }
        ],
        "name": "state",
        "default": null,
        "doc": "The review of the anomaly, based on human-provided feedback.\nIf this is not present, then the Anomaly has not yet been reviewed."
      },
      {
        "type": {
          "type": "record",
          "name": "AnomalySource",
          "namespace": "com.linkedin.pegasus2avro.anomaly",
          "fields": [
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "INFERRED_ASSERTION_FAILURE": "An assertion has failed, triggering the anomaly report.",
                  "USER_FEEDBACK": "An anomaly was reported by a user."
                },
                "name": "AnomalySourceType",
                "namespace": "com.linkedin.pegasus2avro.anomaly",
                "symbols": [
                  "INFERRED_ASSERTION_FAILURE",
                  "USER_FEEDBACK"
                ]
              },
              "name": "type",
              "doc": "How this feedback was provided."
            },
            {
              "TimeseriesField": {},
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": [
                "null",
                "string"
              ],
              "name": "sourceUrn",
              "default": null,
              "doc": "Reference to an URN related to the source of an anomaly.\nFor assertion monitors, this will contain the urn of the source Assertion."
            },
            {
              "TimeseriesField": {},
              "type": [
                "null",
                "long"
              ],
              "name": "sourceEventTimestampMillis",
              "default": null,
              "doc": "The timestamp of the event that triggered the anomaly.\nFor assertion monitors, this will be the timestamp of the assertion run event."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "AnomalySourceProperties",
                  "namespace": "com.linkedin.pegasus2avro.anomaly",
                  "fields": [
                    {
                      "type": [
                        "null",
                        "com.linkedin.pegasus2avro.assertion.AssertionMetric"
                      ],
                      "name": "assertionMetric",
                      "default": null,
                      "doc": "The monitor metric associated with the anomaly, if generated from an assertion monitor (the norm)."
                    }
                  ],
                  "doc": "Ad-hoc properties about an anomaly source."
                }
              ],
              "name": "properties",
              "default": null,
              "doc": "Additional properties about the source, for example which metric\nof an assertion generated the anomaly."
            }
          ],
          "doc": "Information about the source of feedback for an anomaly raised on an asset."
        },
        "name": "source",
        "doc": "The source of an anomaly, i.e. how it was generated."
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "record",
          "name": "TimeStamp",
          "namespace": "com.linkedin.pegasus2avro.common",
          "fields": [
            {
              "type": "long",
              "name": "time",
              "doc": "When did the event occur"
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": [
                "null",
                "string"
              ],
              "name": "actor",
              "default": null,
              "doc": "Optional: The actor urn involved in the event."
            }
          ],
          "doc": "A standard event timestamp"
        },
        "name": "created",
        "doc": "@Deprecated: this matches the timestampMillis field in the TimeseriesAspectBase."
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.common.TimeStamp",
        "name": "lastUpdated",
        "doc": "The time at which the anomaly was last updated\n@Deprecated: this field is not used as this is an immutable log."
      }
    ],
    "doc": "A feedback log of anomalies detected by a monitor\nNOTE: this is an immutable log. The most recent entry for a given run can be used to determine the state of the anomaly."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "platformResourceKey",
      "keyForEntity": "platformResource",
      "entityCategory": "core",
      "entityAspects": [
        "dataPlatformInstance",
        "platformResourceInfo",
        "status"
      ],
      "entityDoc": "Platform Resources are assets that are unmodeled and stored outside of the core data model. They are stored in DataHub primarily to help with application-specific use-cases that are not sufficiently generalized to move into the core data model."
    },
    "name": "PlatformResourceKey",
    "namespace": "com.linkedin.pegasus2avro.platformresource",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for this entity.\nThere are no constraints on the format of this id, but most implementations\nwill choose to use a UUID.\nThis id should be globally unique for the entire DataHub instance and\n     uniquely identify the resource that is being stored, so most\n     implementations\nwill combine logical attributes like platform name, platform instance,\nplatform-specific-id and the resource type to create the unique id.\ne.g. slack:slack-instance:slack-user-id:user-info \nor guid(slack, slack-instance, slack-user-id, user-info) etc."
      }
    ],
    "doc": "Key for a Platform Resource.\nPlatform Resources are assets that are not part of the core data model.\nThey are stored in DataHub primarily to help with application-specific\nuse-cases that are not sufficiently generalized to move into the core data model.\nFor instance, if we want to persist & retrieve additional user profile data \nfrom auxiliary integrations such as Slack or Microsoft Teams for resolving details later."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "platformResourceInfo"
    },
    "name": "PlatformResourceInfo",
    "namespace": "com.linkedin.pegasus2avro.platformresource",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "resourceType",
        "doc": "The type of the resource. \nIntended as a loose specifier of the generic type of the resource.\nProducer is not forced to conform to a specific set of symbols for\nresource types.\nThe @PlatformResourceType enumeration offers a paved path for agreed upon\ncommon terms, but is not required to be followed.\nExample values could be: conversation, user, grant, etc.\nResource types are indexed for ease of access. \ne.g. Get me all platform resources of type user for the platform looker"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "primaryKey",
        "doc": "The primary key for this platform resource.\ne.g. for a slack member this would be the memberID.\nprimary keys specified here don't need to include any additional specificity for the\n     dataPlatform\nThe @PlatformResourceKey is supposed to represent that"
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "KEYWORD"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "secondaryKeys",
        "default": null,
        "doc": "The secondary keys this platform resource can be located by.\nI.e., for a slack member this would be email or phone."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SerializedValue",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": "bytes",
                "name": "blob",
                "doc": "The serialized blob value."
              },
              {
                "type": {
                  "type": "enum",
                  "name": "SerializedValueContentType",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "JSON",
                    "BINARY"
                  ]
                },
                "name": "contentType",
                "default": "JSON",
                "doc": "The content-type of the serialized blob value."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "name": "SerializedValueSchemaType",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "symbols": [
                      "AVRO",
                      "PROTOBUF",
                      "PEGASUS",
                      "THRIFT",
                      "JSON",
                      "NONE"
                    ]
                  }
                ],
                "name": "schemaType",
                "default": null,
                "doc": "The schema type for the schema that models the object that was serialized\n       into the blob.\nAbsence of this field indicates that the schema is not known.\nIf the schema is known, the value should be set to the appropriate schema\ntype.\nUse the NONE value if the existing schema categories do not apply."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "schemaRef",
                "default": null,
                "doc": "An optional reference to the schema that models the object.\ne.g., 'com.linkedin.pegasus2avro.platformresource.slack.SlackConversation'"
              }
            ],
            "doc": "Captures the serialized value of a (usually) schema-d blob."
          }
        ],
        "name": "value",
        "default": null,
        "doc": "The serialized value of this platform resource item."
      }
    ],
    "doc": "Platform Resource Info.\nThese entities are for miscelaneous data that is used in non-core parts of the system.\nFor instance, if we want to persist & retrieve data from auxiliary integrations such as Slack or Microsoft Teams."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "notebookContent"
    },
    "name": "NotebookContent",
    "namespace": "com.linkedin.pegasus2avro.notebook",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "NotebookCell",
            "namespace": "com.linkedin.pegasus2avro.notebook",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "TextCell",
                    "namespace": "com.linkedin.pegasus2avro.notebook",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "cellTitle",
                        "default": null,
                        "doc": "Title of the cell"
                      },
                      {
                        "type": "string",
                        "name": "cellId",
                        "doc": "Unique id for the cell. This id should be globally unique for a Notebook tool even when there are multiple deployments of it. As an example, Notebook URL could be used here for QueryBook such as 'querybook.com/notebook/773/?cellId=1234'"
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
                        "name": "changeAuditStamps",
                        "doc": "Captures information about who created/last modified/deleted this Notebook cell and when"
                      },
                      {
                        "type": "string",
                        "name": "text",
                        "doc": "The actual text in a TextCell in a Notebook"
                      }
                    ],
                    "doc": "Text cell in a Notebook, which will present content in text format"
                  }
                ],
                "name": "textCell",
                "default": null,
                "doc": "The text cell content. The will be non-null only when all other cell field is null."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "QueryCell",
                    "namespace": "com.linkedin.pegasus2avro.notebook",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "cellTitle",
                        "default": null,
                        "doc": "Title of the cell"
                      },
                      {
                        "type": "string",
                        "name": "cellId",
                        "doc": "Unique id for the cell. This id should be globally unique for a Notebook tool even when there are multiple deployments of it. As an example, Notebook URL could be used here for QueryBook such as 'querybook.com/notebook/773/?cellId=1234'"
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
                        "name": "changeAuditStamps",
                        "doc": "Captures information about who created/last modified/deleted this Notebook cell and when"
                      },
                      {
                        "type": "string",
                        "name": "rawQuery",
                        "doc": "Raw query to explain some specific logic in a Notebook"
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.common.AuditStamp"
                        ],
                        "name": "lastExecuted",
                        "default": null,
                        "doc": "Captures information about who last executed this query cell and when"
                      }
                    ],
                    "doc": "Query cell in a Notebook, which will present content in query format"
                  }
                ],
                "name": "queryCell",
                "default": null,
                "doc": "The query cell content. The will be non-null only when all other cell field is null."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ChartCell",
                    "namespace": "com.linkedin.pegasus2avro.notebook",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "cellTitle",
                        "default": null,
                        "doc": "Title of the cell"
                      },
                      {
                        "type": "string",
                        "name": "cellId",
                        "doc": "Unique id for the cell. This id should be globally unique for a Notebook tool even when there are multiple deployments of it. As an example, Notebook URL could be used here for QueryBook such as 'querybook.com/notebook/773/?cellId=1234'"
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
                        "name": "changeAuditStamps",
                        "doc": "Captures information about who created/last modified/deleted this Notebook cell and when"
                      }
                    ],
                    "doc": "Chart cell in a notebook, which will present content in chart format"
                  }
                ],
                "name": "chartCell",
                "default": null,
                "doc": "The chart cell content. The will be non-null only when all other cell field is null."
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "CHART_CELL": "CHART Notebook cell type. The cell content is chart only.",
                    "QUERY_CELL": "QUERY Notebook cell type. The cell context is query only.",
                    "TEXT_CELL": "TEXT Notebook cell type. The cell context is text only."
                  },
                  "name": "NotebookCellType",
                  "namespace": "com.linkedin.pegasus2avro.notebook",
                  "symbols": [
                    "TEXT_CELL",
                    "QUERY_CELL",
                    "CHART_CELL"
                  ],
                  "doc": "Type of Notebook Cell"
                },
                "name": "type",
                "doc": "The type of this Notebook cell"
              }
            ],
            "doc": "A record of all supported cells for a Notebook. Only one type of cell will be non-null."
          }
        },
        "name": "cells",
        "default": [],
        "doc": "The content of a Notebook which is composed by a list of NotebookCell"
      }
    ],
    "doc": "Content in a Notebook\nNote: This is IN BETA version"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableNotebookProperties"
    },
    "name": "EditableNotebookProperties",
    "namespace": "com.linkedin.pegasus2avro.notebook",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Edited documentation of the Notebook"
      }
    ],
    "doc": "Stores editable changes made to properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines\nNote: This is IN BETA version"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "notebookInfo"
    },
    "name": "NotebookInfo",
    "namespace": "com.linkedin.pegasus2avro.notebook",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "title",
        "doc": "Title of the Notebook"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Detailed description about the Notebook"
      },
      {
        "type": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
        "name": "changeAuditStamps",
        "doc": "Captures information about who created/last modified/deleted this Notebook and when"
      }
    ],
    "doc": "Information about a Notebook\nNote: This is IN BETA version"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableContainerProperties"
    },
    "name": "EditableContainerProperties",
    "namespace": "com.linkedin.pegasus2avro.container",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Asset Container as its received on the DataHub Platform"
      }
    ],
    "doc": "Editable information about an Asset Container as defined on the DataHub Platform"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "container"
    },
    "name": "Container",
    "namespace": "com.linkedin.pegasus2avro.container",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "container"
          ],
          "name": "IsPartOf"
        },
        "Searchable": {
          "addToFilters": true,
          "fieldName": "container",
          "fieldType": "URN",
          "filterNameOverride": "Container",
          "hasValuesFieldName": "hasContainer"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "container"
        ],
        "type": "string",
        "name": "container",
        "doc": "The parent container of an asset"
      }
    ],
    "doc": "Link from an asset to its parent container"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "containerProperties"
    },
    "name": "ContainerProperties",
    "namespace": "com.linkedin.pegasus2avro.container",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the Asset Container"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "qualifiedName",
        "default": null,
        "doc": "Fully-qualified name of the Container"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Asset Container as it exists inside a source system"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD",
          "filterNameOverride": "Environment",
          "queryByDefault": false
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.FabricType"
        ],
        "name": "env",
        "default": null,
        "doc": "Environment for this flow"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "A timestamp documenting when the asset was created in the source Data Platform (not on DataHub)"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "A timestamp documenting when the asset was last modified in the source Data Platform (not on DataHub)"
      }
    ],
    "doc": "Information about a Asset Container as received from a 3rd party source system"
  },
  {
    "type": "record",
    "Aspect": {
      "EntityUrns": [
        "com.linkedin.pegasus2avro.common.CorpuserUrn"
      ],
      "name": "corpUserEditableInfo"
    },
    "name": "CorpUserEditableInfo",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "aboutMe",
        "default": null,
        "doc": "About me section of the user"
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT"
          }
        },
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "teams",
        "default": [],
        "doc": "Teams that the user belongs to e.g. Metadata"
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT"
          }
        },
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "skills",
        "default": [],
        "doc": "Skills that the user possesses e.g. Machine Learning"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": "string",
        "name": "pictureLink",
        "default": "https://raw.githubusercontent.com/datahub-project/datahub/master/datahub-web-react/src/images/default_avatar.png",
        "doc": "A URL which points to a picture which user wants to set as a profile photo"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "fieldType": "WORD_GRAM",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "DataHub-native display name"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "DataHub-native Title, e.g. 'Software Engineer'"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataPlatform"
            ],
            "name": "IsUserOf"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "platforms",
        "default": null,
        "doc": "The platforms that the user commonly works with"
      },
      {
        "Relationship": {
          "entityTypes": [
            "dataHubPersona"
          ],
          "name": "IsPersona"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataHubPersona"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "persona",
        "default": null,
        "doc": "The user's persona type, based on their role"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "slack",
        "default": null,
        "doc": "Slack handle for the user"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "phone",
        "default": null,
        "doc": "Phone number to contact the user"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "email",
        "default": null,
        "doc": "Email address to contact the user"
      },
      {
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "informationSources",
        "default": null,
        "doc": "Information sources that have been used to populate this CorpUserEditableInfo.\nThese include platform resources, such as Slack members or Looker users.\nThey can also refer to other semantic urns in the future."
      }
    ],
    "doc": "Linkedin corp user information that can be edited from UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "roleMembership"
    },
    "name": "RoleMembership",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataHubRole"
            ],
            "name": "IsMemberOfRole"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "roles"
      }
    ],
    "doc": "Carries information about which roles a user or group is assigned to."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpUserStatus"
    },
    "name": "CorpUserStatus",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "status",
        "doc": "Status of the user, e.g. PROVISIONED / ACTIVE / SUSPENDED"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "statusLastModifiedAt",
            "fieldType": "COUNT"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp containing who last modified the status and when."
      }
    ],
    "doc": "The status of the user, e.g. provisioned, active, suspended, etc."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "groupMembership"
    },
    "name": "GroupMembership",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "corpGroup"
            ],
            "name": "IsMemberOfGroup"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "groups"
      }
    ],
    "doc": "Carries information about the CorpGroups a user is in."
  },
  {
    "type": "record",
    "Aspect": {
      "EntityUrns": [
        "com.linkedin.pegasus2avro.common.CorpGroupUrn"
      ],
      "name": "corpGroupInfo"
    },
    "name": "CorpGroupInfo",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "TEXT_PARTIAL",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "The name of the group."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "email",
        "default": null,
        "doc": "email of this group"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "corpuser"
            ],
            "name": "OwnedBy"
          }
        },
        "deprecated": true,
        "Urn": "CorpuserUrn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "admins",
        "doc": "owners of this group\nDeprecated! Replaced by Ownership aspect."
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "corpuser"
            ],
            "name": "IsPartOf"
          }
        },
        "deprecated": true,
        "Urn": "CorpuserUrn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "members",
        "doc": "List of ldap urn in this group.\nDeprecated! Replaced by GroupMembership aspect."
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "corpGroup"
            ],
            "name": "IsPartOf"
          }
        },
        "deprecated": true,
        "Urn": "CorpGroupUrn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "groups",
        "doc": "List of groups in this group.\nDeprecated! This field is unused."
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "A description of the group."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "slack",
        "default": null,
        "doc": "Slack channel for the group"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      }
    ],
    "doc": "Information about a Corp Group ingested from a third party source"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inviteToken"
    },
    "name": "InviteToken",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": "string",
        "name": "token",
        "doc": "The encrypted invite token."
      },
      {
        "Searchable": {
          "fieldName": "role",
          "fieldType": "KEYWORD",
          "hasValuesFieldName": "hasRole"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "role",
        "default": null,
        "doc": "The role that this invite token may be associated with"
      }
    ],
    "doc": "Aspect used to store invite tokens."
  },
  {
    "type": "record",
    "Aspect": {
      "EntityUrns": [
        "com.linkedin.pegasus2avro.common.CorpuserUrn"
      ],
      "name": "corpUserInfo"
    },
    "name": "CorpUserInfo",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN",
          "weightsPerFieldValue": {
            "true": 2.0
          }
        },
        "type": "boolean",
        "name": "active",
        "doc": "Deprecated! Use CorpUserStatus instead. Whether the corpUser is active, ref: https://iwww.corp.linkedin.com/wiki/cf/display/GTSD/Accessing+Active+Directory+via+LDAP+tools"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "displayName of this user ,  e.g.  Hang Zhang(DataHQ)"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "email",
        "default": null,
        "doc": "email address of this user"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "title of this user"
      },
      {
        "Relationship": {
          "entityTypes": [
            "corpuser"
          ],
          "name": "ReportsTo"
        },
        "Searchable": {
          "fieldName": "managerLdap",
          "fieldType": "URN",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.CorpuserUrn"
        },
        "Urn": "CorpuserUrn",
        "entityTypes": [
          "corpuser"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "managerUrn",
        "default": null,
        "doc": "direct manager of this user"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "departmentId",
        "default": null,
        "doc": "department id this user belong to"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "departmentName",
        "default": null,
        "doc": "department name this user belong to"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "firstName",
        "default": null,
        "doc": "first name of this user"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "lastName",
        "default": null,
        "doc": "last name of this user"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "fullName",
        "default": null,
        "doc": "Common name of this user, format is firstName + lastName (split by a whitespace)"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "countryCode",
        "default": null,
        "doc": "two uppercase letters country code. e.g.  US"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN",
          "queryByDefault": false
        },
        "type": [
          "boolean",
          "null"
        ],
        "name": "system",
        "default": false,
        "doc": "Whether the corpUser is a system user."
      }
    ],
    "doc": "Linkedin corp user information"
  },
  {
    "type": "record",
    "Aspect": {
      "EntityUrns": [
        "com.linkedin.pegasus2avro.common.CorpuserUrn"
      ],
      "name": "corpUserCredentials"
    },
    "name": "CorpUserCredentials",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": "string",
        "name": "salt",
        "doc": "Salt used to hash password"
      },
      {
        "type": "string",
        "name": "hashedPassword",
        "doc": "Hashed password generated by concatenating salt and password, then hashing"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "passwordResetToken",
        "default": null,
        "doc": "Optional token needed to reset a user's password. Can only be set by the admin."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "passwordResetTokenExpirationTimeMillis",
        "default": null,
        "doc": "When the password reset token expires."
      }
    ],
    "doc": "Corp user credentials"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpGroupSettings"
    },
    "name": "CorpGroupSettings",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.event.notification.settings.NotificationSettings"
        ],
        "name": "notificationSettings",
        "default": null,
        "doc": "Notification settings for a group"
      }
    ],
    "doc": "Settings that a group can customize through the DataHub UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpGroupEditableInfo"
    },
    "name": "CorpGroupEditableInfo",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "A description of the group"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": "string",
        "name": "pictureLink",
        "default": "https://raw.githubusercontent.com/datahub-project/datahub/master/datahub-web-react/src/images/default_avatar.png",
        "doc": "A URL which points to a picture which user wants to set as the photo for the group"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "slack",
        "default": null,
        "doc": "Slack channel for the group"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "email",
        "default": null,
        "doc": "Email address to contact the group"
      }
    ],
    "doc": "Group information that can be edited from UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "nativeGroupMembership"
    },
    "name": "NativeGroupMembership",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "corpGroup"
            ],
            "name": "IsMemberOfNativeGroup"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "nativeGroups"
      }
    ],
    "doc": "Carries information about the native CorpGroups a user is in."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpUserSettings"
    },
    "name": "CorpUserSettings",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "CorpUserAppearanceSettings",
          "namespace": "com.linkedin.pegasus2avro.identity",
          "fields": [
            {
              "type": [
                "null",
                "boolean"
              ],
              "name": "showSimplifiedHomepage",
              "default": null,
              "doc": "Flag whether the user should see a homepage with only datasets, charts and dashboards. Intended for users\nwho have less operational use cases for the datahub tool."
            },
            {
              "type": [
                "null",
                "boolean"
              ],
              "name": "showThemeV2",
              "default": null,
              "doc": "Flag controlling whether the V2 UI for DataHub is shown."
            }
          ],
          "doc": "Settings for a user around the appearance of their DataHub UI"
        },
        "name": "appearance",
        "doc": "Settings for a user around the appearance of their DataHub UI"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CorpUserViewsSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "defaultView",
                "default": null,
                "doc": "The default View which is selected for the user.\nIf none is chosen, then this value will be left blank."
              }
            ],
            "doc": "Settings related to the 'Views' feature."
          }
        ],
        "name": "views",
        "default": null,
        "doc": "User preferences for the Views feature."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.event.notification.settings.NotificationSettings"
        ],
        "name": "notificationSettings",
        "default": null,
        "doc": "Notification settings for a user"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CorpUserHomePageSettings",
            "namespace": "com.linkedin.pegasus2avro.identity",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "dataHubPageTemplate"
                  ],
                  "name": "HasPersonalPageTemplate"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "dataHubPageTemplate"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "pageTemplate",
                "default": null,
                "doc": "The page template that will be rendered in the UI by default for this user"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "dismissedAnnouncements",
                "default": null,
                "doc": "The list of announcement urns that have been dismissed by the user"
              }
            ],
            "doc": "Settings related to the home page for a user"
          }
        ],
        "name": "homePage",
        "default": null,
        "doc": "Settings related to the home page for a user"
      }
    ],
    "doc": "Settings that a user can customize through the DataHub UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "applicationKey",
      "keyForEntity": "application",
      "entityCategory": "core",
      "entityAspects": [
        "applicationProperties",
        "ownership",
        "glossaryTerms",
        "globalTags",
        "domains",
        "institutionalMemory",
        "status",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes"
      ]
    },
    "name": "ApplicationKey",
    "namespace": "com.linkedin.pegasus2avro.application",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Application."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "applicationProperties"
    },
    "name": "ApplicationProperties",
    "namespace": "com.linkedin.pegasus2avro.application",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Application"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the application"
      }
    ],
    "doc": "The main properties of an Application"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "applications"
    },
    "name": "Applications",
    "namespace": "com.linkedin.pegasus2avro.application",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "application"
            ],
            "name": "AssociatedWith"
          }
        },
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "applications",
            "fieldType": "URN",
            "filterNameOverride": "Application",
            "hasValuesFieldName": "hasApplication"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "applications",
        "doc": "The Applications attached to an Asset"
      }
    ],
    "doc": "Links from an Asset to its Applications"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableDataFlowProperties"
    },
    "name": "EditableDataFlowProperties",
    "namespace": "com.linkedin.pegasus2avro.datajob",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Edited documentation of the data flow"
      }
    ],
    "doc": "Stores editable changes made to properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataJobInputOutput"
    },
    "name": "DataJobInputOutput",
    "namespace": "com.linkedin.pegasus2avro.datajob",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "name": "Consumes"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "inputs",
            "fieldType": "URN",
            "numValuesFieldName": "numInputDatasets",
            "queryByDefault": false
          }
        },
        "deprecated": true,
        "Urn": "DatasetUrn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "inputDatasets",
        "doc": "Input datasets consumed by the data job during processing\nDeprecated! Use inputDatasetEdges instead."
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "inputDatasetEdges/*/created/actor",
            "createdOn": "inputDatasetEdges/*/created/time",
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "name": "Consumes",
            "properties": "inputDatasetEdges/*/properties",
            "updatedActor": "inputDatasetEdges/*/lastModified/actor",
            "updatedOn": "inputDatasetEdges/*/lastModified/time"
          }
        },
        "Searchable": {
          "/*/destinationUrn": {
            "fieldName": "inputDatasetEdges",
            "fieldType": "URN",
            "numValuesFieldName": "numInputDatasets",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.Edge"
          }
        ],
        "name": "inputDatasetEdges",
        "default": null,
        "doc": "Input datasets consumed by the data job during processing"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "isUpstream": false,
            "name": "Produces"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "outputs",
            "fieldType": "URN",
            "numValuesFieldName": "numOutputDatasets",
            "queryByDefault": false
          }
        },
        "deprecated": true,
        "Urn": "DatasetUrn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "outputDatasets",
        "doc": "Output datasets produced by the data job during processing\nDeprecated! Use outputDatasetEdges instead."
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "outputDatasetEdges/*/created/actor",
            "createdOn": "outputDatasetEdges/*/created/time",
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "isUpstream": false,
            "name": "Produces",
            "properties": "outputDatasetEdges/*/properties",
            "updatedActor": "outputDatasetEdges/*/lastModified/actor",
            "updatedOn": "outputDatasetEdges/*/lastModified/time"
          }
        },
        "Searchable": {
          "/*/destinationUrn": {
            "fieldName": "outputDatasetEdges",
            "fieldType": "URN",
            "numValuesFieldName": "numOutputDatasets",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.Edge"
          }
        ],
        "name": "outputDatasetEdges",
        "default": null,
        "doc": "Output datasets produced by the data job during processing"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataJob"
            ],
            "isLineage": true,
            "name": "DownstreamOf"
          }
        },
        "deprecated": true,
        "Urn": "DataJobUrn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "inputDatajobs",
        "default": null,
        "doc": "Input datajobs that this data job depends on\nDeprecated! Use inputDatajobEdges instead."
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "inputDatajobEdges/*/created/actor",
            "createdOn": "inputDatajobEdges/*/created/time",
            "entityTypes": [
              "dataJob"
            ],
            "isLineage": true,
            "name": "DownstreamOf",
            "properties": "inputDatajobEdges/*/properties",
            "updatedActor": "inputDatajobEdges/*/lastModified/actor",
            "updatedOn": "inputDatajobEdges/*/lastModified/time"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.Edge"
          }
        ],
        "name": "inputDatajobEdges",
        "default": null,
        "doc": "Input datajobs that this data job depends on"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "schemaField"
            ],
            "name": "Consumes"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "inputFields",
            "fieldType": "URN",
            "numValuesFieldName": "numInputFields",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "inputDatasetFields",
        "default": null,
        "doc": "Fields of the input datasets used by this job"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "schemaField"
            ],
            "name": "Produces"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "outputFields",
            "fieldType": "URN",
            "numValuesFieldName": "numOutputFields",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "outputDatasetFields",
        "default": null,
        "doc": "Fields of the output datasets this job writes to"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "FineGrainedLineage",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": {
                    "type": "enum",
                    "symbolDocs": {
                      "DATASET": " Indicates that this lineage is originating from upstream dataset(s)",
                      "FIELD_SET": " Indicates that this lineage is originating from upstream field(s)",
                      "NONE": " Indicates that there is no upstream lineage i.e. the downstream field is not a derived field"
                    },
                    "name": "FineGrainedLineageUpstreamType",
                    "namespace": "com.linkedin.pegasus2avro.dataset",
                    "symbols": [
                      "FIELD_SET",
                      "DATASET",
                      "NONE"
                    ],
                    "doc": "The type of upstream entity in a fine-grained lineage"
                  },
                  "name": "upstreamType",
                  "doc": "The type of upstream entity"
                },
                {
                  "Searchable": {
                    "/*": {
                      "fieldName": "fineGrainedUpstreams",
                      "fieldType": "URN",
                      "hasValuesFieldName": "hasFineGrainedUpstreams",
                      "queryByDefault": false
                    }
                  },
                  "Urn": "Urn",
                  "urn_is_array": true,
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "upstreams",
                  "default": null,
                  "doc": "Upstream entities in the lineage"
                },
                {
                  "type": {
                    "type": "enum",
                    "symbolDocs": {
                      "FIELD": " Indicates that the lineage is for a single, specific, downstream field",
                      "FIELD_SET": " Indicates that the lineage is for a set of downstream fields"
                    },
                    "name": "FineGrainedLineageDownstreamType",
                    "namespace": "com.linkedin.pegasus2avro.dataset",
                    "symbols": [
                      "FIELD",
                      "FIELD_SET"
                    ],
                    "doc": "The type of downstream field(s) in a fine-grained lineage"
                  },
                  "name": "downstreamType",
                  "doc": "The type of downstream field(s)"
                },
                {
                  "Urn": "Urn",
                  "urn_is_array": true,
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "downstreams",
                  "default": null,
                  "doc": "Downstream fields in the lineage"
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "transformOperation",
                  "default": null,
                  "doc": "The transform operation applied to the upstream entities to produce the downstream field(s)"
                },
                {
                  "type": "float",
                  "name": "confidenceScore",
                  "default": 1.0,
                  "doc": "The confidence in this lineage between 0 (low confidence) and 1 (high confidence)"
                },
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "query",
                  "default": null,
                  "doc": "The query that was used to generate this lineage. \nPresent only if the lineage was generated from a detected query."
                }
              ],
              "doc": "A fine-grained lineage from upstream fields/datasets to downstream field(s)"
            }
          }
        ],
        "name": "fineGrainedLineages",
        "default": null,
        "doc": "Fine-grained column-level lineages\nNot currently supported in the UI\nUse UpstreamLineage aspect for datasets to express Column Level Lineage for the UI"
      }
    ],
    "doc": "Information about the inputs and outputs of a Data processing job"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataJobInfo"
    },
    "name": "DataJobInfo",
    "namespace": "com.linkedin.pegasus2avro.datajob",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Job name"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Job description"
      },
      {
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "COMMAND": "The command job type is one of the basic built-in types. It runs multiple UNIX commands using java processbuilder.\nUpon execution, Azkaban spawns off a process to run the command.",
              "GLUE": "Glue type is for running AWS Glue job transforms.",
              "HADOOP_JAVA": "Runs a java program with ability to access Hadoop cluster.\nhttps://azkaban.readthedocs.io/en/latest/jobTypes.html#java-job-type",
              "HADOOP_SHELL": "In large part, this is the same Command type. The difference is its ability to talk to a Hadoop cluster\nsecurely, via Hadoop tokens.",
              "HIVE": "Hive type is for running Hive jobs.",
              "PIG": "Pig type is for running Pig jobs.",
              "SQL": "SQL is for running Presto, mysql queries etc"
            },
            "name": "AzkabanJobType",
            "namespace": "com.linkedin.pegasus2avro.datajob.azkaban",
            "symbols": [
              "COMMAND",
              "HADOOP_JAVA",
              "HADOOP_SHELL",
              "HIVE",
              "PIG",
              "SQL",
              "GLUE"
            ],
            "doc": "The various types of support azkaban jobs"
          },
          "string"
        ],
        "name": "type",
        "doc": "Datajob type\n*NOTE**: AzkabanJobType is deprecated. Please use strings instead."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.DataFlowUrn"
        },
        "Urn": "DataFlowUrn",
        "type": [
          "null",
          "string"
        ],
        "name": "flowUrn",
        "default": null,
        "doc": "DataFlow urn that this job is part of"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "A timestamp documenting when the asset was created in the source Data Platform (not on DataHub)"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "A timestamp documenting when the asset was last modified in the source Data Platform (not on DataHub)"
      },
      {
        "deprecated": "Use Data Process Instance model, instead",
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "COMPLETED": "Jobs with successful completion.",
              "FAILED": "Jobs that have failed.",
              "IN_PROGRESS": "Jobs currently running.",
              "SKIPPED": "Jobs that have been skipped.",
              "STARTING": "Jobs being initialized.",
              "STOPPED": "Jobs that have stopped.",
              "STOPPING": "Jobs being stopped.",
              "UNKNOWN": "Jobs with unknown status (either unmappable or unavailable)"
            },
            "name": "JobStatus",
            "namespace": "com.linkedin.pegasus2avro.datajob",
            "symbols": [
              "STARTING",
              "IN_PROGRESS",
              "STOPPING",
              "STOPPED",
              "COMPLETED",
              "FAILED",
              "UNKNOWN",
              "SKIPPED"
            ],
            "doc": "Job statuses"
          }
        ],
        "name": "status",
        "default": null,
        "doc": "Status of the job - Deprecated for Data Process Instance model."
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD",
          "filterNameOverride": "Environment",
          "queryByDefault": false
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.FabricType"
        ],
        "name": "env",
        "default": null,
        "doc": "Environment for this job"
      }
    ],
    "doc": "Information about a Data processing job"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataFlowInfo"
    },
    "name": "DataFlowInfo",
    "namespace": "com.linkedin.pegasus2avro.datajob",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Flow name"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Flow description"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL",
          "queryByDefault": false
        },
        "type": [
          "null",
          "string"
        ],
        "name": "project",
        "default": null,
        "doc": "Optional project/namespace associated with the flow"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "A timestamp documenting when the asset was created in the source Data Platform (not on DataHub)"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "A timestamp documenting when the asset was last modified in the source Data Platform (not on DataHub)"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "KEYWORD",
          "filterNameOverride": "Environment",
          "queryByDefault": false
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.FabricType"
        ],
        "name": "env",
        "default": null,
        "doc": "Environment for this flow"
      }
    ],
    "doc": "Information about a Data processing flow"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "versionInfo"
    },
    "name": "VersionInfo",
    "namespace": "com.linkedin.pegasus2avro.datajob",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "type": "string",
        "name": "version",
        "doc": "The version which can indentify a job version like a commit hash or md5 hash"
      },
      {
        "type": "string",
        "name": "versionType",
        "doc": "The type of the version like git hash or md5 hash"
      }
    ],
    "doc": "Information about a Data processing job"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableDataJobProperties"
    },
    "name": "EditableDataJobProperties",
    "namespace": "com.linkedin.pegasus2avro.datajob",
    "fields": [
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Edited documentation of the data job "
      }
    ],
    "doc": "Stores editable changes made to properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "datahubIngestionCheckpoint",
      "type": "timeseries"
    },
    "name": "DatahubIngestionCheckpoint",
    "namespace": "com.linkedin.pegasus2avro.datajob.datahub",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": "string",
        "name": "pipelineName",
        "doc": "The name of the pipeline that ran ingestion, a stable unique user provided identifier.\n e.g. my_snowflake1-to-datahub."
      },
      {
        "TimeseriesField": {},
        "type": "string",
        "name": "platformInstanceId",
        "doc": "The id of the instance against which the ingestion pipeline ran.\ne.g.: Bigquery project ids, MySQL hostnames etc."
      },
      {
        "type": "string",
        "name": "config",
        "doc": "Json-encoded string representation of the non-secret members of the config ."
      },
      {
        "type": {
          "type": "record",
          "name": "IngestionCheckpointState",
          "namespace": "com.linkedin.pegasus2avro.datajob.datahub",
          "fields": [
            {
              "type": "string",
              "name": "formatVersion",
              "doc": "The version of the state format."
            },
            {
              "type": "string",
              "name": "serde",
              "doc": "The serialization/deserialization protocol."
            },
            {
              "type": [
                "null",
                "bytes"
              ],
              "name": "payload",
              "default": null,
              "doc": "Opaque blob of the state representation."
            }
          ],
          "doc": "The checkpoint state object of a datahub ingestion run for a given job."
        },
        "name": "state",
        "doc": "Opaque blob of the state representation."
      },
      {
        "TimeseriesField": {},
        "type": "string",
        "name": "runId",
        "doc": "The run identifier of this job."
      }
    ],
    "doc": "Checkpoint of a datahub ingestion run for a given job."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "datahubIngestionRunSummary",
      "type": "timeseries"
    },
    "name": "DatahubIngestionRunSummary",
    "namespace": "com.linkedin.pegasus2avro.datajob.datahub",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": "string",
        "name": "pipelineName",
        "doc": "The name of the pipeline that ran ingestion, a stable unique user provided identifier.\n e.g. my_snowflake1-to-datahub."
      },
      {
        "TimeseriesField": {},
        "type": "string",
        "name": "platformInstanceId",
        "doc": "The id of the instance against which the ingestion pipeline ran.\ne.g.: Bigquery project ids, MySQL hostnames etc."
      },
      {
        "TimeseriesField": {},
        "type": "string",
        "name": "runId",
        "doc": "The runId for this pipeline instance."
      },
      {
        "TimeseriesField": {},
        "type": "com.linkedin.pegasus2avro.datajob.JobStatus",
        "name": "runStatus",
        "doc": "Run Status - Succeeded/Skipped/Failed etc."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numWorkUnitsCommitted",
        "default": null,
        "doc": "The number of workunits written to sink."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numWorkUnitsCreated",
        "default": null,
        "doc": "The number of workunits that are produced."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numEvents",
        "default": null,
        "doc": "The number of events produced (MCE + MCP)."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numEntities",
        "default": null,
        "doc": "The total number of entities produced (unique entity urns)."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numAspects",
        "default": null,
        "doc": "The total number of aspects produced across all entities."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numSourceAPICalls",
        "default": null,
        "doc": "Total number of source API calls."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "totalLatencySourceAPICalls",
        "default": null,
        "doc": "Total latency across all source API calls."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numSinkAPICalls",
        "default": null,
        "doc": "Total number of sink API calls."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "totalLatencySinkAPICalls",
        "default": null,
        "doc": "Total latency across all sink API calls."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numWarnings",
        "default": null,
        "doc": "Number of warnings generated."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numErrors",
        "default": null,
        "doc": "Number of errors generated."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "numEntitiesSkipped",
        "default": null,
        "doc": "Number of entities skipped."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "config",
        "default": null,
        "doc": "The non-sensitive key-value pairs of the yaml config used as json string."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "custom_summary",
        "default": null,
        "doc": "Custom value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "softwareVersion",
        "default": null,
        "doc": "The software version of this ingestion."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "systemHostName",
        "default": null,
        "doc": "The hostname the ingestion pipeline ran on."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "operatingSystemName",
        "default": null,
        "doc": "The os the ingestion pipeline ran on."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "numProcessors",
        "default": null,
        "doc": "The number of processors on the host the ingestion pipeline ran on."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "totalMemory",
        "default": null,
        "doc": "The total amount of memory on the host the ingestion pipeline ran on."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "availableMemory",
        "default": null,
        "doc": "The available memory on the host the ingestion pipeline ran on."
      }
    ],
    "doc": "Summary of a datahub ingestion run for a given platform."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubMetricCubeEvent",
      "type": "timeseries"
    },
    "name": "DataHubMetricCubeEvent",
    "namespace": "com.linkedin.pegasus2avro.metric",
    "fields": [
      {
        "type": "long",
        "name": "reportedTimeMillis",
        "doc": "The event or bucket reported time field as epoch at UTC in milli seconds.\nThis must be provided in order to pass validation."
      },
      {
        "TimeseriesField": {},
        "type": "double",
        "name": "measure",
        "doc": "The first measure value - Typically this is the primary metric."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "dim1",
        "default": null,
        "doc": "The first dimension value(s). Array type to support multi-dimensionality."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "dim2",
        "default": null,
        "doc": "The second dimension value(s). Array type to support multi-dimensionality."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "dim3",
        "default": null,
        "doc": "The third dimension value(s). Array type to support multi-dimensionality."
      },
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      }
    ],
    "doc": "A timeseries measure event, e.g. a single observation."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubMetricCubeDefinition"
    },
    "name": "DataHubMetricCubeDefinition",
    "namespace": "com.linkedin.pegasus2avro.metric",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "name",
        "doc": " Display name of the metric cube"
      },
      {
        "Searchable": {},
        "type": "string",
        "name": "type",
        "default": "custom",
        "doc": "A type or category for the metric cube. This is used to categorize the metric cube & for filtering.\n\nThis may be used to group similar types of metrics for a given entity, e.g. 'row_count', 'error_count', etc.\nthat originated in different places."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": " Optional description for the metric"
      },
      {
        "Searchable": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "entity",
        "default": null,
        "doc": " An optional URN for the entity that this metric cube is associated with."
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubMetricCubeOrigin",
          "namespace": "com.linkedin.pegasus2avro.metric",
          "fields": [
            {
              "Searchable": {
                "addToFilters": true,
                "fieldName": "originType",
                "filterNameOverride": "Origin"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "ASSERTION_MONITOR": "Assertion monitor created the metric.",
                  "MANUAL": "Manually created metric, via UI or API."
                },
                "name": "DataHubMetricSourceType",
                "namespace": "com.linkedin.pegasus2avro.metric",
                "symbols": [
                  "MANUAL",
                  "ASSERTION_MONITOR"
                ]
              },
              "name": "type",
              "doc": "Message associated with the incident"
            },
            {
              "Searchable": {
                "fieldType": "URN"
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "type": [
                "null",
                "string"
              ],
              "name": "originUrn",
              "default": null,
              "doc": "Reference to the source that created the metric.\nIn the case of assertion monitor, this is the URN of the assertion monitor."
            }
          ],
          "doc": "Information about the origin of the metric cube"
        },
        "name": "origin",
        "doc": "The origin of the metric cube."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubMetricCubeMeasures",
            "namespace": "com.linkedin.pegasus2avro.metric",
            "fields": [
              {
                "type": {
                  "type": "record",
                  "name": "DataHubMetricCubeMeasure",
                  "namespace": "com.linkedin.pegasus2avro.metric",
                  "fields": [
                    {
                      "type": "string",
                      "name": "name",
                      "doc": " The name of the measure"
                    }
                  ],
                  "doc": "The definition of a metric cube measure."
                },
                "name": "measure",
                "doc": " The first measure being tracked in the cube."
              }
            ],
            "doc": "The definition of the measures of a metric cube.\nA measure is a metric that is being tracked in the cube."
          }
        ],
        "name": "measures",
        "default": null,
        "doc": " Optional - The measures of the cube for display purposes."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubMetricCubeDimensions",
            "namespace": "com.linkedin.pegasus2avro.metric",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "DataHubMetricCubeDimension",
                    "namespace": "com.linkedin.pegasus2avro.metric",
                    "fields": [
                      {
                        "type": "string",
                        "name": "name",
                        "doc": " The name of the dimension"
                      }
                    ],
                    "doc": "The definition of a metric cube dimension."
                  }
                ],
                "name": "dim1",
                "default": null,
                "doc": " The first measure being tracked in the cube."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.metric.DataHubMetricCubeDimension"
                ],
                "name": "dim2",
                "default": null,
                "doc": "Optional: A second measure being tracked in the cube."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.metric.DataHubMetricCubeDimension"
                ],
                "name": "dim3",
                "default": null,
                "doc": "Optional: A third measure being tracked in the cube."
              }
            ],
            "doc": "The dimensions of the cube. This is what you filter and group by.\nThis is a record to allow for future expansion of the dimensions."
          }
        ],
        "name": "dimensions",
        "default": null,
        "doc": "Optional - The dimensions of the cube for display purposes."
      }
    ],
    "doc": "The structure of an individual metric cube in DataHub."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataContractStatus"
    },
    "name": "DataContractStatus",
    "namespace": "com.linkedin.pegasus2avro.datacontract",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ACTIVE": "The data contract is active.",
            "PENDING": "The data contract is pending implementation."
          },
          "name": "DataContractState",
          "namespace": "com.linkedin.pegasus2avro.datacontract",
          "symbols": [
            "ACTIVE",
            "PENDING"
          ]
        },
        "name": "state",
        "doc": "The latest state of the data contract"
      }
    ],
    "doc": "Information about the status of a data contract"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataContractProperties"
    },
    "name": "DataContractProperties",
    "namespace": "com.linkedin.pegasus2avro.datacontract",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataset"
          ],
          "name": "ContractFor"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset"
        ],
        "type": "string",
        "name": "entity",
        "doc": "The entity that this contract is associated with. Currently, we only support Dataset contracts, but\nin the future we may also support Data Product level contracts."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "SlaContract",
              "namespace": "com.linkedin.pegasus2avro.datacontract",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "assertion"
                    ],
                    "name": "IncludesSchemaAssertion"
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "assertion"
                  ],
                  "type": "string",
                  "name": "assertion",
                  "doc": "The assertion representing the SLA contract."
                }
              ],
              "doc": "A contract pertaining to the operational SLAs of a physical data asset"
            }
          }
        ],
        "name": "sla",
        "default": null,
        "doc": "An optional set of SLA contracts. If this is a dataset contract, there will only be one."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesSchemaAssertion"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.datacontract.SchemaContract"
          }
        ],
        "name": "schema",
        "default": null,
        "doc": "An optional set of schema contracts. If this is a dataset contract, there will only be one."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesFreshnessAssertion"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.datacontract.FreshnessContract"
          }
        ],
        "name": "freshness",
        "default": null,
        "doc": "An optional set of FRESHNESS contracts. If this is a dataset contract, there will only be one."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesDataQualityAssertion"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.datacontract.DataQualityContract"
          }
        ],
        "name": "dataQuality",
        "default": null,
        "doc": "An optional set of Data Quality contracts, e.g. table and column level contract constraints."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "rawContract",
        "default": null,
        "doc": "YAML-formatted contract definition"
      }
    ],
    "doc": "Information about a data contract"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataTypeKey",
      "keyForEntity": "dataType",
      "entityCategory": "core",
      "entityAspects": [
        "dataTypeInfo",
        "institutionalMemory",
        "status"
      ],
      "entityDoc": "A type of data element stored within DataHub."
    },
    "name": "DataTypeKey",
    "namespace": "com.linkedin.pegasus2avro.datatype",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for a data type. Usually this will be a unique namespace + data type name."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataTypeInfo"
    },
    "name": "DataTypeInfo",
    "namespace": "com.linkedin.pegasus2avro.datatype",
    "fields": [
      {
        "type": "string",
        "name": "qualifiedName",
        "doc": "The qualified name for the data type. Usually a unique namespace + name, e.g. datahub.string"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "An optional display name for the data type."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "An optional description for the data type."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPageTemplateProperties"
    },
    "name": "DataHubPageTemplateProperties",
    "namespace": "com.linkedin.pegasus2avro.template",
    "fields": [
      {
        "Relationship": {
          "/*/modules/*": {
            "entityTypes": [
              "dataHubPageModule"
            ],
            "name": "ContainedIn"
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "DataHubPageTemplateRow",
            "namespace": "com.linkedin.pegasus2avro.template",
            "fields": [
              {
                "Urn": "Urn",
                "urn_is_array": true,
                "type": {
                  "type": "array",
                  "items": "string"
                },
                "name": "modules",
                "doc": "The modules that exist in this template row"
              }
            ],
            "doc": "A row of modules contained in a template"
          }
        },
        "name": "rows",
        "doc": "The rows of modules contained in this template"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubPageTemplateSurface",
          "namespace": "com.linkedin.pegasus2avro.template",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "HOME_PAGE": "This template applies to what to display on the home page for users."
                },
                "name": "PageTemplateSurfaceType",
                "namespace": "com.linkedin.pegasus2avro.template",
                "symbols": [
                  "HOME_PAGE"
                ]
              },
              "name": "surfaceType",
              "doc": "Where exactly is this template being used"
            }
          ],
          "doc": "Info about the surface area of the product that this template is deployed in"
        },
        "name": "surface",
        "doc": "Info about the surface area of the product that this template is deployed in"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubPageTemplateVisibility",
          "namespace": "com.linkedin.pegasus2avro.template",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "GLOBAL": "This template is used across users",
                  "PERSONAL": "This template is used for individual use only"
                },
                "name": "PageTemplateScope",
                "namespace": "com.linkedin.pegasus2avro.template",
                "symbols": [
                  "PERSONAL",
                  "GLOBAL"
                ]
              },
              "name": "scope",
              "doc": "The scope of this template and who can use/see it"
            }
          ],
          "doc": "Info about the visibility of this template"
        },
        "name": "visibility",
        "doc": "Info about the visibility of this template"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp for when and by whom this template was created"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp for when and by whom this template was last updated"
      }
    ],
    "doc": "The main properties of a DataHub page template"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorStatus"
    },
    "name": "RemoteExecutorStatus",
    "namespace": "com.linkedin.pegasus2avro.executor",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "executorPoolId",
        "doc": "References the 'id' defined in RemoteExecutorPoolKey"
      },
      {
        "type": "string",
        "name": "executorReleaseVersion",
        "doc": " Release Version (Tag) embedded into remote executor image"
      },
      {
        "type": "string",
        "name": "executorAddress",
        "doc": " IP address of the host where remote executor is running"
      },
      {
        "type": "string",
        "name": "executorHostname",
        "doc": "Hostname of the host where remote executor is running"
      },
      {
        "type": "float",
        "name": "executorUptime",
        "doc": "Uptime of the remote executor master process"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN"
        },
        "type": "boolean",
        "name": "executorExpired",
        "default": false,
        "doc": "Flag indicating whether remote executor status record is stale.\nThis means executor no longer sends heartbeats and considered dead."
      },
      {
        "type": "boolean",
        "name": "executorStopped",
        "default": false,
        "doc": "Flag indicating whether remote executor is stopped, and properly reported its termination."
      },
      {
        "type": "boolean",
        "name": "executorEmbedded",
        "default": false,
        "doc": "Flag indicating whether remote executor is embedded into the coordinator pod"
      },
      {
        "type": "boolean",
        "name": "executorInternal",
        "default": false,
        "doc": "Flag indicating whether remote executor is Acryl managed executor"
      },
      {
        "type": "boolean",
        "name": "logDeliveryEnabled",
        "default": false,
        "doc": "Flag indicating whether log delivery is enabled by the customer in the given\nremote executor instance."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "reportedAt",
        "doc": "UTC-based timestamp of the last reported status"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "entityTypeKey",
      "keyForEntity": "entityType",
      "entityCategory": "core",
      "entityAspects": [
        "entityTypeInfo",
        "institutionalMemory",
        "status"
      ],
      "entityDoc": "A type of entity in the DataHub Metadata Model."
    },
    "name": "EntityTypeKey",
    "namespace": "com.linkedin.pegasus2avro.entitytype",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "A unique id for an entity type. Usually this will be a unique namespace + entity name."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "entityTypeInfo"
    },
    "name": "EntityTypeInfo",
    "namespace": "com.linkedin.pegasus2avro.entitytype",
    "fields": [
      {
        "type": "string",
        "name": "qualifiedName",
        "doc": "The fully qualified name for the entity type, which usually consists of a namespace\nplus an identifier or name, e.g. datahub.dataset"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "The display name for the Entity Type."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "A description for the Entity Type: what is it for?"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "logicalParent"
    },
    "name": "LogicalParent",
    "namespace": "com.linkedin.pegasus2avro.logical",
    "fields": [
      {
        "Relationship": {
          "/destinationUrn": {
            "createdActor": "parent/created/actor",
            "createdOn": "parent/created/time",
            "entityTypes": [
              "dataset",
              "schemaField"
            ],
            "name": "PhysicalInstanceOf",
            "properties": "parent/properties",
            "updatedActor": "parent/lastModified/actor",
            "updatedOn": "parent/lastModified/time"
          }
        },
        "Searchable": {
          "/destinationUrn": {
            "addToFilters": true,
            "fieldName": "logicalParent",
            "fieldType": "URN",
            "filterNameOverride": "Physical Instance Of",
            "hasValuesFieldName": "hasLogicalParent",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.Edge",
        "name": "parent"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProductProperties"
    },
    "name": "DataProductProperties",
    "namespace": "com.linkedin.pegasus2avro.dataproduct",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Data Product"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the data product"
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "entityTypes": [
              "dataset",
              "dataJob",
              "dataFlow",
              "chart",
              "dashboard",
              "notebook",
              "container",
              "mlModel",
              "mlModelGroup",
              "mlFeatureTable",
              "mlFeature",
              "mlPrimaryKey"
            ],
            "name": "DataProductContains"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DataProductAssociation",
              "namespace": "com.linkedin.pegasus2avro.dataproduct",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "sourceUrn",
                  "default": null,
                  "doc": "Urn of the source of this relationship edge.\nIf not specified, assumed to be the entity that this aspect belongs to."
                },
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "destinationUrn",
                  "doc": "Urn of the destination of this relationship edge."
                },
                {
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.common.AuditStamp"
                  ],
                  "name": "created",
                  "default": null,
                  "doc": "Audit stamp containing who created this relationship edge and when"
                },
                {
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.common.AuditStamp"
                  ],
                  "name": "lastModified",
                  "default": null,
                  "doc": "Audit stamp containing who last modified this relationship edge and when"
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "map",
                      "values": "string"
                    }
                  ],
                  "name": "properties",
                  "default": null,
                  "doc": "A generic properties bag that allows us to store specific information on this graph edge."
                },
                {
                  "type": "boolean",
                  "name": "outputPort",
                  "default": false,
                  "doc": "If set to true, this asset is an output port of the Data Product."
                }
              ],
              "doc": "Represents an association of assets to a Data Product."
            }
          }
        ],
        "name": "assets",
        "default": null,
        "doc": "A list of assets that are part of this Data Product"
      }
    ],
    "doc": "The main properties of a Data Product"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProductKey",
      "keyForEntity": "dataProduct",
      "entityCategory": "core",
      "entityAspects": [
        "ownership",
        "glossaryTerms",
        "globalTags",
        "domains",
        "applications",
        "dataProductProperties",
        "institutionalMemory",
        "status",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "share",
        "origin"
      ]
    },
    "name": "DataProductKey",
    "namespace": "com.linkedin.pegasus2avro.dataproduct",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Data Product."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "postInfo"
    },
    "name": "PostInfo",
    "namespace": "com.linkedin.pegasus2avro.post",
    "fields": [
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ENTITY_ANNOUNCEMENT": "The Post is an Entity level announcement.",
            "HOME_PAGE_ANNOUNCEMENT": "The Post is an Home Page announcement."
          },
          "name": "PostType",
          "namespace": "com.linkedin.pegasus2avro.post",
          "symbols": [
            "HOME_PAGE_ANNOUNCEMENT",
            "ENTITY_ANNOUNCEMENT"
          ],
          "doc": "Enum defining types of Posts."
        },
        "name": "type",
        "doc": "Type of the Post."
      },
      {
        "type": {
          "type": "record",
          "name": "PostContent",
          "namespace": "com.linkedin.pegasus2avro.post",
          "fields": [
            {
              "Searchable": {
                "fieldType": "TEXT_PARTIAL"
              },
              "type": "string",
              "name": "title",
              "doc": "Title of the post."
            },
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "LINK": "Link content",
                  "TEXT": "Text content"
                },
                "name": "PostContentType",
                "namespace": "com.linkedin.pegasus2avro.post",
                "symbols": [
                  "TEXT",
                  "LINK"
                ],
                "doc": "Enum defining the type of content held in a Post."
              },
              "name": "type",
              "doc": "Type of content held in the post."
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "description",
              "default": null,
              "doc": "Optional description of the post."
            },
            {
              "java": {
                "class": "com.linkedin.pegasus2avro.common.url.Url",
                "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "link",
              "default": null,
              "doc": "Optional link that the post is associated with."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "Media",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "fields": [
                    {
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "IMAGE": "The Media holds an image."
                        },
                        "name": "MediaType",
                        "namespace": "com.linkedin.pegasus2avro.common",
                        "symbols": [
                          "IMAGE"
                        ],
                        "doc": "Enum defining the type of content a Media object holds."
                      },
                      "name": "type",
                      "doc": "Type of content the Media is storing, e.g. image, video, etc."
                    },
                    {
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.url.Url",
                        "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                      },
                      "type": "string",
                      "name": "location",
                      "doc": "Where the media content is stored."
                    }
                  ],
                  "doc": "Carries information about which roles a user is assigned to."
                }
              ],
              "name": "media",
              "default": null,
              "doc": "Optional media that the post is storing"
            }
          ],
          "doc": "Content stored inside a Post."
        },
        "name": "content",
        "doc": "Content stored in the post."
      },
      {
        "Searchable": {
          "fieldType": "COUNT"
        },
        "type": "long",
        "name": "created",
        "doc": "The time at which the post was initially created"
      },
      {
        "Searchable": {
          "fieldType": "COUNT"
        },
        "type": "long",
        "name": "lastModified",
        "doc": "The time at which the post was last modified"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "created",
            "fieldType": "COUNT"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "auditStamp",
        "default": null,
        "doc": "The audit stamp at which the request was last updated"
      },
      {
        "Relationship": {
          "entityTypes": [
            "dataset",
            "schemaField",
            "chart",
            "container",
            "dashboard",
            "dataFlow",
            "dataJob",
            "dataProduct",
            "glossaryTerm",
            "glossaryNode",
            "mlModel",
            "mlFeature",
            "notebook",
            "mlFeatureTable",
            "mlPrimaryKey",
            "mlModelGroup",
            "domain",
            "dataProduct"
          ],
          "name": "PostTarget"
        },
        "Searchable": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset",
          "schemaField",
          "chart",
          "container",
          "dashboard",
          "dataFlow",
          "dataJob",
          "dataProduct",
          "glossaryTerm",
          "glossaryNode",
          "mlModel",
          "mlFeature",
          "notebook",
          "mlFeatureTable",
          "mlPrimaryKey",
          "mlModelGroup",
          "domain",
          "dataProduct"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "target",
        "default": null,
        "doc": "Optional Entity URN that the post is associated with."
      }
    ],
    "doc": "Information about a DataHub Post."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "costFeatures"
    },
    "name": "CostFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "type": [
          "null",
          "float"
        ],
        "name": "costLast30Days",
        "default": null,
        "doc": "Cost over last 30 days. The currency type is set with costCurrencyCode."
      },
      {
        "type": [
          "null",
          {
            "type": "enum",
            "name": "CostCurrencyCode",
            "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
            "symbols": [
              "USD"
            ],
            "doc": " Currency code for the cost "
          }
        ],
        "name": "costCurrencyCode",
        "default": null,
        "doc": "The currency code for the given cost."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "lineageFeatures"
    },
    "name": "LineageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "upstreamCountFeature",
          "fieldType": "COUNT"
        },
        "type": "int",
        "name": "upstreamCount",
        "doc": "Cached number of entities related by lineage, upstream."
      },
      {
        "Searchable": {
          "fieldName": "downstreamCountFeature",
          "fieldType": "COUNT"
        },
        "type": "int",
        "name": "downstreamCount",
        "doc": "Cached number of entities related by lineage, downstream."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "computedAt",
        "doc": "Record of when and how lineage features were computed."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "usageFeatures"
    },
    "name": "UsageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "viewCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "viewCountLast30Days",
        "default": null,
        "doc": "Usage count in the last 30 days\nThis field is for Dashboard usage"
      },
      {
        "Searchable": {
          "fieldName": "viewCountFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "viewCountTotal",
        "default": null,
        "doc": "View count total \nThis field is for Dashboard usage"
      },
      {
        "Searchable": {
          "fieldName": "viewCountPercentileLast30Days",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "viewCountPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dashboard views based on the the last 30 days view count on a platform"
      },
      {
        "Searchable": {
          "fieldName": "usageCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "usageCountLast30Days",
        "default": null,
        "doc": "Deprecated - Use queryCountLast30Days instead. Usage count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountLast30Days",
        "default": null,
        "doc": "Dataset Query count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "uniqueUserCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "uniqueUserCountLast30Days",
        "default": null,
        "doc": "Unique user count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "writeCountLast30DaysFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "writeCountLast30Days",
        "default": null,
        "doc": "Write (insert/update) count in the last 30 days"
      },
      {
        "Searchable": {
          "fieldName": "queryCountPercentileLast30Days",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "queryCountPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dataset based on the the last 30 days usage count on a platform"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "queryCountRankLast30Days",
        "default": null,
        "doc": "Overall rank of the dataset based on the the last 30 days usage count on a platform\nIt returns one plus the number of rows proceeding or equals to the current row in the ordering. "
      },
      {
        "Searchable": {
          "fieldName": "uniqueUserPercentileLast30Days",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dataset based on the the last 30 days of select queries by unique users on a platform"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "uniqueUserRankLast30Days",
        "default": null,
        "doc": "Overall rank of the dataset based on the the last 30 days of select queries by unique users on a platform\nIt returns one plus the number of rows proceeding or equals to the current row in the ordering. "
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "writeCountPercentileLast30Days",
        "default": null,
        "doc": "Percentile rank of the dataset based on the the last 30 days insert/update operation count on a platform"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "writeCountRankLast30Days",
        "default": null,
        "doc": "Overall rank of the dataset based on the the last 30 days insert/update operation count on a platform\nIt returns one plus the number of rows proceeding or equals to the current row in the ordering. "
      },
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "topUsersLast30Days",
            "fieldType": "URN",
            "filterNameOverride": "Top users last 30 days",
            "hasValuesFieldName": "hasTopUsersLast30Days",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "topUsersLast30Days",
        "default": null,
        "doc": "Ranked list of the top 10 users in past 30 days. \nIt is ranked by highest usage descending."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesPercentile",
        "default": null,
        "doc": "Deprecated - use StorageFeatures.pdl instead. The percentile of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesRank",
        "default": null,
        "doc": "Deprecated - use StorageFeatures.pdl instead. The percentile of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "rowCountPercentile",
        "default": null,
        "doc": "Deprecated - use StorageFeatures.pdl instead. The percentile of row count relative to other assets from the data platform instance."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "usageSearchScoreMultiplier",
        "default": null,
        "doc": "Multiplier for search score coming from usage"
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "usageFreshnessScoreMultiplier",
        "default": null,
        "doc": "Multiplier for search score coming from freshness"
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "customDatahubScoreMultiplier",
        "default": null,
        "doc": "Multiplier for search score coming from property based adjustment- e.g. URN"
      },
      {
        "Searchable": {
          "fieldName": "combinedSearchRankingMultiplier"
        },
        "type": [
          "null",
          "float"
        ],
        "name": "combinedSearchRankingMultiplier",
        "default": null,
        "doc": "Combined score of all multipliers"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "storageFeatures"
    },
    "name": "StorageFeatures",
    "namespace": "com.linkedin.pegasus2avro.metadata.search.features",
    "fields": [
      {
        "Searchable": {
          "fieldName": "sizeInBytesFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytes",
        "default": null,
        "doc": "The total size in bytes."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesPercentile",
        "default": null,
        "doc": "The percentile of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytesRank",
        "default": null,
        "doc": "The absolute rank of size in bytes relative to other assets from the data plaform instance."
      },
      {
        "Searchable": {
          "fieldName": "rowCountFeature",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "rowCount",
        "default": null,
        "doc": "The total row count."
      },
      {
        "Searchable": {
          "fieldName": "rowCountPercentile",
          "fieldType": "COUNT"
        },
        "type": [
          "null",
          "int"
        ],
        "name": "rowCountPercentile",
        "default": null,
        "doc": "The percentile of the total row / document count relative to other assets from the data platform instance."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "rowCountRank",
        "default": null,
        "doc": "The absolute rank of size in bytes relative to other assets from the data plaform instance."
      }
    ]
  },
  "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
  {
    "type": "record",
    "Aspect": {
      "name": "recommendationModule"
    },
    "name": "RecommendationModule",
    "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
    "fields": [
      {
        "type": "string",
        "name": "title",
        "doc": "Title of the module to display"
      },
      {
        "type": "string",
        "name": "moduleId",
        "doc": "Unique id of the module being recommended"
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "DOMAIN_SEARCH_LIST": "List of domains to search",
            "ENTITY_NAME_LIST": "Simple list of entities",
            "GLOSSARY_TERM_SEARCH_LIST": "Glossary term search list",
            "PLATFORM_SEARCH_LIST": "List of platforms to search",
            "SEARCH_QUERY_LIST": "A list of recommended searches",
            "TAG_SEARCH_LIST": "Tag search list"
          },
          "name": "RecommendationRenderType",
          "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
          "symbols": [
            "ENTITY_NAME_LIST",
            "PLATFORM_SEARCH_LIST",
            "TAG_SEARCH_LIST",
            "GLOSSARY_TERM_SEARCH_LIST",
            "SEARCH_QUERY_LIST",
            "DOMAIN_SEARCH_LIST"
          ],
          "doc": "Enum that defines how the modules should be rendered.\nThere should be two frontend implementation of large and small modules per type."
        },
        "name": "renderType",
        "doc": "Type of rendering that defines how the module should be rendered"
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "RecommendationContent",
            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
            "fields": [
              {
                "type": "string",
                "name": "value",
                "doc": "String representation of content"
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "entity",
                "default": null,
                "doc": "Entity being recommended. Empty if the content being recommended is not an entity"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "RecommendationParams",
                    "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                    "fields": [
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "SearchParams",
                            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                            "fields": [
                              {
                                "type": {
                                  "type": "array",
                                  "items": "string"
                                },
                                "name": "types",
                                "default": [],
                                "doc": "Entity types to be searched. If this is not provided, all entities will be searched."
                              },
                              {
                                "type": "string",
                                "name": "query",
                                "doc": "Search query"
                              },
                              {
                                "type": {
                                  "type": "array",
                                  "items": "com.linkedin.pegasus2avro.metadata.query.filter.Criterion"
                                },
                                "name": "filters",
                                "default": [],
                                "doc": "Filters"
                              }
                            ],
                            "doc": "Context to define the search recommendations"
                          }
                        ],
                        "name": "searchParams",
                        "default": null,
                        "doc": "Context to define the search recommendations"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "EntityProfileParams",
                            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                            "fields": [
                              {
                                "java": {
                                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                },
                                "Urn": "Urn",
                                "type": "string",
                                "name": "urn",
                                "doc": "Urn of the entity being shown"
                              }
                            ],
                            "doc": "Context to define the entity profile page"
                          }
                        ],
                        "name": "entityProfileParams",
                        "default": null,
                        "doc": "Context to define the entity profile page"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "ContentParams",
                            "namespace": "com.linkedin.pegasus2avro.metadata.recommendation",
                            "fields": [
                              {
                                "type": "long",
                                "name": "count",
                                "doc": "Number of entities corresponding to the recommended content"
                              }
                            ],
                            "doc": "Params about the recommended content"
                          }
                        ],
                        "name": "contentParams",
                        "default": null,
                        "doc": "Context about the recommendation"
                      }
                    ],
                    "doc": "Parameters required to render a recommendation of a given type"
                  }
                ],
                "name": "params",
                "default": null,
                "doc": "Additional context required to generate the the recommendation"
              }
            ],
            "doc": "Content to display within each recommendation module"
          }
        },
        "name": "content",
        "doc": "List of content to display inside the module"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubConnectionKey",
      "keyForEntity": "dataHubConnection",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubConnectionDetails",
        "dataPlatformInstance",
        "status"
      ]
    },
    "name": "DataHubConnectionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "A unique identifier for the connection."
      }
    ],
    "doc": "Key for a Connection"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPolicyKey",
      "keyForEntity": "dataHubPolicy",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubPolicyInfo"
      ],
      "entityDoc": "DataHub Policies represent access policies granted to users or groups on metadata operations like edit, view etc."
    },
    "name": "DataHubPolicyKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub access policy record. Generated on the server side at policy creation time."
      }
    ],
    "doc": "Key for a DataHub Policy"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubSecretKey",
      "keyForEntity": "dataHubSecret",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubSecretValue"
      ]
    },
    "name": "DataHubSecretKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Secret"
      }
    ],
    "doc": "Key for a DataHub Secret"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "ownershipTypeKey",
      "keyForEntity": "ownershipType",
      "entityCategory": "core",
      "entityAspects": [
        "ownershipTypeInfo",
        "status"
      ],
      "entityDoc": "Ownership Type represents a user-created ownership category for a person or group who is responsible for an asset."
    },
    "name": "OwnershipTypeKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique ID for the data ownership type name i.e. Business Owner, Data Steward, Technical Owner, etc..\nShould be separate from the name used for displaying an Ownership Type."
      }
    ],
    "doc": "Key for a Ownership Type"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataPlatformInstanceKey",
      "keyForEntity": "dataPlatformInstance",
      "entityCategory": "internal",
      "entityAspects": [
        "dataPlatformInstanceProperties",
        "ownership",
        "globalTags",
        "institutionalMemory",
        "deprecation",
        "status",
        "icebergWarehouseInfo"
      ]
    },
    "name": "DataPlatformInstanceKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "platform",
        "doc": "Data platform urn associated with the instance"
      },
      {
        "type": "string",
        "name": "instance",
        "doc": "Unique instance id"
      }
    ],
    "doc": "Key for a Dataset"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorKey",
      "keyForEntity": "monitor",
      "entityCategory": "core",
      "entityAspects": [
        "monitorInfo",
        "monitorTimeseriesState",
        "monitorAnomalyEvent"
      ]
    },
    "name": "MonitorKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataset"
          ],
          "name": "Monitors"
        },
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset"
        ],
        "type": "string",
        "name": "entity",
        "doc": "The entity being monitored"
      },
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the monitor."
      }
    ],
    "doc": "Key for a Monitor"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataPlatformKey",
      "keyForEntity": "dataPlatform",
      "entityCategory": "core",
      "entityAspects": [
        "dataPlatformInfo"
      ]
    },
    "name": "DataPlatformKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "platformName",
        "doc": "Data platform name i.e. hdfs, oracle, espresso"
      }
    ],
    "doc": "Key for a Data Platform"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataFlowKey",
      "keyForEntity": "dataFlow",
      "entityCategory": "core",
      "entityAspects": [
        "domains",
        "applications",
        "deprecation",
        "versionInfo",
        "dataFlowInfo",
        "editableDataFlowProperties",
        "ownership",
        "status",
        "globalTags",
        "browsePaths",
        "glossaryTerms",
        "institutionalMemory",
        "dataPlatformInstance",
        "container",
        "browsePathsV2",
        "structuredProperties",
        "incidentsSummary",
        "forms",
        "subTypes",
        "testResults",
        "proposals",
        "share",
        "origin",
        "lineageFeatures",
        "documentation"
      ]
    },
    "name": "DataFlowKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "orchestrator",
        "doc": "Workflow manager like azkaban, airflow which orchestrates the flow"
      },
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "flowId",
        "doc": "Unique Identifier of the data flow"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "cluster",
        "doc": "Cluster where the flow is executed"
      }
    ],
    "doc": "Key for a Data Flow"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "monitorSuiteKey",
      "keyForEntity": "monitorSuite",
      "entityCategory": "core",
      "entityAspects": [
        "monitorSuiteInfo"
      ]
    },
    "name": "MonitorSuiteKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the monitor suite."
      }
    ],
    "doc": "Key for a monitor suite."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "postKey",
      "keyForEntity": "post",
      "entityCategory": "core",
      "entityAspects": [
        "postInfo",
        "subTypes",
        "status"
      ]
    },
    "name": "PostKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub Post record. Generated on the server side at Post creation time."
      }
    ],
    "doc": "Key for a Post."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionRequestKey",
      "keyForEntity": "actionRequest",
      "entityCategory": "internal",
      "entityAspects": [
        "actionRequestStatus",
        "actionRequestInfo"
      ]
    },
    "name": "ActionRequestKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id"
      }
    ],
    "doc": "Key for an ActionRequest"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "constraintKey",
      "keyForEntity": "constraint",
      "entityCategory": "_unset_",
      "entityAspects": [
        "constraintInfo"
      ]
    },
    "name": "ConstraintKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id"
      }
    ],
    "doc": "Key for a Constraint"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "glossaryTermKey",
      "keyForEntity": "glossaryTerm",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTermInfo",
        "glossaryRelatedTerms",
        "institutionalMemory",
        "schemaMetadata",
        "ownership",
        "deprecation",
        "domains",
        "applications",
        "status",
        "browsePaths",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "share",
        "origin"
      ]
    },
    "name": "GlossaryTermKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldName": "id",
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "The term name, which serves as a unique id"
      }
    ],
    "doc": "Key for a GlossaryTerm"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "notebookKey",
      "keyForEntity": "notebook",
      "entityCategory": "_unset_",
      "entityAspects": [
        "notebookInfo",
        "notebookContent",
        "editableNotebookProperties",
        "ownership",
        "status",
        "globalTags",
        "glossaryTerms",
        "browsePaths",
        "institutionalMemory",
        "domains",
        "applications",
        "subTypes",
        "dataPlatformInstance",
        "browsePathsV2",
        "testResults",
        "proposals",
        "share",
        "origin",
        "documentation"
      ],
      "entityDoc": "Notebook represents a combination of query, text, chart and etc. This is in BETA version"
    },
    "name": "NotebookKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "notebookTool",
        "doc": "The name of the Notebook tool such as QueryBook, etc."
      },
      {
        "type": "string",
        "name": "notebookId",
        "doc": "Unique id for the Notebook. This id should be globally unique for a Notebook tool even when there are multiple deployments of it. As an example, Notebook URL could be used here for QueryBook such as 'querybook.com/notebook/773'"
      }
    ],
    "doc": "Key for a Notebook"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "genericEntityKey"
    },
    "name": "GenericEntityKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for this entity. Generated on the server side at entity creation time.\nFormat is '{namespace}-{guid}'. I.e., 'slack-dXJuOmxpOmRhdGFzZXQ6K'"
      }
    ],
    "doc": "Key for a Generic Entity.\nThese entities are for miscelaneous data that is used in non-core parts of the system.\nFor instance, if we want to persist & retrieve data from auxiliary integrations such as Slack or Microsoft Teams."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlFeatureTableKey",
      "keyForEntity": "mlFeatureTable",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlFeatureTableProperties",
        "domains",
        "applications",
        "mlFeatureTableProperties",
        "ownership",
        "institutionalMemory",
        "status",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "proposals",
        "share",
        "origin",
        "lineageFeatures",
        "documentation"
      ]
    },
    "name": "MLFeatureTableKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataPlatform"
          ],
          "name": "SourcePlatform"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataPlatform"
        ],
        "type": "string",
        "name": "platform",
        "doc": "Data platform urn associated with the feature table"
      },
      {
        "Searchable": {
          "boostScore": 8.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the feature table"
      }
    ],
    "doc": "Key for an MLFeatureTable"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "datasetKey",
      "keyForEntity": "dataset",
      "entityCategory": "core",
      "entityAspects": [
        "viewProperties",
        "subTypes",
        "datasetProfile",
        "datasetUsageStatistics",
        "operation",
        "domains",
        "applications",
        "schemaMetadata",
        "status",
        "container",
        "deprecation",
        "testResults",
        "siblings",
        "embed",
        "incidentsSummary",
        "datasetProperties",
        "editableDatasetProperties",
        "datasetDeprecation",
        "datasetUpstreamLineage",
        "upstreamLineage",
        "institutionalMemory",
        "ownership",
        "editableSchemaMetadata",
        "globalTags",
        "glossaryTerms",
        "browsePaths",
        "dataPlatformInstance",
        "browsePathsV2",
        "access",
        "structuredProperties",
        "forms",
        "partitionsSummary",
        "versionProperties",
        "icebergCatalogInfo",
        "logicalParent",
        "inferredNeighbors",
        "inferredMetadata",
        "schemaFieldsInferredMetadata",
        "schemaFieldsInferredNeighbors",
        "assertionsSummary",
        "usageFeatures",
        "storageFeatures",
        "lineageFeatures",
        "proposals",
        "schemaProposals",
        "anomaliesSummary",
        "share",
        "origin",
        "documentation",
        "entityInferenceMetadata"
      ],
      "entityDoc": "Datasets represent logical or physical data assets stored or represented in various data platforms. Tables, Views, Streams are all instances of datasets."
    },
    "name": "DatasetKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "platform",
        "doc": "Data platform urn associated with the dataset"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldName": "id",
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Unique guid for dataset"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "TEXT_PARTIAL",
          "filterNameOverride": "Environment",
          "queryByDefault": false
        },
        "type": "com.linkedin.pegasus2avro.common.FabricType",
        "name": "origin",
        "doc": "Fabric type where dataset belongs to or where it was generated."
      }
    ],
    "doc": "Key for a Dataset"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "anomalyKey"
    },
    "name": "AnomalyKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the anomaly. Generated on the server side at anomaly creation time."
      }
    ],
    "doc": "Key for an asset Anomaly"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "containerKey",
      "keyForEntity": "container",
      "entityCategory": "core",
      "entityAspects": [
        "containerProperties",
        "editableContainerProperties",
        "dataPlatformInstance",
        "subTypes",
        "ownership",
        "deprecation",
        "container",
        "globalTags",
        "glossaryTerms",
        "institutionalMemory",
        "browsePaths",
        "status",
        "domains",
        "applications",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "access",
        "proposals",
        "share",
        "origin",
        "documentation"
      ],
      "entityDoc": "A container of related data assets."
    },
    "name": "ContainerKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "guid",
        "default": null,
        "doc": "Unique guid for container"
      }
    ],
    "doc": "Key for an Asset Container"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubUpgradeKey",
      "keyForEntity": "dataHubUpgrade",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubUpgradeRequest",
        "dataHubUpgradeResult"
      ]
    },
    "name": "DataHubUpgradeKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id"
      }
    ],
    "doc": "Key for a DataHubUpgrade"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dashboardKey",
      "keyForEntity": "dashboard",
      "entityCategory": "_unset_",
      "entityAspects": [
        "domains",
        "applications",
        "container",
        "deprecation",
        "dashboardUsageStatistics",
        "inputFields",
        "subTypes",
        "embed",
        "dashboardInfo",
        "editableDashboardProperties",
        "ownership",
        "status",
        "globalTags",
        "browsePaths",
        "glossaryTerms",
        "institutionalMemory",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "incidentsSummary",
        "forms",
        "testResults",
        "usageFeatures",
        "lineageFeatures",
        "proposals",
        "share",
        "origin",
        "documentation"
      ]
    },
    "name": "DashboardKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "boostScore": 4.0,
          "fieldName": "tool",
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "dashboardTool",
        "doc": "The name of the dashboard tool such as looker, redash etc."
      },
      {
        "type": "string",
        "name": "dashboardId",
        "doc": "Unique id for the dashboard. This id should be globally unique for a dashboarding tool even when there are multiple deployments of it. As an example, dashboard URL could be used here for Looker such as 'looker.linkedin.com/dashboards/1234'"
      }
    ],
    "doc": "Key for a Dashboard"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubOpenAPISchemaKey",
      "keyForEntity": "dataHubOpenAPISchema",
      "entityCategory": "internal",
      "entityAspects": [
        "systemMetadata"
      ],
      "entityDoc": "Contains aspects which are used in OpenAPI requests/responses which are not otherwise present in the data model."
    },
    "name": "DataHubOpenAPISchemaKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub OpenAPI schema."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "erModelRelationshipKey",
      "keyForEntity": "erModelRelationship",
      "entityCategory": "_unset_",
      "entityAspects": [
        "erModelRelationshipProperties",
        "editableERModelRelationshipProperties",
        "institutionalMemory",
        "ownership",
        "status",
        "globalTags",
        "glossaryTerms",
        "lineageFeatures"
      ],
      "entityDoc": "ER Model Relationship of  Dataset Fields"
    },
    "name": "ERModelRelationshipKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id"
      }
    ],
    "doc": "Key for a ERModelRelationship"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formKey",
      "keyForEntity": "form",
      "entityCategory": "core",
      "entityAspects": [
        "formInfo",
        "dynamicFormAssignment",
        "ownership",
        "formSettings",
        "formAssignmentStatus"
      ]
    },
    "name": "FormKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the form."
      }
    ],
    "doc": "Key for a Form"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "recommendationModuleKey",
      "keyForEntity": "recommendationModule",
      "entityCategory": "_unset_",
      "entityAspects": [
        "recommendationModule"
      ]
    },
    "name": "RecommendationModuleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "moduleId",
        "doc": "Module ID for the recommendation module"
      },
      {
        "type": "string",
        "name": "identifier",
        "doc": "Identifier for the specific module"
      }
    ],
    "doc": "Key for a recommendation module"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "incidentKey",
      "keyForEntity": "incident",
      "entityCategory": "core",
      "entityAspects": [
        "incidentInfo",
        "globalTags",
        "incidentNotificationDetails",
        "incidentActivityEvent"
      ],
      "entityDoc": "An incident for an asset."
    },
    "name": "IncidentKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the incident. Generated on the server side at incident creation time."
      }
    ],
    "doc": "Key for an asset Incident"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessKey",
      "keyForEntity": "dataProcess",
      "entityCategory": "_unset_",
      "entityAspects": [
        "dataProcessInfo",
        "ownership",
        "status",
        "testResults",
        "subTypes"
      ]
    },
    "name": "DataProcessKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "boostScore": 4.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Process name i.e. an ETL job name"
      },
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "orchestrator",
        "doc": "Standardized Orchestrator where data process is defined.\nTODO: Migrate towards something that can be validated like DataPlatform urn"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL",
          "queryByDefault": false
        },
        "type": "com.linkedin.pegasus2avro.common.FabricType",
        "name": "origin",
        "doc": "Fabric type where dataset belongs to or where it was generated."
      }
    ],
    "doc": "Key for a Data Process"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelKey",
      "keyForEntity": "mlModel",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlModelProperties",
        "domains",
        "applications",
        "ownership",
        "mlModelProperties",
        "intendedUse",
        "mlModelFactorPrompts",
        "mlModelMetrics",
        "mlModelEvaluationData",
        "mlModelTrainingData",
        "mlModelQuantitativeAnalyses",
        "mlModelEthicalConsiderations",
        "mlModelCaveatsAndRecommendations",
        "institutionalMemory",
        "sourceCode",
        "status",
        "cost",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "versionProperties",
        "subTypes",
        "container",
        "proposals",
        "share",
        "origin",
        "lineageFeatures",
        "documentation",
        "incidentsSummary"
      ]
    },
    "name": "MLModelKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "platform",
        "doc": "Standardized platform urn for the model"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the MLModel"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "TEXT_PARTIAL",
          "filterNameOverride": "Environment",
          "queryByDefault": false
        },
        "type": "com.linkedin.pegasus2avro.common.FabricType",
        "name": "origin",
        "doc": "Fabric type where model belongs to or where it was generated"
      }
    ],
    "doc": "Key for an ML model"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "domainKey",
      "keyForEntity": "domain",
      "entityCategory": "core",
      "entityAspects": [
        "domainProperties",
        "institutionalMemory",
        "ownership",
        "structuredProperties",
        "forms",
        "testResults",
        "displayProperties",
        "share",
        "origin"
      ],
      "entityDoc": "A data domain within an organization."
    },
    "name": "DomainKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the domain. Should be separate from the name used for displaying a Domain."
      }
    ],
    "doc": "Key for an Asset Domain"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "testKey",
      "keyForEntity": "test",
      "entityCategory": "core",
      "entityAspects": [
        "testInfo",
        "status",
        "batchTestRunEvent"
      ],
      "entityDoc": "A DataHub test"
    },
    "name": "TestKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the test"
      }
    ],
    "doc": "Key for a Test"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceKey",
      "keyForEntity": "dataProcessInstance",
      "entityCategory": "_unset_",
      "entityAspects": [
        "dataProcessInstanceInput",
        "dataProcessInstanceOutput",
        "dataProcessInstanceProperties",
        "dataProcessInstanceRelationships",
        "dataProcessInstanceRunEvent",
        "status",
        "testResults",
        "dataPlatformInstance",
        "subTypes",
        "container",
        "mlTrainingRunProperties",
        "lineageFeatures"
      ],
      "entityDoc": "DataProcessInstance represents an instance of a datajob/jobflow run"
    },
    "name": "DataProcessInstanceKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataProcessInstance . Should be separate from the name used for displaying a DataProcessInstance."
      }
    ],
    "doc": "Key for an Asset DataProcessInstance"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inviteTokenKey",
      "keyForEntity": "inviteToken",
      "entityCategory": "internal",
      "entityAspects": [
        "inviteToken"
      ]
    },
    "name": "InviteTokenKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the invite token."
      }
    ],
    "doc": "Key for an InviteToken."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubIngestionSourceKey",
      "keyForEntity": "dataHubIngestionSource",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubIngestionSourceInfo",
        "ownership"
      ]
    },
    "name": "DataHubIngestionSourceKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Ingestion Source, either generated or provided"
      }
    ],
    "doc": "Key for a DataHub ingestion source"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "queryKey",
      "keyForEntity": "query",
      "entityCategory": "core",
      "entityAspects": [
        "queryProperties",
        "querySubjects",
        "queryUsageStatistics",
        "status",
        "dataPlatformInstance",
        "subTypes",
        "queryUsageFeatures",
        "lineageFeatures"
      ]
    },
    "name": "QueryKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Query."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRoleKey",
      "keyForEntity": "dataHubRole",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubRoleInfo"
      ]
    },
    "name": "DataHubRoleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub role record. Generated on the server side at role creation time."
      }
    ],
    "doc": "Key for a DataHub Role"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelGroupKey",
      "keyForEntity": "mlModelGroup",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlModelGroupProperties",
        "domains",
        "applications",
        "mlModelGroupProperties",
        "ownership",
        "status",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "container",
        "institutionalMemory",
        "proposals",
        "share",
        "origin",
        "lineageFeatures",
        "documentation"
      ]
    },
    "name": "MLModelGroupKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "platform",
        "doc": "Standardized platform urn for the model group"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the MLModelGroup"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL",
          "queryByDefault": false
        },
        "type": "com.linkedin.pegasus2avro.common.FabricType",
        "name": "origin",
        "doc": "Fabric type where model group belongs to or where it was generated"
      }
    ],
    "doc": "Key for an ML model group"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubStepStateKey",
      "keyForEntity": "dataHubStepState",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubStepStateProperties"
      ]
    },
    "name": "DataHubStepStateKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the state"
      }
    ],
    "doc": "Key for a DataHub Step State"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldKey",
      "keyForEntity": "schemaField",
      "entityCategory": "core",
      "entityAspects": [
        "schemafieldInfo",
        "structuredProperties",
        "forms",
        "businessAttributes",
        "status",
        "schemaFieldAliases",
        "documentation",
        "testResults",
        "deprecation",
        "subTypes",
        "logicalParent",
        "schemaFieldProfile",
        "lineageFeatures"
      ]
    },
    "name": "SchemaFieldKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "parent",
        "doc": "Parent associated with the schema field"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "fieldPath",
        "doc": "fieldPath identifying the schema field"
      }
    ],
    "doc": "Key for a SchemaField"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataJobKey",
      "keyForEntity": "dataJob",
      "entityCategory": "_unset_",
      "entityAspects": [
        "datahubIngestionRunSummary",
        "datahubIngestionCheckpoint",
        "domains",
        "applications",
        "deprecation",
        "versionInfo",
        "dataJobInfo",
        "dataJobInputOutput",
        "editableDataJobProperties",
        "ownership",
        "status",
        "globalTags",
        "browsePaths",
        "glossaryTerms",
        "institutionalMemory",
        "dataPlatformInstance",
        "container",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "subTypes",
        "incidentsSummary",
        "testResults",
        "dataTransformLogic",
        "proposals",
        "anomaliesSummary",
        "share",
        "origin",
        "lineageFeatures",
        "documentation"
      ]
    },
    "name": "DataJobKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataFlow"
          ],
          "name": "IsPartOf"
        },
        "Searchable": {
          "fieldName": "dataFlow",
          "fieldType": "URN_PARTIAL",
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataFlow"
        ],
        "type": "string",
        "name": "flow",
        "doc": "Standardized data processing flow urn representing the flow for the job"
      },
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "jobId",
        "doc": "Unique Identifier of the data job"
      }
    ],
    "doc": "Key for a Data Job"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "linkPreviewKey",
      "keyForEntity": "linkPreview",
      "entityCategory": "internal",
      "entityAspects": [
        "linkPreviewInfo"
      ]
    },
    "name": "LinkPreviewKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Link Preview, derived by encoding the URL itself."
      }
    ],
    "doc": "Key for an Link Preview"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataContractKey",
      "keyForEntity": "dataContract",
      "entityCategory": "core",
      "entityAspects": [
        "dataContractProperties",
        "dataContractStatus",
        "status",
        "structuredProperties"
      ]
    },
    "name": "DataContractKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the contract"
      }
    ],
    "doc": "Key for a Data Contract"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpGroupKey",
      "keyForEntity": "corpGroup",
      "entityCategory": "_unset_",
      "entityAspects": [
        "corpGroupInfo",
        "corpGroupEditableInfo",
        "globalTags",
        "ownership",
        "status",
        "origin",
        "roleMembership",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "corpGroupSettings",
        "share",
        "formNotifications"
      ],
      "entityDoc": "CorpGroup represents an identity of a group of users in the enterprise."
    },
    "name": "CorpGroupKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "queryByDefault": true
        },
        "type": "string",
        "name": "name",
        "doc": "The URL-encoded name of the AD/LDAP group. Serves as a globally unique identifier within DataHub."
      }
    ],
    "doc": "Key for a CorpGroup"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelDeploymentKey",
      "keyForEntity": "mlModelDeployment",
      "entityCategory": "core",
      "entityAspects": [
        "mlModelDeploymentProperties",
        "ownership",
        "status",
        "deprecation",
        "globalTags",
        "dataPlatformInstance",
        "testResults",
        "container"
      ]
    },
    "name": "MLModelDeploymentKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "platform",
        "doc": "Standardized platform urn for the model Deployment"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the MLModelDeployment"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldType": "TEXT_PARTIAL",
          "filterNameOverride": "Environment",
          "queryByDefault": false
        },
        "type": "com.linkedin.pegasus2avro.common.FabricType",
        "name": "origin",
        "doc": "Fabric type where model Deployment belongs to or where it was generated"
      }
    ],
    "doc": "Key for an ML model deployment"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorPoolKey",
      "keyForEntity": "dataHubRemoteExecutorPool",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRemoteExecutorPoolInfo"
      ]
    },
    "name": "RemoteExecutorPoolKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "id",
        "doc": "The unique identifier for the remote executor pool"
      }
    ],
    "doc": "Key for an DataHub Remote Executor Pool"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubAccessTokenKey",
      "keyForEntity": "dataHubAccessToken",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubAccessTokenInfo"
      ]
    },
    "name": "DataHubAccessTokenKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Access token's SHA-256 hashed JWT signature"
      }
    ],
    "doc": "Key for a DataHub Access Token"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubExecutionRequestKey",
      "keyForEntity": "dataHubExecutionRequest",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubExecutionRequestInput",
        "dataHubExecutionRequestSignal",
        "dataHubExecutionRequestResult"
      ]
    },
    "name": "ExecutionRequestKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub execution request."
      }
    ],
    "doc": "Key for an DataHub Execution Request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlPrimaryKeyKey",
      "keyForEntity": "mlPrimaryKey",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlPrimaryKeyProperties",
        "domains",
        "applications",
        "mlPrimaryKeyProperties",
        "ownership",
        "institutionalMemory",
        "status",
        "deprecation",
        "globalTags",
        "dataPlatformInstance",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "proposals",
        "share",
        "origin",
        "lineageFeatures"
      ]
    },
    "name": "MLPrimaryKeyKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "featureNamespace",
        "doc": "Namespace for the primary key"
      },
      {
        "Searchable": {
          "boostScore": 8.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the primary key"
      }
    ],
    "doc": "Key for an MLPrimaryKey"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubViewKey",
      "keyForEntity": "dataHubView",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubViewInfo"
      ]
    },
    "name": "DataHubViewKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the View"
      }
    ],
    "doc": "Key for a DataHub View"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "glossaryNodeKey",
      "keyForEntity": "glossaryNode",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryNodeInfo",
        "institutionalMemory",
        "ownership",
        "status",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "displayProperties",
        "share",
        "origin"
      ]
    },
    "name": "GlossaryNodeKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name"
      }
    ],
    "doc": "Key for a GlossaryNode"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubMetricCubeKey",
      "keyForEntity": "dataHubMetricCube",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubMetricCubeDefinition",
        "dataHubMetricCubeEvent"
      ]
    },
    "name": "DataHubMetricCubeKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the cube type."
      }
    ],
    "doc": "Key for a DataHub Metric Cube, e.g. an internal metric."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "subscriptionKey",
      "keyForEntity": "subscription",
      "entityCategory": "core",
      "entityAspects": [
        "subscriptionInfo",
        "status"
      ]
    },
    "name": "SubscriptionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "UUID for the subscription. Generated server-side when the subscription is created."
      }
    ],
    "doc": "Key for a Subscription"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPageTemplateKey",
      "keyForEntity": "dataHubPageTemplate",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubPageTemplateProperties"
      ]
    },
    "name": "DataHubPageTemplateKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the template."
      }
    ],
    "doc": "Key for a DataHubPageTemplate"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "versionSetKey",
      "keyForEntity": "versionSet",
      "entityCategory": "core",
      "entityAspects": [
        "versionSetProperties"
      ]
    },
    "name": "VersionSetKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "ID of the Version Set, generated from platform + asset id / name"
      },
      {
        "type": "string",
        "name": "entityType",
        "doc": "Type of entities included in version set, limits to a single entity type between linked versioned entities"
      }
    ],
    "doc": "Key for a Version Set entity"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPersonaKey",
      "keyForEntity": "dataHubPersona",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubPersonaInfo"
      ]
    },
    "name": "DataHubPersonaKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the persona type"
      }
    ],
    "doc": "Key for a persona type"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "telemetryKey",
      "keyForEntity": "telemetry",
      "entityCategory": "internal",
      "entityAspects": [
        "telemetryClientId"
      ]
    },
    "name": "TelemetryKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "name",
        "doc": "The telemetry entity name, which serves as a unique id"
      }
    ],
    "doc": "Key for the telemetry client ID, only one should ever exist"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubActionKey",
      "keyForEntity": "dataHubAction",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubActionInfo",
        "dataHubActionStatus"
      ]
    },
    "name": "DataHubActionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Action, either generated or provided"
      }
    ],
    "doc": "Key for a DataHub Action Pipeline"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRetentionKey",
      "keyForEntity": "dataHubRetention",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRetentionConfig"
      ]
    },
    "name": "DataHubRetentionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "entityName",
        "doc": "Entity name to apply retention to. * (or empty) for applying defaults."
      },
      {
        "type": "string",
        "name": "aspectName",
        "doc": "Aspect name to apply retention to. * (or empty) for applying defaults."
      }
    ],
    "doc": "Key for a DataHub Retention"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionWorkflowKey",
      "keyForEntity": "actionWorkflow",
      "entityCategory": "internal",
      "entityAspects": [
        "actionWorkflowInfo"
      ]
    },
    "name": "ActionWorkflowKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": " The unique identifier for the workflow "
      }
    ],
    "doc": "Key for an ActionRequestWorkflow"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorGlobalConfigKey",
      "keyForEntity": "dataHubRemoteExecutorGlobalConfig",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRemoteExecutorPoolGlobalConfig"
      ]
    },
    "name": "RemoteExecutorGlobalConfigKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "The unique identifier for the remote executor global config\nNOTE: since this a singleton, there should be a hardcoded key in the AcrylConstants file"
      }
    ],
    "doc": "Key for the *Singleton* DataHub Remote Executor Global Config"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorKey",
      "keyForEntity": "dataHubRemoteExecutor",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubRemoteExecutorStatus"
      ]
    },
    "name": "RemoteExecutorKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the DataHub Remote Executor."
      }
    ],
    "doc": "Key for an DataHub Remote Executor"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "tagKey",
      "keyForEntity": "tag",
      "entityCategory": "core",
      "entityAspects": [
        "tagProperties",
        "ownership",
        "deprecation",
        "status",
        "testResults",
        "share",
        "origin"
      ]
    },
    "name": "TagKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldName": "id",
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "The tag name, which serves as a unique id"
      }
    ],
    "doc": "Key for a Tag"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "assertionKey",
      "keyForEntity": "assertion",
      "entityCategory": "core",
      "entityAspects": [
        "assertionInfo",
        "dataPlatformInstance",
        "assertionRunEvent",
        "assertionActions",
        "status",
        "globalTags",
        "lineageFeatures",
        "assertionRunSummary",
        "assertionAnalyticsRunEvent",
        "assertionDryRunEvent",
        "assertionInferenceDetails"
      ],
      "entityDoc": "Assertion represents a data quality rule applied on one or more dataset."
    },
    "name": "AssertionKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "assertionId",
        "doc": "Unique id for the assertion."
      }
    ],
    "doc": "Key for a Assertion"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPageModuleKey",
      "keyForEntity": "dataHubPageModule",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubPageModuleProperties"
      ]
    },
    "name": "DataHubPageModuleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the module."
      }
    ],
    "doc": "Key for a DataHubPageModule"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "chartKey",
      "keyForEntity": "chart",
      "entityCategory": "core",
      "entityAspects": [
        "chartInfo",
        "editableChartProperties",
        "chartQuery",
        "inputFields",
        "chartUsageStatistics",
        "embed",
        "browsePaths",
        "domains",
        "applications",
        "container",
        "deprecation",
        "ownership",
        "status",
        "institutionalMemory",
        "dataPlatformInstance",
        "globalTags",
        "glossaryTerms",
        "browsePathsV2",
        "subTypes",
        "structuredProperties",
        "incidentsSummary",
        "forms",
        "testResults",
        "usageFeatures",
        "lineageFeatures",
        "proposals",
        "share",
        "origin",
        "documentation"
      ]
    },
    "name": "ChartKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "boostScore": 4.0,
          "fieldName": "tool",
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "dashboardTool",
        "doc": "The name of the dashboard tool such as looker, redash etc."
      },
      {
        "type": "string",
        "name": "chartId",
        "doc": "Unique id for the chart. This id should be globally unique for a dashboarding tool even when there are multiple deployments of it. As an example, chart URL could be used here for Looker such as 'looker.linkedin.com/looks/1234'"
      }
    ],
    "doc": "Key for a Chart"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "corpUserKey",
      "keyForEntity": "corpuser",
      "entityCategory": "_unset_",
      "entityAspects": [
        "corpUserInfo",
        "corpUserEditableInfo",
        "corpUserStatus",
        "groupMembership",
        "globalTags",
        "status",
        "corpUserCredentials",
        "nativeGroupMembership",
        "corpUserSettings",
        "origin",
        "roleMembership",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "slackUserInfo",
        "share",
        "formNotifications"
      ],
      "entityDoc": "CorpUser represents an identity of a person (or an account) in the enterprise."
    },
    "name": "CorpUserKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "boostScore": 2.0,
          "enableAutocomplete": true,
          "fieldName": "ldap",
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "username",
        "doc": "The name of the AD/LDAP user."
      }
    ],
    "doc": "Key for a CorpUser"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlFeatureKey",
      "keyForEntity": "mlFeature",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlFeatureProperties",
        "domains",
        "applications",
        "mlFeatureProperties",
        "ownership",
        "institutionalMemory",
        "status",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "proposals",
        "share",
        "origin",
        "lineageFeatures",
        "documentation",
        "incidentsSummary"
      ]
    },
    "name": "MLFeatureKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "featureNamespace",
        "doc": "Namespace for the feature"
      },
      {
        "Searchable": {
          "boostScore": 8.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the feature"
      }
    ],
    "doc": "Key for an MLFeature"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "roleKey",
      "keyForEntity": "role",
      "entityCategory": "core",
      "entityAspects": [
        "roleProperties",
        "actors"
      ]
    },
    "name": "RoleKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the access management IAM."
      }
    ],
    "doc": "Key for a External AccessManagement"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "globalSettingsKey",
      "keyForEntity": "globalSettings",
      "entityCategory": "internal",
      "entityAspects": [
        "globalSettingsInfo"
      ],
      "entityDoc": "Global settings for an the platform"
    },
    "name": "GlobalSettingsKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Id for the settings. There should be only 1 global settings urn: urn:li:globalSettings:0"
      }
    ],
    "doc": "Key for a Global Settings"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubIngestionSourceInfo"
    },
    "name": "DataHubIngestionSourceInfo",
    "namespace": "com.linkedin.pegasus2avro.ingestion",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The display name of the ingestion source"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": "string",
        "name": "type",
        "doc": "The type of the source itself, e.g. mysql, bigquery, bigquery-usage. Should match the recipe."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "platform",
        "default": null,
        "doc": "Data Platform URN associated with the source"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubIngestionSourceSchedule",
            "namespace": "com.linkedin.pegasus2avro.ingestion",
            "fields": [
              {
                "type": "string",
                "name": "interval",
                "doc": "A cron-formatted execution interval, as a cron string, e.g. * * * * *"
              },
              {
                "type": "string",
                "name": "timezone",
                "doc": "Timezone in which the cron interval applies, e.g. America/Los Angeles"
              }
            ],
            "doc": "The schedule associated with an ingestion source."
          }
        ],
        "name": "schedule",
        "default": null,
        "doc": "The schedule on which the ingestion source is executed"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubIngestionSourceConfig",
          "namespace": "com.linkedin.pegasus2avro.ingestion",
          "fields": [
            {
              "type": "string",
              "name": "recipe",
              "doc": "The JSON recipe to use for ingestion"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "version",
              "default": null,
              "doc": "The PyPI version of the datahub CLI to use when executing a recipe"
            },
            {
              "Searchable": {
                "fieldName": "sourceExecutorId",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "type": [
                "null",
                "string"
              ],
              "name": "executorId",
              "default": null,
              "doc": "The id of the executor pool to use to execute the ingestion run"
            },
            {
              "type": [
                "null",
                "boolean"
              ],
              "name": "debugMode",
              "default": null,
              "doc": "Whether or not to run this ingestion source in debug mode"
            },
            {
              "type": [
                "null",
                {
                  "type": "map",
                  "values": "string"
                }
              ],
              "name": "extraArgs",
              "default": null,
              "doc": "Extra arguments for the ingestion run."
            }
          ]
        },
        "name": "config",
        "doc": "Parameters associated with the Ingestion Source"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubIngestionSourceSource",
            "namespace": "com.linkedin.pegasus2avro.ingestion",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType",
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "SYSTEM": "A system internal source, e.g. for running search indexing operations, feature computation, etc."
                  },
                  "name": "DataHubIngestionSourceSourceType",
                  "namespace": "com.linkedin.pegasus2avro.ingestion",
                  "symbols": [
                    "SYSTEM"
                  ]
                },
                "name": "type",
                "doc": "The source type of the ingestion source"
              }
            ]
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source or origin of the Ingestion Source\n\nCurrently CLI and UI do not provide an explicit source."
      }
    ],
    "doc": "Info about a DataHub ingestion source"
  },
  {
    "type": "record",
    "Event": {
      "name": "entityChangeEvent"
    },
    "name": "EntityChangeEvent",
    "namespace": "com.linkedin.pegasus2avro.platform.event.v1",
    "fields": [
      {
        "type": "string",
        "name": "entityType",
        "doc": "The type of the entity affected. Corresponds to the entity registry, e.g. 'dataset', 'chart', 'dashboard', etc."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "entityUrn",
        "doc": "The urn of the entity which was affected."
      },
      {
        "type": "string",
        "name": "category",
        "doc": "The category type (TAG, GLOSSARY_TERM, OWNERSHIP, TECHNICAL_SCHEMA, etc). This is used to determine what the rest of the schema will look like."
      },
      {
        "type": "string",
        "name": "operation",
        "doc": "The operation type. This is used to determine what the rest of the schema will look like."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "modifier",
        "default": null,
        "doc": "The urn of the entity which was affected."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "Parameters",
            "namespace": "com.linkedin.pegasus2avro.platform.event.v1",
            "fields": [],
            "doc": "Arbitrary key-value parameters for an Entity Change Event. (any record)."
          }
        ],
        "name": "parameters",
        "default": null,
        "doc": "Arbitrary key-value parameters corresponding to the event."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "auditStamp",
        "doc": "Audit stamp of the operation"
      },
      {
        "type": "int",
        "name": "version",
        "doc": "The version of the event type, incremented in integers."
      }
    ],
    "doc": "Shared fields for all entity change events."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "incidentActivityEvent",
      "type": "timeseries"
    },
    "name": "IncidentActivityEvent",
    "namespace": "com.linkedin.pegasus2avro.incident",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "IncidentActivityChange",
            "namespace": "com.linkedin.pegasus2avro.incident",
            "fields": [
              {
                "TimeseriesCollection": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ASSIGNEES": "Assignees were added or removed",
                    "PRIORITY": "The priority of the incident changed",
                    "STAGE": "Lifecycle stage of the incident changes",
                    "STATE": "State of the incident changed"
                  },
                  "name": "IncidentActivityChangeType",
                  "namespace": "com.linkedin.pegasus2avro.incident",
                  "symbols": [
                    "ASSIGNEES",
                    "STATE",
                    "STAGE",
                    "PRIORITY"
                  ]
                },
                "name": "type",
                "doc": "The type of change. TODO: Determine if description change should be included in this aspect.\nThis is a timeseries field so you can filter by a given change type!"
              }
            ],
            "doc": "Incident Activity Change is a record that represents the changes that occurred in the incident activity event."
          }
        },
        "name": "changes",
        "default": [],
        "doc": "The actual changes that occurred in the incident activity event."
      },
      {
        "Relationship": {
          "/entities/*": null
        },
        "Searchable": {
          "/assignees/*/actor": null,
          "/created/time": null,
          "/customType": null,
          "/description": null,
          "/entities/*": null,
          "/priority": null,
          "/source/sourceUrn": null,
          "/source/type": null,
          "/startedAt": null,
          "/status/lastUpdated/time": null,
          "/status/stage": null,
          "/status/state": null,
          "/title": null,
          "/type": null
        },
        "type": {
          "type": "record",
          "Aspect": {
            "name": "incidentInfo"
          },
          "name": "IncidentInfo",
          "namespace": "com.linkedin.pegasus2avro.incident",
          "fields": [
            {
              "Searchable": {
                "addToFilters": true,
                "filterNameOverride": "Type"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "CUSTOM": "A custom type of incident",
                  "DATASET_COLUMN": "An assertion on a particular column(s) of a Dataset has triggered the incident.\nRaised on Datasets where assertions are configured to generate incidents.\nDeprecated! Use FIELD instead. Will be removed.",
                  "DATASET_ROWS": "An assertion on the row count of a Dataset has triggered the incident.\nRaised on datasets where assertions are configured to generate incidents.\nDeprecated! Use VOLUME instead. Will be removed.",
                  "DATA_SCHEMA": "A Data Schema assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "FIELD": "A Field Assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "FRESHNESS": "An Freshness Assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "OPERATIONAL": "A misc. operational incident, e.g. failure to materialize a dataset.",
                  "SQL": "A raw SQL-statement based assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents.",
                  "VOLUME": "An Volume Assertion has failed, triggering the incident.\nRaised on entities where assertions are configured to generate incidents."
                },
                "deprecatedSymbols": {
                  "DATASET_COLUMN": true,
                  "DATASET_ROWS": true
                },
                "name": "IncidentType",
                "namespace": "com.linkedin.pegasus2avro.incident",
                "symbols": [
                  "FRESHNESS",
                  "VOLUME",
                  "FIELD",
                  "SQL",
                  "DATA_SCHEMA",
                  "OPERATIONAL",
                  "CUSTOM",
                  "DATASET_COLUMN",
                  "DATASET_ROWS"
                ],
                "doc": "A type of asset incident"
              },
              "name": "type",
              "doc": "The type of incident"
            },
            {
              "Searchable": {
                "addToFilters": true,
                "filterNameOverride": "Other Type"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "customType",
              "default": null,
              "doc": "An optional custom incident type. Present only if type is 'CUSTOM'."
            },
            {
              "Searchable": {
                "boostScore": 10.0,
                "fieldType": "WORD_GRAM"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "title",
              "default": null,
              "doc": "Optional title associated with the incident"
            },
            {
              "Searchable": {
                "fieldType": "TEXT"
              },
              "type": [
                "null",
                "string"
              ],
              "name": "description",
              "default": null,
              "doc": "Optional description associated with the incident"
            },
            {
              "Relationship": {
                "/*": {
                  "entityTypes": [
                    "dataset",
                    "chart",
                    "dashboard",
                    "dataFlow",
                    "dataJob",
                    "schemaField",
                    "mlModel",
                    "mlFeature"
                  ],
                  "name": "IncidentOn"
                }
              },
              "Searchable": {
                "/*": {
                  "fieldType": "URN"
                }
              },
              "Urn": "Urn",
              "urn_is_array": true,
              "type": {
                "type": "array",
                "items": "string"
              },
              "name": "entities",
              "doc": "A reference to the entity associated with the incident."
            },
            {
              "Searchable": {
                "addToFilters": true,
                "filterNameOverride": "Priority"
              },
              "type": [
                "int",
                "null"
              ],
              "name": "priority",
              "default": 0,
              "doc": "A numeric severity or priority for the incident. On the UI we will translate this into something easy to understand.\nCurrently supported: 0 - CRITICAL, 1 - HIGH, 2 - MED, 3 - LOW\n(We probably should have modeled as an enum)"
            },
            {
              "type": [
                "null",
                {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "IncidentAssignee",
                    "namespace": "com.linkedin.pegasus2avro.incident",
                    "fields": [
                      {
                        "Searchable": {
                          "addToFilters": true,
                          "fieldName": "assignees",
                          "filterNameOverride": "Assignee"
                        },
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": "string",
                        "name": "actor",
                        "doc": "The user or group assigned to the incident."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "assignedAt",
                        "doc": "The time & actor responsible for assiging the assignee."
                      }
                    ],
                    "doc": "The incident assignee type.\nThis is in a record so that we can add additional fields if we need to later (e.g.\nthe type of the assignee."
                  }
                }
              ],
              "name": "assignees",
              "default": null,
              "doc": "The parties assigned with resolving the incident"
            },
            {
              "type": {
                "type": "record",
                "name": "IncidentStatus",
                "namespace": "com.linkedin.pegasus2avro.incident",
                "fields": [
                  {
                    "Searchable": {
                      "addToFilters": true,
                      "filterNameOverride": "Status"
                    },
                    "type": {
                      "type": "enum",
                      "symbolDocs": {
                        "ACTIVE": "The incident is ongoing, or active.",
                        "RESOLVED": "The incident is resolved."
                      },
                      "name": "IncidentState",
                      "namespace": "com.linkedin.pegasus2avro.incident",
                      "symbols": [
                        "ACTIVE",
                        "RESOLVED"
                      ]
                    },
                    "name": "state",
                    "doc": "The top-level state of the incident, whether it's active or resolved."
                  },
                  {
                    "Searchable": {
                      "addToFilters": true,
                      "filterNameOverride": "Stage"
                    },
                    "type": [
                      "null",
                      {
                        "type": "enum",
                        "symbolDocs": {
                          "FIXED": "The incident is in the resolved as completed stage.",
                          "INVESTIGATION": "The incident root cause is being investigated.",
                          "NO_ACTION_REQUIRED": "The incident is in the resolved with no action required state, e.g. the\nincident was a false positive, or was expected.",
                          "TRIAGE": "The impact and priority of the incident is being actively assessed.",
                          "WORK_IN_PROGRESS": "The incident is in the remediation stage."
                        },
                        "name": "IncidentStage",
                        "namespace": "com.linkedin.pegasus2avro.incident",
                        "symbols": [
                          "TRIAGE",
                          "INVESTIGATION",
                          "WORK_IN_PROGRESS",
                          "FIXED",
                          "NO_ACTION_REQUIRED"
                        ]
                      }
                    ],
                    "name": "stage",
                    "default": null,
                    "doc": "The lifecycle stage for the incident - Null means no stage was assigned yet.\nIn the future, we may add CUSTOM here with a customStage string field for user-defined stages."
                  },
                  {
                    "type": [
                      "null",
                      "string"
                    ],
                    "name": "message",
                    "default": null,
                    "doc": "Optional message associated with the incident"
                  },
                  {
                    "Searchable": {
                      "/time": {
                        "fieldName": "lastUpdated",
                        "fieldType": "COUNT"
                      }
                    },
                    "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                    "name": "lastUpdated",
                    "doc": "The time at which the request was initially created"
                  }
                ],
                "doc": "Information about an incident raised on an asset"
              },
              "name": "status",
              "doc": "The current status of an incident, i.e. active or inactive."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "Aspect": {
                    "name": "incidentSource"
                  },
                  "name": "IncidentSource",
                  "namespace": "com.linkedin.pegasus2avro.incident",
                  "fields": [
                    {
                      "Searchable": {
                        "addToFilters": true,
                        "filterNameOverride": "Source"
                      },
                      "type": {
                        "type": "enum",
                        "symbolDocs": {
                          "ASSERTION_FAILURE": "An assertion has failed, triggering the incident.",
                          "MANUAL": "Manually created incident, via UI or API."
                        },
                        "name": "IncidentSourceType",
                        "namespace": "com.linkedin.pegasus2avro.incident",
                        "symbols": [
                          "MANUAL",
                          "ASSERTION_FAILURE"
                        ]
                      },
                      "name": "type",
                      "doc": "Message associated with the incident"
                    },
                    {
                      "Searchable": {
                        "fieldType": "URN"
                      },
                      "java": {
                        "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                      },
                      "Urn": "Urn",
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "sourceUrn",
                      "default": null,
                      "doc": "Reference to an URN related to the source of an incident. Currently populated when the type of the incident\nis ASSERTION_FAILURE.\n\nIf this incident was raised due to an assertion failure, then this will contain the urn of the source Assertion."
                    }
                  ],
                  "doc": "Information about the source of an incident raised on an asset."
                }
              ],
              "name": "source",
              "default": null,
              "doc": "The source of an incident, i.e. how it was generated."
            },
            {
              "Searchable": {
                "/time": {
                  "fieldName": "startedAt",
                  "fieldType": "COUNT"
                }
              },
              "type": [
                "null",
                "long"
              ],
              "name": "startedAt",
              "default": null,
              "doc": "The time at which the incident actually started (may be before the date it was raised)."
            },
            {
              "Searchable": {
                "/time": {
                  "fieldName": "created",
                  "fieldType": "COUNT"
                }
              },
              "type": "com.linkedin.pegasus2avro.common.AuditStamp",
              "name": "created",
              "doc": "The time at which the request was initially created"
            }
          ],
          "doc": "Information about an incident raised on an asset.\n\nNOTE: When this file is changed, update IncidentActivityEvent.pdl to remove searchable and relationship annotations."
        },
        "name": "previousInfo",
        "doc": "The raw previous incident info. Removed all annotations."
      },
      {
        "Relationship": {
          "/entities/*": null
        },
        "Searchable": {
          "/assignees/*/actor": null,
          "/created/time": null,
          "/customType": null,
          "/description": null,
          "/entities/*": null,
          "/priority": null,
          "/source/sourceUrn": null,
          "/source/type": null,
          "/startedAt": null,
          "/status/lastUpdated/time": null,
          "/status/stage": null,
          "/status/state": null,
          "/title": null,
          "/type": null
        },
        "type": "com.linkedin.pegasus2avro.incident.IncidentInfo",
        "name": "newInfo",
        "doc": "The raw new incident info. Removed all annotations."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "The actor who performed the activity."
      }
    ],
    "doc": "A lifecycle event for an incident lifecycle change event\nthat should be visible in the incident activity log."
  },
  "com.linkedin.pegasus2avro.incident.IncidentInfo",
  "com.linkedin.pegasus2avro.incident.IncidentSource",
  {
    "type": "record",
    "Aspect": {
      "name": "incidentNotificationDetails"
    },
    "name": "IncidentNotificationDetails",
    "namespace": "com.linkedin.pegasus2avro.incident",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SlackIncidentDetails",
            "namespace": "com.linkedin.pegasus2avro.incident",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "SlackMessageDetails",
                    "namespace": "com.linkedin.pegasus2avro.incident",
                    "fields": [
                      {
                        "type": "string",
                        "name": "channelId",
                        "doc": "The original Slack channel id or user id associated with the incident message."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "channelName",
                        "default": null,
                        "doc": "The human-readable channel name associated with the incident message.\nThis is attempted to be resolved by the integrations service.\n\nIf it cannot be found, it will be left empty."
                      },
                      {
                        "type": "string",
                        "name": "messageId",
                        "doc": "The Slack message id associated with the incident."
                      }
                    ],
                    "doc": "Slack-specific message that contains the incident information.\nNote that we will NOT capture slack message details\nfor DMs.\nThis object will be created by the integrations service once a\nnotification message about an incident is posted to a specific channel."
                  }
                },
                "name": "messages",
                "default": [],
                "doc": "The Slack messages that contain the incident information"
              }
            ],
            "doc": "Slack-specific details about incident notifications"
          }
        ],
        "name": "slack",
        "default": null,
        "doc": "Details related to Slack."
      }
    ],
    "doc": "Information about the notification context for an incident (where we notified)"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlPrimaryKeyProperties"
    },
    "name": "MLPrimaryKeyProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLPrimaryKey"
      },
      {
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "AUDIO": "Audio Data",
              "BINARY": "Binary data is discrete data that can be in only one of two categories - either yes or no, 1 or 0, off or on, etc",
              "BYTE": "Bytes data are binary-encoded values that can represent complex objects.",
              "CONTINUOUS": "Continuous data are made of uncountable values, often the result of a measurement such as height, weight, age etc.",
              "COUNT": "Count data is discrete whole number data - no negative numbers here.\nCount data often has many small values, such as zero and one.",
              "IMAGE": "Image Data",
              "INTERVAL": "Interval data has equal spaces between the numbers and does not represent a temporal pattern.\nExamples include percentages, temperatures, and income.",
              "MAP": "Mapping Data Type ex: dict, map",
              "NOMINAL": "Nominal data is made of discrete values with no numerical relationship between the different categories - mean and median are meaningless.\nAnimal species is one example. For example, pig is not higher than bird and lower than fish.",
              "ORDINAL": "Ordinal data are discrete integers that can be ranked or sorted.\nFor example, the distance between first and second may not be the same as the distance between second and third.",
              "SEQUENCE": "Sequence Data Type ex: list, tuple, range",
              "SET": "Set Data Type ex: set, frozenset",
              "TEXT": "Text Data",
              "TIME": "Time data is a cyclical, repeating continuous form of data.\nThe relevant time features can be any period- daily, weekly, monthly, annual, etc.",
              "UNKNOWN": "Unknown data are data that we don't know the type for.",
              "USELESS": "Useless data is unique, discrete data with no potential relationship with the outcome variable.\nA useless feature has high cardinality. An example would be bank account numbers that were generated randomly.",
              "VIDEO": "Video Data"
            },
            "name": "MLFeatureDataType",
            "namespace": "com.linkedin.pegasus2avro.common",
            "symbols": [
              "USELESS",
              "NOMINAL",
              "ORDINAL",
              "BINARY",
              "COUNT",
              "TIME",
              "INTERVAL",
              "IMAGE",
              "VIDEO",
              "AUDIO",
              "TEXT",
              "MAP",
              "SEQUENCE",
              "SET",
              "CONTINUOUS",
              "BYTE",
              "UNKNOWN"
            ],
            "doc": "MLFeature Data Type"
          }
        ],
        "name": "dataType",
        "default": null,
        "doc": "Data Type of the MLPrimaryKey"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "VersionTag",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "versionTag",
                "default": null
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.MetadataAttribution"
                ],
                "name": "metadataAttribution",
                "default": null
              }
            ],
            "doc": "A resource-defined string representing the resource state for the purpose of concurrency control"
          }
        ],
        "name": "version",
        "default": null,
        "doc": "Version of the MLPrimaryKey"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "name": "DerivedFrom"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "sources",
        "doc": "Source of the MLPrimaryKey"
      }
    ],
    "doc": "Properties associated with a MLPrimaryKey"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelMetrics"
    },
    "name": "Metrics",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "performanceMeasures",
        "default": null,
        "doc": "Measures of MLModel performance"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "decisionThreshold",
        "default": null,
        "doc": "Decision Thresholds used (if any)?"
      }
    ],
    "doc": "Metrics to be featured for the MLModel."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelGroupProperties"
    },
    "name": "MLModelGroupProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataJob",
              "dataProcessInstance"
            ],
            "isLineage": true,
            "name": "TrainedBy"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "trainingJobs",
        "default": null,
        "doc": "List of jobs or process instances (if any) used to train the model or group. Visible in Lineage. Note that ML Models can also be specified as the output of a specific Data Process Instances (runs) via the DataProcessInstanceOutputs aspect."
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataJob",
              "dataProcessInstance"
            ],
            "isLineage": true,
            "isUpstream": false,
            "name": "UsedBy"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "downstreamJobs",
        "default": null,
        "doc": "List of jobs or process instances (if any) that use the model or group."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the MLModelGroup"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLModelGroup"
      },
      {
        "deprecated": true,
        "type": [
          "null",
          "long"
        ],
        "name": "createdAt",
        "default": null,
        "doc": "Date when the MLModelGroup was developed"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Time and Actor who created the MLModelGroup"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Date when the MLModelGroup was last modified"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.VersionTag"
        ],
        "name": "version",
        "default": null,
        "doc": "Version of the MLModelGroup"
      }
    ],
    "doc": "Properties associated with an ML Model Group"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelTrainingData"
    },
    "name": "TrainingData",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "BaseData",
            "namespace": "com.linkedin.pegasus2avro.ml.metadata",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DatasetUrn"
                },
                "Urn": "DatasetUrn",
                "type": "string",
                "name": "dataset",
                "doc": "What dataset were used in the MLModel?"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "motivation",
                "default": null,
                "doc": "Why was this dataset chosen?"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "preProcessing",
                "default": null,
                "doc": "How was the data preprocessed (e.g., tokenization of sentences, cropping of images, any filtering such as dropping images without faces)?"
              }
            ],
            "doc": "BaseData record"
          }
        },
        "name": "trainingData",
        "doc": "Details on the dataset(s) used for training the MLModel"
      }
    ],
    "doc": "Ideally, the MLModel card would contain as much information about the training data as the evaluation data. However, there might be cases where it is not feasible to provide this level of detailed information about the training data. For example, the data may be proprietary, or require a non-disclosure agreement. In these cases, we advocate for basic details about the distributions over groups in the data, as well as any other details that could inform stakeholders on the kinds of biases the model may have encoded."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelEvaluationData"
    },
    "name": "EvaluationData",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.ml.metadata.BaseData"
        },
        "name": "evaluationData",
        "doc": "Details on the dataset(s) used for the quantitative analyses in the MLModel"
      }
    ],
    "doc": "All referenced datasets would ideally point to any set of documents that provide visibility into the source and composition of the dataset."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlFeatureProperties"
    },
    "name": "MLFeatureProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLFeature"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.MLFeatureDataType"
        ],
        "name": "dataType",
        "default": null,
        "doc": "Data Type of the MLFeature"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.VersionTag"
        ],
        "name": "version",
        "default": null,
        "doc": "Version of the MLFeature"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset"
            ],
            "isLineage": true,
            "name": "DerivedFrom"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "sources",
        "default": null,
        "doc": "Source of the MLFeature"
      }
    ],
    "doc": "Properties associated with a MLFeature"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlMetric"
    },
    "name": "MLMetric",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": "string",
        "name": "name",
        "doc": "Name of the mlMetric"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the mlMetric"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "value",
        "default": null,
        "doc": "The value of the mlMetric"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "createdAt",
        "default": null,
        "doc": "Date when the mlMetric was developed"
      }
    ],
    "doc": "Properties associated with an ML Metric"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableMlModelGroupProperties"
    },
    "name": "EditableMLModelGroupProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the ml model group"
      }
    ],
    "doc": "Properties associated with an ML Model Group editable from the UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelProperties"
    },
    "name": "MLModelProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataJob",
              "dataProcessInstance"
            ],
            "isLineage": true,
            "name": "TrainedBy"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "trainingJobs",
        "default": null,
        "doc": "List of jobs or process instances (if any) used to train the model or group. Visible in Lineage. Note that ML Models can also be specified as the output of a specific Data Process Instances (runs) via the DataProcessInstanceOutputs aspect."
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataJob",
              "dataProcessInstance"
            ],
            "isLineage": true,
            "isUpstream": false,
            "name": "UsedBy"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "downstreamJobs",
        "default": null,
        "doc": "List of jobs or process instances (if any) that use the model or group."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "queryByDefault": true
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the MLModel"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLModel"
      },
      {
        "deprecated": true,
        "type": [
          "null",
          "long"
        ],
        "name": "date",
        "default": null,
        "doc": "Date when the MLModel was developed"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Audit stamp containing who created this and when"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.TimeStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Date when the MLModel was last modified"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.VersionTag"
        ],
        "name": "version",
        "default": null,
        "doc": "Version of the MLModel"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "type",
        "default": null,
        "doc": "Type of Algorithm or MLModel such as whether it is a Naive Bayes classifier, Convolutional Neural Network, etc"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": [
              "string",
              "int",
              "float",
              "double",
              "boolean"
            ]
          }
        ],
        "name": "hyperParameters",
        "default": null,
        "doc": "Hyper Parameters of the MLModel\n\nNOTE: these are deprecated in favor of hyperParams"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "Aspect": {
                "name": "mlHyperParam"
              },
              "name": "MLHyperParam",
              "namespace": "com.linkedin.pegasus2avro.ml.metadata",
              "fields": [
                {
                  "type": "string",
                  "name": "name",
                  "doc": "Name of the MLHyperParam"
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "description",
                  "default": null,
                  "doc": "Documentation of the MLHyperParam"
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "value",
                  "default": null,
                  "doc": "The value of the MLHyperParam"
                },
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "createdAt",
                  "default": null,
                  "doc": "Date when the MLHyperParam was developed"
                }
              ],
              "doc": "Properties associated with an ML Hyper Param"
            }
          }
        ],
        "name": "hyperParams",
        "default": null,
        "doc": "Hyperparameters of the MLModel"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLMetric"
          }
        ],
        "name": "trainingMetrics",
        "default": null,
        "doc": "Metrics of the MLModel used in training"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLMetric"
          }
        ],
        "name": "onlineMetrics",
        "default": null,
        "doc": "Metrics of the MLModel used in production"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "mlFeature"
            ],
            "isLineage": true,
            "name": "Consumes"
          }
        },
        "Urn": "MLFeatureUrn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "mlFeatures",
        "default": null,
        "doc": "List of features used for MLModel training"
      },
      {
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "tags",
        "default": [],
        "doc": "Tags for the MLModel"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "mlModelDeployment"
            ],
            "name": "DeployedTo"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "deployments",
        "default": null,
        "doc": "Deployments for the MLModel"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "mlModelGroup"
            ],
            "isLineage": true,
            "isUpstream": false,
            "name": "MemberOf"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "groups",
        "default": null,
        "doc": "Groups the model belongs to"
      }
    ],
    "doc": "Properties associated with a ML Model"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelEthicalConsiderations"
    },
    "name": "EthicalConsiderations",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "data",
        "default": null,
        "doc": "Does the MLModel use any sensitive data (e.g., protected classes)?"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "humanLife",
        "default": null,
        "doc": " Is the MLModel intended to inform decisions about matters central to human life or flourishing - e.g., health or safety? Or could it be used in such a way?"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "mitigations",
        "default": null,
        "doc": "What risk mitigation strategies were used during MLModel development?"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "risksAndHarms",
        "default": null,
        "doc": "What risks may be present in MLModel usage? Try to identify the potential recipients, likelihood, and magnitude of harms. If these cannot be determined, note that they were considered but remain unknown."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "useCases",
        "default": null,
        "doc": "Are there any known MLModel use cases that are especially fraught? This may connect directly to the intended use section"
      }
    ],
    "doc": "This section is intended to demonstrate the ethical considerations that went into MLModel development, surfacing ethical challenges and solutions to stakeholders."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "sourceCode"
    },
    "name": "SourceCode",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SourceCodeUrl",
            "namespace": "com.linkedin.pegasus2avro.ml.metadata",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "name": "SourceCodeUrlType",
                  "namespace": "com.linkedin.pegasus2avro.ml.metadata",
                  "symbols": [
                    "ML_MODEL_SOURCE_CODE",
                    "TRAINING_PIPELINE_SOURCE_CODE",
                    "EVALUATION_PIPELINE_SOURCE_CODE"
                  ]
                },
                "name": "type",
                "doc": "Source Code Url Types"
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.url.Url",
                  "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                },
                "type": "string",
                "name": "sourceCodeUrl",
                "doc": "Source Code Url"
              }
            ],
            "doc": "Source Code Url Entity"
          }
        },
        "name": "sourceCode",
        "doc": "Source Code along with types"
      }
    ],
    "doc": "Source Code"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableMlFeatureTableProperties"
    },
    "name": "EditableMLFeatureTableProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLFeatureTable"
      }
    ],
    "doc": "Properties associated with a MLFeatureTable editable from the ui"
  },
  "com.linkedin.pegasus2avro.ml.metadata.MLHyperParam",
  {
    "type": "record",
    "Aspect": {
      "name": "editableMlPrimaryKeyProperties"
    },
    "name": "EditableMLPrimaryKeyProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLPrimaryKey"
      }
    ],
    "doc": "Properties associated with a MLPrimaryKey editable from the UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableMlFeatureProperties"
    },
    "name": "EditableMLFeatureProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLFeature"
      }
    ],
    "doc": "Properties associated with a MLFeature editable from the UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "intendedUse"
    },
    "name": "IntendedUse",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "primaryUses",
        "default": null,
        "doc": "Primary Use cases for the MLModel."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "enum",
              "name": "IntendedUserType",
              "namespace": "com.linkedin.pegasus2avro.ml.metadata",
              "symbols": [
                "ENTERPRISE",
                "HOBBY",
                "ENTERTAINMENT"
              ]
            }
          }
        ],
        "name": "primaryUsers",
        "default": null,
        "doc": "Primary Intended Users - For example, was the MLModel developed for entertainment purposes, for hobbyists, or enterprise solutions?"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "outOfScopeUses",
        "default": null,
        "doc": "Highlight technology that the MLModel might easily be confused with, or related contexts that users could try to apply the MLModel to."
      }
    ],
    "doc": "Intended Use for the ML Model"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelDeploymentProperties"
    },
    "name": "MLModelDeploymentProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLModelDeployment"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "createdAt",
        "default": null,
        "doc": "Date when the MLModelDeployment was developed"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.VersionTag"
        ],
        "name": "version",
        "default": null,
        "doc": "Version of the MLModelDeployment"
      },
      {
        "Searchable": {
          "fieldName": "deploymentStatus"
        },
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "CREATING": "Deployments being created.",
              "DELETING": "Deployments being deleted.",
              "FAILED": "Deployments with an error state.",
              "IN_SERVICE": "Deployments that are active.",
              "OUT_OF_SERVICE": "Deployments out of service.",
              "ROLLING_BACK": "Deployments being reverted to a previous version.",
              "UNKNOWN": "Deployments with unknown/unmappable state.",
              "UPDATING": "Deployments being updated."
            },
            "name": "DeploymentStatus",
            "namespace": "com.linkedin.pegasus2avro.ml.metadata",
            "symbols": [
              "OUT_OF_SERVICE",
              "CREATING",
              "UPDATING",
              "ROLLING_BACK",
              "IN_SERVICE",
              "DELETING",
              "FAILED",
              "UNKNOWN"
            ],
            "doc": "Model endpoint statuses"
          }
        ],
        "name": "status",
        "default": null,
        "doc": "Status of the deployment"
      }
    ],
    "doc": "Properties associated with an ML Model Deployment"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlTrainingRunProperties"
    },
    "name": "MLTrainingRunProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "id",
        "default": null,
        "doc": "Run Id of the ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "outputUrls",
        "default": null,
        "doc": "List of URLs for the Outputs of the ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLHyperParam"
          }
        ],
        "name": "hyperParams",
        "default": null,
        "doc": "Hyperparameters of the ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLMetric"
          }
        ],
        "name": "trainingMetrics",
        "default": null,
        "doc": "Metrics of the ML Training Run"
      }
    ],
    "doc": "The inputs and outputs of this training run"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "editableMlModelProperties"
    },
    "name": "EditableMLModelProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the ml model"
      }
    ],
    "doc": "Properties associated with a ML Model editable from the UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelCaveatsAndRecommendations"
    },
    "name": "CaveatsAndRecommendations",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "CaveatDetails",
            "namespace": "com.linkedin.pegasus2avro.ml.metadata",
            "fields": [
              {
                "type": [
                  "null",
                  "boolean"
                ],
                "name": "needsFurtherTesting",
                "default": null,
                "doc": "Did the results suggest any further testing?"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "caveatDescription",
                "default": null,
                "doc": "Caveat Description\nFor ex: Given gender classes are binary (male/not male), which we include as male/female. Further work needed to evaluate across a spectrum of genders."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": "string"
                  }
                ],
                "name": "groupsNotRepresented",
                "default": null,
                "doc": "Relevant groups that were not represented in the evaluation dataset?"
              }
            ],
            "doc": "This section should list additional concerns that were not covered in the previous sections. For example, did the results suggest any further testing? Were there any relevant groups that were not represented in the evaluation dataset? Are there additional recommendations for model use?"
          }
        ],
        "name": "caveats",
        "default": null,
        "doc": "This section should list additional concerns that were not covered in the previous sections. For example, did the results suggest any further testing? Were there any relevant groups that were not represented in the evaluation dataset?"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "recommendations",
        "default": null,
        "doc": "Recommendations on where this MLModel should be used."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "idealDatasetCharacteristics",
        "default": null,
        "doc": "Ideal characteristics of an evaluation dataset for this MLModel"
      }
    ],
    "doc": "This section should list additional concerns that were not covered in the previous sections. For example, did the results suggest any further testing? Were there any relevant groups that were not represented in the evaluation dataset? Are there additional recommendations for model use?"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelQuantitativeAnalyses"
    },
    "name": "QuantitativeAnalyses",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "unitaryResults",
        "default": null,
        "doc": "Link to a dashboard with results showing how the MLModel performed with respect to each factor"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "intersectionalResults",
        "default": null,
        "doc": "Link to a dashboard with results showing how the MLModel performed with respect to the intersection of evaluated factors?"
      }
    ],
    "doc": "Quantitative analyses should be disaggregated, that is, broken down by the chosen factors. Quantitative analyses should provide the results of evaluating the MLModel according to the chosen metrics, providing confidence interval values when possible."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlFeatureTableProperties"
    },
    "name": "MLFeatureTableProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLFeatureTable"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "mlFeature"
            ],
            "name": "Contains"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "features",
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "mlFeatures",
        "default": null,
        "doc": "List of features contained in the feature table"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "mlPrimaryKey"
            ],
            "name": "KeyedBy"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "primaryKeys",
            "fieldType": "URN"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "mlPrimaryKeys",
        "default": null,
        "doc": "List of primary keys in the feature table (if multiple, assumed to act as a composite key)"
      }
    ],
    "doc": "Properties associated with a MLFeatureTable"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "mlModelFactorPrompts"
    },
    "name": "MLModelFactorPrompts",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "MLModelFactors",
              "namespace": "com.linkedin.pegasus2avro.ml.metadata",
              "fields": [
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "groups",
                  "default": null,
                  "doc": "Groups refers to distinct categories with similar characteristics that are present in the evaluation data instances.\nFor human-centric machine learning MLModels, groups are people who share one or multiple characteristics."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "instrumentation",
                  "default": null,
                  "doc": "The performance of a MLModel can vary depending on what instruments were used to capture the input to the MLModel.\nFor example, a face detection model may perform differently depending on the camera's hardware and software,\nincluding lens, image stabilization, high dynamic range techniques, and background blurring for portrait mode."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "environment",
                  "default": null,
                  "doc": "A further factor affecting MLModel performance is the environment in which it is deployed."
                }
              ],
              "doc": "Factors affecting the performance of the MLModel."
            }
          }
        ],
        "name": "relevantFactors",
        "default": null,
        "doc": "What are foreseeable salient factors for which MLModel performance may vary, and how were these determined?"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.ml.metadata.MLModelFactors"
          }
        ],
        "name": "evaluationFactors",
        "default": null,
        "doc": "Which factors are being reported, and why were these chosen?"
      }
    ],
    "doc": "Prompts which affect the performance of the MLModel"
  },
  {
    "type": "record",
    "name": "MetadataChangeLog",
    "namespace": "com.linkedin.pegasus2avro.mxe",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "KafkaAuditHeader",
            "namespace": "com.linkedin.events",
            "fields": [
              {
                "compliance": [
                  {
                    "policy": "EVENT_TIME"
                  }
                ],
                "type": "long",
                "name": "time",
                "doc": "The time at which the event was emitted into kafka."
              },
              {
                "compliance": "NONE",
                "type": "string",
                "name": "server",
                "doc": "The fully qualified name of the host from which the event is being emitted."
              },
              {
                "compliance": "NONE",
                "type": [
                  "null",
                  "string"
                ],
                "name": "instance",
                "default": null,
                "doc": "The instance on the server from which the event is being emitted. e.g. i001"
              },
              {
                "compliance": "NONE",
                "type": "string",
                "name": "appName",
                "doc": "The name of the application from which the event is being emitted. see go/appname"
              },
              {
                "compliance": "NONE",
                "type": {
                  "type": "fixed",
                  "name": "UUID",
                  "namespace": "com.linkedin.events",
                  "size": 16
                },
                "name": "messageId",
                "doc": "A unique identifier for the message"
              },
              {
                "compliance": "NONE",
                "type": [
                  "null",
                  "int"
                ],
                "name": "auditVersion",
                "default": null,
                "doc": "The version that is being used for auditing. In version 0, the audit trail buckets events into 10 minute audit windows based on the EventHeader timestamp. In version 1, the audit trail buckets events as follows: if the schema has an outer KafkaAuditHeader, use the outer audit header timestamp for bucketing; else if the EventHeader has an inner KafkaAuditHeader use that inner audit header's timestamp for bucketing"
              },
              {
                "compliance": "NONE",
                "type": [
                  "null",
                  "string"
                ],
                "name": "fabricUrn",
                "default": null,
                "doc": "The fabricUrn of the host from which the event is being emitted. Fabric Urn in the format of urn:li:fabric:{fabric_name}. See go/fabric."
              },
              {
                "compliance": "NONE",
                "type": [
                  "null",
                  "string"
                ],
                "name": "clusterConnectionString",
                "default": null,
                "doc": "This is a String that the client uses to establish some kind of connection with the Kafka cluster. The exact format of it depends on specific versions of clients and brokers. This information could potentially identify the fabric and cluster with which the client is producing to or consuming from."
              }
            ],
            "doc": "This header records information about the context of an event as it is emitted into kafka and is intended to be used by the kafka audit application.  For more information see go/kafkaauditheader"
          }
        ],
        "name": "auditHeader",
        "default": null,
        "doc": "Kafka audit header. Currently remains unused in the open source."
      },
      {
        "type": "string",
        "name": "entityType",
        "doc": "Type of the entity being written to"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "entityUrn",
        "default": null,
        "doc": "Urn of the entity being written"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GenericAspect",
            "namespace": "com.linkedin.pegasus2avro.mxe",
            "fields": [
              {
                "type": "bytes",
                "name": "value",
                "doc": "The value of the aspect, serialized as bytes."
              },
              {
                "type": "string",
                "name": "contentType",
                "doc": "The content type, which represents the fashion in which the aspect was serialized.\nThe only type currently supported is application/json."
              }
            ],
            "doc": "Generic record structure for serializing an Aspect"
          }
        ],
        "name": "entityKeyAspect",
        "default": null,
        "doc": "Key aspect of the entity being written"
      },
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "CREATE": "insert if not exists. otherwise fail",
            "CREATE_ENTITY": "insert if entity not exists. otherwise fail",
            "DELETE": "delete action",
            "PATCH": "patch the changes instead of full replace",
            "RESTATE": "Restate an aspect, eg. in a index refresh.",
            "UPDATE": "NOT SUPPORTED YET\nupdate if exists. otherwise fail",
            "UPSERT": "insert if not exists. otherwise update"
          },
          "name": "ChangeType",
          "namespace": "com.linkedin.pegasus2avro.events.metadata",
          "symbols": [
            "UPSERT",
            "CREATE",
            "UPDATE",
            "DELETE",
            "PATCH",
            "RESTATE",
            "CREATE_ENTITY"
          ],
          "doc": "Descriptor for a change action"
        },
        "name": "changeType",
        "doc": "Type of change being proposed"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "aspectName",
        "default": null,
        "doc": "Aspect of the entity being written to\nNot filling this out implies that the writer wants to affect the entire entity\nNote: This is only valid for CREATE, UPSERT, and DELETE operations."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.GenericAspect"
        ],
        "name": "aspect",
        "default": null,
        "doc": "The value of the new aspect."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "Aspect": {
              "name": "systemMetadata"
            },
            "name": "SystemMetadata",
            "namespace": "com.linkedin.pegasus2avro.mxe",
            "fields": [
              {
                "type": [
                  "long",
                  "null"
                ],
                "name": "lastObserved",
                "default": 0,
                "doc": "The timestamp the metadata was observed at"
              },
              {
                "type": [
                  "string",
                  "null"
                ],
                "name": "runId",
                "default": "no-run-id-provided",
                "doc": "The original run id that produced the metadata. Populated in case of batch-ingestion."
              },
              {
                "type": [
                  "string",
                  "null"
                ],
                "name": "lastRunId",
                "default": "no-run-id-provided",
                "doc": "The last run id that produced the metadata. Populated in case of batch-ingestion."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "pipelineName",
                "default": null,
                "doc": "The ingestion pipeline id that produced the metadata. Populated in case of batch ingestion."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "registryName",
                "default": null,
                "doc": "The model registry name that was used to process this event"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "registryVersion",
                "default": null,
                "doc": "The model registry version that was used to process this event"
              },
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "string"
                  }
                ],
                "name": "properties",
                "default": null,
                "doc": "Additional properties"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "version",
                "default": null,
                "doc": "Aspect version\n   Initial implementation will use the aspect version's number, however stored as\n   a string in the case where a different aspect versioning scheme is later adopted."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "aspectCreated",
                "default": null,
                "doc": "When the aspect was initially created and who created it, detected by version 0 -> 1 change"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "aspectModified",
                "default": null,
                "doc": "When the aspect was last modified and the actor that performed the modification"
              }
            ],
            "doc": "Metadata associated with each metadata change that is processed by the system"
          }
        ],
        "name": "systemMetadata",
        "default": null,
        "doc": "System properties that one might want to attach to an event"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "headers",
        "default": null,
        "doc": "Headers - intended to mimic http headers"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.GenericAspect"
        ],
        "name": "previousAspectValue",
        "default": null,
        "doc": "The previous value of the aspect that has changed."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.SystemMetadata"
        ],
        "name": "previousSystemMetadata",
        "default": null,
        "doc": "The previous value of the system metadata field that has changed."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "An audit stamp detailing who and when the aspect was changed by. Required for all intents and purposes."
      }
    ],
    "doc": "Kafka event for capturing update made to an entity's metadata."
  },
  {
    "type": "record",
    "name": "MetadataChangeEvent",
    "namespace": "com.linkedin.pegasus2avro.mxe",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.events.KafkaAuditHeader"
        ],
        "name": "auditHeader",
        "default": null,
        "doc": "Kafka audit header. See go/kafkaauditheader for more info."
      },
      {
        "type": [
          {
            "type": "record",
            "Entity": {
              "keyAspect": "actionRequestKey",
              "name": "actionRequest"
            },
            "name": "ActionRequestSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.ActionRequestKey",
                    "com.linkedin.pegasus2avro.actionrequest.ActionRequestStatus",
                    "com.linkedin.pegasus2avro.actionrequest.ActionRequestInfo"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the Action Request."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "chartKey",
              "name": "chart"
            },
            "name": "ChartSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.ChartUrn"
                },
                "Urn": "ChartUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.ChartKey",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "chartInfo"
                      },
                      "name": "ChartInfo",
                      "namespace": "com.linkedin.pegasus2avro.chart",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldType": "TEXT",
                              "queryByDefault": true
                            }
                          },
                          "type": {
                            "type": "map",
                            "values": "string"
                          },
                          "name": "customProperties",
                          "default": {},
                          "doc": "Custom property bag."
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.url.Url",
                            "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "externalUrl",
                          "default": null,
                          "doc": "URL where the reference exist"
                        },
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM"
                          },
                          "type": "string",
                          "name": "title",
                          "doc": "Title of the chart"
                        },
                        {
                          "Searchable": {},
                          "type": "string",
                          "name": "description",
                          "doc": "Detailed description about the chart"
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
                          "name": "lastModified",
                          "doc": "Captures information about who created/last modified/deleted this chart and when"
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.url.Url",
                            "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "chartUrl",
                          "default": null,
                          "doc": "URL for the chart. This could be used as an external link on DataHub to allow users access/view the chart"
                        },
                        {
                          "Relationship": {
                            "/*/string": {
                              "entityTypes": [
                                "dataset"
                              ],
                              "isLineage": true,
                              "name": "Consumes"
                            }
                          },
                          "deprecated": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": [
                                "string"
                              ]
                            }
                          ],
                          "name": "inputs",
                          "default": null,
                          "doc": "Data sources for the chart\nDeprecated! Use inputEdges instead."
                        },
                        {
                          "Relationship": {
                            "/*/destinationUrn": {
                              "createdActor": "inputEdges/*/created/actor",
                              "createdOn": "inputEdges/*/created/time",
                              "entityTypes": [
                                "dataset"
                              ],
                              "isLineage": true,
                              "name": "Consumes",
                              "properties": "inputEdges/*/properties",
                              "updatedActor": "inputEdges/*/lastModified/actor",
                              "updatedOn": "inputEdges/*/lastModified/time"
                            }
                          },
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "com.linkedin.pegasus2avro.common.Edge"
                            }
                          ],
                          "name": "inputEdges",
                          "default": null,
                          "doc": "Data sources for the chart"
                        },
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldType": "KEYWORD",
                            "filterNameOverride": "Chart Type"
                          },
                          "type": [
                            "null",
                            {
                              "type": "enum",
                              "symbolDocs": {
                                "BAR": "Chart showing a Bar chart",
                                "PIE": "Chart showing a Pie chart",
                                "SCATTER": "Chart showing a Scatter plot",
                                "TABLE": "Chart showing a table",
                                "TEXT": "Chart showing Markdown formatted text"
                              },
                              "name": "ChartType",
                              "namespace": "com.linkedin.pegasus2avro.chart",
                              "symbols": [
                                "BAR",
                                "PIE",
                                "SCATTER",
                                "TABLE",
                                "TEXT",
                                "LINE",
                                "AREA",
                                "HISTOGRAM",
                                "BOX_PLOT",
                                "WORD_CLOUD",
                                "COHORT"
                              ],
                              "doc": "The various types of charts"
                            }
                          ],
                          "name": "type",
                          "default": null,
                          "doc": "Type of the chart"
                        },
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldType": "KEYWORD",
                            "filterNameOverride": "Access Level"
                          },
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.AccessLevel"
                          ],
                          "name": "access",
                          "default": null,
                          "doc": "Access level for the chart"
                        },
                        {
                          "type": [
                            "null",
                            "long"
                          ],
                          "name": "lastRefreshed",
                          "default": null,
                          "doc": "The time when this chart last refreshed"
                        }
                      ],
                      "doc": "Information about a chart"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "chartQuery"
                      },
                      "name": "ChartQuery",
                      "namespace": "com.linkedin.pegasus2avro.chart",
                      "fields": [
                        {
                          "type": "string",
                          "name": "rawQuery",
                          "doc": "Raw query to build a chart from input datasets"
                        },
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldName": "queryType",
                            "fieldType": "KEYWORD",
                            "filterNameOverride": "Query Type"
                          },
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "LOOKML": "LookML queries",
                              "SQL": "SQL type queries"
                            },
                            "name": "ChartQueryType",
                            "namespace": "com.linkedin.pegasus2avro.chart",
                            "symbols": [
                              "LOOKML",
                              "SQL"
                            ]
                          },
                          "name": "type",
                          "doc": "Chart query type"
                        }
                      ],
                      "doc": "Information for chart query which is used for getting data of the chart"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "editableChartProperties"
                      },
                      "name": "EditableChartProperties",
                      "namespace": "com.linkedin.pegasus2avro.chart",
                      "fields": [
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "created",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "lastModified",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.AuditStamp"
                          ],
                          "name": "deleted",
                          "default": null,
                          "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
                        },
                        {
                          "Searchable": {
                            "fieldName": "editedDescription",
                            "fieldType": "TEXT"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "description",
                          "default": null,
                          "doc": "Edited documentation of the chart "
                        }
                      ],
                      "doc": "Stores editable changes made to properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "ownership"
                      },
                      "name": "Ownership",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "type": {
                            "type": "array",
                            "items": "com.linkedin.pegasus2avro.common.Owner"
                          },
                          "name": "owners",
                          "doc": "List of owners of the entity."
                        },
                        {
                          "Searchable": {
                            "/$key": {
                              "fieldType": "MAP_ARRAY",
                              "queryByDefault": false
                            }
                          },
                          "type": [
                            {
                              "type": "map",
                              "values": {
                                "type": "array",
                                "items": "string"
                              }
                            },
                            "null"
                          ],
                          "name": "ownerTypes",
                          "default": {},
                          "doc": "Ownership type to Owners map, populated via mutation hook."
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "lastModified",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "Audit stamp containing who last modified the record and when. A value of 0 in the time field indicates missing data."
                        }
                      ],
                      "doc": "Ownership information of an entity."
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "status"
                      },
                      "name": "Status",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "Searchable": {
                            "fieldType": "BOOLEAN"
                          },
                          "type": "boolean",
                          "name": "removed",
                          "default": false,
                          "doc": "Whether the entity has been removed (soft-deleted)."
                        }
                      ],
                      "doc": "The lifecycle status metadata of an entity, e.g. dataset, metric, feature, etc.\nThis aspect is used to represent soft deletes conventionally."
                    },
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "browsePaths"
                      },
                      "name": "BrowsePaths",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldName": "browsePaths",
                              "fieldType": "BROWSE_PATH"
                            }
                          },
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "paths",
                          "doc": "A list of valid browse paths for the entity.\n\nBrowse paths are expected to be forward slash-separated strings. For example: 'prod/snowflake/datasetName'"
                        }
                      ],
                      "doc": "Shared aspect containing Browse Paths to be indexed for an entity."
                    },
                    "com.linkedin.pegasus2avro.common.GlossaryTerms",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "institutionalMemory"
                      },
                      "name": "InstitutionalMemory",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "type": {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "InstitutionalMemoryMetadata",
                              "namespace": "com.linkedin.pegasus2avro.common",
                              "fields": [
                                {
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.url.Url",
                                    "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                                  },
                                  "type": "string",
                                  "name": "url",
                                  "doc": "Link to an engineering design document or a wiki page."
                                },
                                {
                                  "type": "string",
                                  "name": "description",
                                  "doc": "Description of the link."
                                },
                                {
                                  "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                  "name": "createStamp",
                                  "doc": "Audit stamp associated with creation of this record"
                                },
                                {
                                  "type": [
                                    "null",
                                    "com.linkedin.pegasus2avro.common.AuditStamp"
                                  ],
                                  "name": "updateStamp",
                                  "default": null,
                                  "doc": "Audit stamp associated with updation of this record"
                                },
                                {
                                  "type": [
                                    "null",
                                    {
                                      "type": "record",
                                      "name": "InstitutionalMemoryMetadataSettings",
                                      "namespace": "com.linkedin.pegasus2avro.common",
                                      "fields": [
                                        {
                                          "type": "boolean",
                                          "name": "showInAssetPreview",
                                          "default": false,
                                          "doc": "Show record in asset preview like on entity header and search previews"
                                        }
                                      ],
                                      "doc": "Settings related to a record of InstitutionalMemoryMetadata"
                                    }
                                  ],
                                  "name": "settings",
                                  "default": null,
                                  "doc": "Settings for this record"
                                }
                              ],
                              "doc": "Metadata corresponding to a record of institutional memory."
                            }
                          },
                          "name": "elements",
                          "doc": "List of records that represent institutional memory of an entity. Each record consists of a link, description, creator and timestamps associated with that record."
                        }
                      ],
                      "doc": "Institutional memory of an entity. This is a way to link to relevant documentation and provide description of the documentation. Institutional or tribal knowledge is very important for users to leverage the entity."
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataPlatformInstance"
                      },
                      "name": "DataPlatformInstance",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldType": "URN",
                            "filterNameOverride": "Platform"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": "string",
                          "name": "platform",
                          "doc": "Data Platform"
                        },
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldName": "platformInstance",
                            "fieldType": "URN",
                            "filterNameOverride": "Platform Instance"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "instance",
                          "default": null,
                          "doc": "Instance of the data platform (e.g. db instance)"
                        }
                      ],
                      "doc": "The specific instance of the data platform that this entity belongs to"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "browsePathsV2"
                      },
                      "name": "BrowsePathsV2",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "Searchable": {
                            "/*/id": {
                              "fieldName": "browsePathV2",
                              "fieldType": "BROWSE_PATH_V2"
                            }
                          },
                          "type": {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "BrowsePathEntry",
                              "namespace": "com.linkedin.pegasus2avro.common",
                              "fields": [
                                {
                                  "type": "string",
                                  "name": "id",
                                  "doc": "The ID of the browse path entry. This is what gets stored in the index.\nIf there's an urn associated with this entry, id and urn will be the same"
                                },
                                {
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "urn",
                                  "default": null,
                                  "doc": "Optional urn pointing to some entity in DataHub"
                                }
                              ],
                              "doc": "Represents a single level in an entity's browsePathV2"
                            }
                          },
                          "name": "path",
                          "doc": "A valid browse path for the entity. This field is provided by DataHub by default.\nThis aspect is a newer version of browsePaths where we can encode more information in the path.\nThis path is also based on containers for a given entity if it has containers.\n\nThis is stored in elasticsearch as unit-separator delimited strings and only includes platform specific folders or containers.\nThese paths should not include high level info captured elsewhere ie. Platform and Environment."
                        }
                      ],
                      "doc": "Shared aspect containing a Browse Path to be indexed for an entity."
                    }
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the chart. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific Chart entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "corpGroupKey",
              "name": "corpGroup"
            },
            "name": "CorpGroupSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.CorpGroupUrn"
                },
                "Urn": "CorpGroupUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.CorpGroupKey",
                    "com.linkedin.pegasus2avro.identity.CorpGroupInfo",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.Status"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the LdapUser. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific CorpGroup entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "corpUserKey",
              "name": "corpuser"
            },
            "name": "CorpUserSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.CorpuserUrn"
                },
                "Urn": "CorpuserUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.CorpUserKey",
                    "com.linkedin.pegasus2avro.identity.CorpUserInfo",
                    "com.linkedin.pegasus2avro.identity.CorpUserEditableInfo",
                    "com.linkedin.pegasus2avro.identity.CorpUserStatus",
                    "com.linkedin.pegasus2avro.identity.GroupMembership",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.Status"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the CorpUser. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific CorpUser entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dashboardKey",
              "name": "dashboard"
            },
            "name": "DashboardSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DashboardUrn"
                },
                "Urn": "DashboardUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DashboardKey",
                    "com.linkedin.pegasus2avro.dashboard.DashboardInfo",
                    "com.linkedin.pegasus2avro.dashboard.EditableDashboardProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlossaryTerms",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the dashboard. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific Dashboard entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dataFlowKey",
              "name": "dataFlow"
            },
            "name": "DataFlowSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DataFlowUrn"
                },
                "Urn": "DataFlowUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DataFlowKey",
                    "com.linkedin.pegasus2avro.datajob.DataFlowInfo",
                    "com.linkedin.pegasus2avro.datajob.EditableDataFlowProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlossaryTerms",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the data flow. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific DataFlow entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dataJobKey",
              "name": "dataJob"
            },
            "name": "DataJobSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DataJobUrn"
                },
                "Urn": "DataJobUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DataJobKey",
                    "com.linkedin.pegasus2avro.datajob.DataJobInfo",
                    "com.linkedin.pegasus2avro.datajob.DataJobInputOutput",
                    "com.linkedin.pegasus2avro.datajob.EditableDataJobProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlossaryTerms",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the data job. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific DataJob entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "datasetKey",
              "name": "dataset"
            },
            "name": "DatasetSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DatasetUrn"
                },
                "Urn": "DatasetUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DatasetKey",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "datasetProperties"
                      },
                      "name": "DatasetProperties",
                      "namespace": "com.linkedin.pegasus2avro.dataset",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldType": "TEXT",
                              "queryByDefault": true
                            }
                          },
                          "type": {
                            "type": "map",
                            "values": "string"
                          },
                          "name": "customProperties",
                          "default": {},
                          "doc": "Custom property bag."
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.url.Url",
                            "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "externalUrl",
                          "default": null,
                          "doc": "URL where the reference exist"
                        },
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "name",
                          "default": null,
                          "doc": "Display name of the Dataset"
                        },
                        {
                          "Searchable": {
                            "addToFilters": false,
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldType": "WORD_GRAM"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "qualifiedName",
                          "default": null,
                          "doc": "Fully-qualified name of the Dataset"
                        },
                        {
                          "Searchable": {
                            "fieldType": "TEXT",
                            "hasValuesFieldName": "hasDescription"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "description",
                          "default": null,
                          "doc": "Documentation of the dataset"
                        },
                        {
                          "deprecated": "Use ExternalReference.externalUrl field instead.",
                          "java": {
                            "class": "java.net.URI"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "uri",
                          "default": null,
                          "doc": "The abstracted URI such as hdfs:///data/tracking/PageViewEvent, file:///dir/file_name. Uri should not include any environment specific properties. Some datasets might not have a standardized uri, which makes this field optional (i.e. kafka topic)."
                        },
                        {
                          "Searchable": {
                            "/time": {
                              "fieldName": "createdAt",
                              "fieldType": "DATETIME"
                            }
                          },
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.TimeStamp"
                          ],
                          "name": "created",
                          "default": null,
                          "doc": "A timestamp documenting when the asset was created in the source Data Platform (not on DataHub)"
                        },
                        {
                          "Searchable": {
                            "/time": {
                              "fieldName": "lastModifiedAt",
                              "fieldType": "DATETIME"
                            }
                          },
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.TimeStamp"
                          ],
                          "name": "lastModified",
                          "default": null,
                          "doc": "A timestamp documenting when the asset was last modified in the source Data Platform (not on DataHub)"
                        },
                        {
                          "deprecated": "Use GlobalTags aspect instead.",
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "tags",
                          "default": [],
                          "doc": "[Legacy] Unstructured tags for the dataset. Structured tags can be applied via the `GlobalTags` aspect.\nThis is now deprecated."
                        }
                      ],
                      "doc": "Properties associated with a Dataset"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "editableDatasetProperties"
                      },
                      "name": "EditableDatasetProperties",
                      "namespace": "com.linkedin.pegasus2avro.dataset",
                      "fields": [
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "created",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                          "name": "lastModified",
                          "default": {
                            "actor": "urn:li:corpuser:unknown",
                            "impersonator": null,
                            "time": 0,
                            "message": null
                          },
                          "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
                        },
                        {
                          "type": [
                            "null",
                            "com.linkedin.pegasus2avro.common.AuditStamp"
                          ],
                          "name": "deleted",
                          "default": null,
                          "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
                        },
                        {
                          "Searchable": {
                            "fieldName": "editedDescription",
                            "fieldType": "TEXT"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "description",
                          "default": null,
                          "doc": "Documentation of the dataset"
                        },
                        {
                          "Searchable": {
                            "fieldName": "editedName",
                            "fieldType": "TEXT_PARTIAL"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "name",
                          "default": null,
                          "doc": "Editable display name of the Dataset"
                        }
                      ],
                      "doc": "EditableDatasetProperties stores editable changes made to dataset properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "datasetDeprecation"
                      },
                      "Deprecated": true,
                      "name": "DatasetDeprecation",
                      "namespace": "com.linkedin.pegasus2avro.dataset",
                      "fields": [
                        {
                          "Searchable": {
                            "fieldType": "BOOLEAN",
                            "weightsPerFieldValue": {
                              "true": 0.5
                            }
                          },
                          "type": "boolean",
                          "name": "deprecated",
                          "doc": "Whether the dataset is deprecated by owner."
                        },
                        {
                          "type": [
                            "null",
                            "long"
                          ],
                          "name": "decommissionTime",
                          "default": null,
                          "doc": "The time user plan to decommission this dataset."
                        },
                        {
                          "type": "string",
                          "name": "note",
                          "doc": "Additional information about the dataset deprecation plan, such as the wiki, doc, RB."
                        },
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "actor",
                          "default": null,
                          "doc": "The corpuser URN which will be credited for modifying this deprecation content."
                        }
                      ],
                      "doc": "Dataset deprecation status\nDeprecated! This aspect is deprecated in favor of the more-general-purpose 'Deprecation' aspect."
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "datasetUpstreamLineage"
                      },
                      "deprecated": "use UpstreamLineage.fineGrainedLineages instead",
                      "name": "DatasetUpstreamLineage",
                      "namespace": "com.linkedin.pegasus2avro.dataset",
                      "fields": [
                        {
                          "type": {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "deprecated": "use FineGrainedLineage instead",
                              "name": "DatasetFieldMapping",
                              "namespace": "com.linkedin.pegasus2avro.dataset",
                              "fields": [
                                {
                                  "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                  "name": "created",
                                  "doc": "Audit stamp containing who reported the field mapping and when"
                                },
                                {
                                  "type": [
                                    {
                                      "type": "enum",
                                      "symbolDocs": {
                                        "BLACKBOX": "Field transformation expressed as unknown black box function.",
                                        "IDENTITY": "Field transformation expressed as Identity function."
                                      },
                                      "name": "TransformationType",
                                      "namespace": "com.linkedin.pegasus2avro.common.fieldtransformer",
                                      "symbols": [
                                        "BLACKBOX",
                                        "IDENTITY"
                                      ],
                                      "doc": "Type of the transformation involved in generating destination fields from source fields."
                                    },
                                    {
                                      "type": "record",
                                      "name": "UDFTransformer",
                                      "namespace": "com.linkedin.pegasus2avro.common.fieldtransformer",
                                      "fields": [
                                        {
                                          "type": "string",
                                          "name": "udf",
                                          "doc": "A UDF mentioning how the source fields got transformed to destination field. This is the FQCN(Fully Qualified Class Name) of the udf."
                                        }
                                      ],
                                      "doc": "Field transformation expressed in UDF"
                                    }
                                  ],
                                  "name": "transformation",
                                  "doc": "Transfomration function between the fields involved"
                                },
                                {
                                  "type": {
                                    "type": "array",
                                    "items": [
                                      "string"
                                    ]
                                  },
                                  "name": "sourceFields",
                                  "doc": "Source fields from which the fine grained lineage is derived"
                                },
                                {
                                  "deprecated": "use SchemaFieldPath and represent as generic Urn instead",
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.DatasetFieldUrn"
                                  },
                                  "Urn": "DatasetFieldUrn",
                                  "type": "string",
                                  "name": "destinationField",
                                  "doc": "Destination field which is derived from source fields"
                                }
                              ],
                              "doc": "Representation of mapping between fields in source dataset to the field in destination dataset"
                            }
                          },
                          "name": "fieldMappings",
                          "doc": "Upstream to downstream field level lineage mappings"
                        }
                      ],
                      "doc": "Fine Grained upstream lineage for fields in a dataset"
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "upstreamLineage"
                      },
                      "name": "UpstreamLineage",
                      "namespace": "com.linkedin.pegasus2avro.dataset",
                      "fields": [
                        {
                          "type": {
                            "type": "array",
                            "items": {
                              "type": "record",
                              "name": "Upstream",
                              "namespace": "com.linkedin.pegasus2avro.dataset",
                              "fields": [
                                {
                                  "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                  "name": "auditStamp",
                                  "default": {
                                    "actor": "urn:li:corpuser:unknown",
                                    "impersonator": null,
                                    "time": 0,
                                    "message": null
                                  },
                                  "doc": "Audit stamp containing who reported the lineage and when."
                                },
                                {
                                  "type": [
                                    "null",
                                    "com.linkedin.pegasus2avro.common.AuditStamp"
                                  ],
                                  "name": "created",
                                  "default": null,
                                  "doc": "Audit stamp containing who created the lineage and when."
                                },
                                {
                                  "Relationship": {
                                    "createdActor": "upstreams/*/created/actor",
                                    "createdOn": "upstreams/*/created/time",
                                    "entityTypes": [
                                      "dataset"
                                    ],
                                    "isLineage": true,
                                    "name": "DownstreamOf",
                                    "properties": "upstreams/*/properties",
                                    "updatedActor": "upstreams/*/auditStamp/actor",
                                    "updatedOn": "upstreams/*/auditStamp/time",
                                    "via": "upstreams/*/query"
                                  },
                                  "Searchable": {
                                    "fieldName": "upstreams",
                                    "fieldType": "URN",
                                    "hasValuesFieldName": "hasUpstreams",
                                    "queryByDefault": false
                                  },
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.DatasetUrn"
                                  },
                                  "Urn": "DatasetUrn",
                                  "entityTypes": [
                                    "dataset"
                                  ],
                                  "type": "string",
                                  "name": "dataset",
                                  "doc": "The upstream dataset the lineage points to"
                                },
                                {
                                  "type": {
                                    "type": "enum",
                                    "symbolDocs": {
                                      "COPY": "Direct copy without modification",
                                      "TRANSFORMED": "Transformed data with modification (format or content change)",
                                      "VIEW": "Represents a view defined on the sources e.g. Hive view defined on underlying hive tables or a Hive table pointing to a HDFS dataset or DALI view defined on multiple sources"
                                    },
                                    "name": "DatasetLineageType",
                                    "namespace": "com.linkedin.pegasus2avro.dataset",
                                    "symbols": [
                                      "COPY",
                                      "TRANSFORMED",
                                      "VIEW"
                                    ],
                                    "doc": "The various types of supported dataset lineage"
                                  },
                                  "name": "type",
                                  "doc": "The type of the lineage"
                                },
                                {
                                  "type": [
                                    "null",
                                    {
                                      "type": "map",
                                      "values": "string"
                                    }
                                  ],
                                  "name": "properties",
                                  "default": null,
                                  "doc": "A generic properties bag that allows us to store specific information on this graph edge."
                                },
                                {
                                  "java": {
                                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                  },
                                  "Urn": "Urn",
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "name": "query",
                                  "default": null,
                                  "doc": "If the lineage is generated by a query, a reference to the query"
                                }
                              ],
                              "doc": "Upstream lineage information about a dataset including the source reporting the lineage"
                            }
                          },
                          "name": "upstreams",
                          "doc": "List of upstream dataset lineage information"
                        },
                        {
                          "Relationship": {
                            "/*/upstreams/*": {
                              "entityTypes": [
                                "dataset",
                                "schemaField"
                              ],
                              "name": "DownstreamOf"
                            }
                          },
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "com.linkedin.pegasus2avro.dataset.FineGrainedLineage"
                            }
                          ],
                          "name": "fineGrainedLineages",
                          "default": null,
                          "doc": " List of fine-grained lineage information, including field-level lineage"
                        }
                      ],
                      "doc": "Upstream lineage of a dataset"
                    },
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.schema.SchemaMetadata",
                    "com.linkedin.pegasus2avro.schema.EditableSchemaMetadata",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.GlossaryTerms",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "viewProperties"
                      },
                      "name": "ViewProperties",
                      "namespace": "com.linkedin.pegasus2avro.dataset",
                      "fields": [
                        {
                          "Searchable": {
                            "fieldType": "BOOLEAN",
                            "weightsPerFieldValue": {
                              "true": 0.5
                            }
                          },
                          "type": "boolean",
                          "name": "materialized",
                          "doc": "Whether the view is materialized"
                        },
                        {
                          "type": "string",
                          "name": "viewLogic",
                          "doc": "The view logic"
                        },
                        {
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "formattedViewLogic",
                          "default": null,
                          "doc": "The formatted view logic. This is particularly used for SQL sources, where the SQL\nlogic is formatted for better readability, and with dbt, where this contains the\ncompiled SQL logic."
                        },
                        {
                          "type": "string",
                          "name": "viewLanguage",
                          "doc": "The view logic language / dialect"
                        }
                      ],
                      "doc": "Details about a View. \ne.g. Gets activated when subTypes is view"
                    },
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the dataset. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific dataset entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dataProcessKey",
              "name": "dataProcess"
            },
            "deprecated": "Use DataJob instead.",
            "name": "DataProcessSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DataProcessUrn"
                },
                "Urn": "DataProcessUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DataProcessKey",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataProcessInfo"
                      },
                      "name": "DataProcessInfo",
                      "namespace": "com.linkedin.pegasus2avro.dataprocess",
                      "fields": [
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "dataset"
                              ],
                              "isLineage": true,
                              "name": "Consumes"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "inputs",
                              "fieldType": "URN",
                              "numValuesFieldName": "numInputDatasets",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "DatasetUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "inputs",
                          "default": null,
                          "doc": "the inputs of the data process"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "dataset"
                              ],
                              "isLineage": true,
                              "name": "Consumes"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "outputs",
                              "fieldType": "URN",
                              "numValuesFieldName": "numOutputDatasets",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "DatasetUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "outputs",
                          "default": null,
                          "doc": "the outputs of the data process"
                        }
                      ],
                      "doc": "The inputs and outputs of this data process"
                    },
                    "com.linkedin.pegasus2avro.common.Status"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the data process. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific Data process entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dataPlatformKey",
              "name": "dataPlatform"
            },
            "name": "DataPlatformSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.DataPlatformUrn"
                },
                "Urn": "DataPlatformUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DataPlatformKey",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataPlatformInfo"
                      },
                      "name": "DataPlatformInfo",
                      "namespace": "com.linkedin.pegasus2avro.dataplatform",
                      "fields": [
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": false,
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM"
                          },
                          "validate": {
                            "strlen": {
                              "max": 15
                            }
                          },
                          "type": "string",
                          "name": "name",
                          "doc": "Name of the data platform"
                        },
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldType": "WORD_GRAM"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "displayName",
                          "default": null,
                          "doc": "The name that will be used for displaying a platform type."
                        },
                        {
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "FILE_SYSTEM": "Value for a file system, e.g. hdfs",
                              "KEY_VALUE_STORE": "Value for a key value store, e.g. espresso, voldemort",
                              "MESSAGE_BROKER": "Value for a message broker, e.g. kafka",
                              "OBJECT_STORE": "Value for an object store, e.g. ambry",
                              "OLAP_DATASTORE": "Value for an OLAP datastore, e.g. pinot",
                              "OTHERS": "Value for other platforms, e.g salesforce, dovetail",
                              "QUERY_ENGINE": "Value for a query engine, e.g. presto",
                              "RELATIONAL_DB": "Value for a relational database, e.g. oracle, mysql",
                              "SEARCH_ENGINE": "Value for a search engine, e.g seas"
                            },
                            "name": "PlatformType",
                            "namespace": "com.linkedin.pegasus2avro.dataplatform",
                            "symbols": [
                              "FILE_SYSTEM",
                              "KEY_VALUE_STORE",
                              "MESSAGE_BROKER",
                              "OBJECT_STORE",
                              "OLAP_DATASTORE",
                              "OTHERS",
                              "QUERY_ENGINE",
                              "RELATIONAL_DB",
                              "SEARCH_ENGINE"
                            ],
                            "doc": "Platform types available at LinkedIn"
                          },
                          "name": "type",
                          "doc": "Platform type this data platform describes"
                        },
                        {
                          "type": "string",
                          "name": "datasetNameDelimiter",
                          "doc": "The delimiter in the dataset names on the data platform, e.g. '/' for HDFS and '.' for Oracle"
                        },
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.url.Url",
                            "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "logoUrl",
                          "default": null,
                          "doc": "The URL for a logo associated with the platform"
                        }
                      ],
                      "doc": "Information about a data platform"
                    }
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the data platform. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific dataplatform entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "mlModelKey",
              "name": "mlModel"
            },
            "name": "MLModelSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.MLModelUrn"
                },
                "Urn": "MLModelUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.MLModelKey",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.ml.metadata.MLModelProperties",
                    "com.linkedin.pegasus2avro.ml.metadata.IntendedUse",
                    "com.linkedin.pegasus2avro.ml.metadata.MLModelFactorPrompts",
                    "com.linkedin.pegasus2avro.ml.metadata.Metrics",
                    "com.linkedin.pegasus2avro.ml.metadata.EvaluationData",
                    "com.linkedin.pegasus2avro.ml.metadata.TrainingData",
                    "com.linkedin.pegasus2avro.ml.metadata.QuantitativeAnalyses",
                    "com.linkedin.pegasus2avro.ml.metadata.EthicalConsiderations",
                    "com.linkedin.pegasus2avro.ml.metadata.CaveatsAndRecommendations",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.ml.metadata.SourceCode",
                    "com.linkedin.pegasus2avro.common.Status",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "cost"
                      },
                      "name": "Cost",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "type": {
                            "type": "enum",
                            "symbolDocs": {
                              "ORG_COST_TYPE": "Org Cost Type to which the Cost of this entity should be attributed to"
                            },
                            "name": "CostType",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "symbols": [
                              "ORG_COST_TYPE"
                            ],
                            "doc": "Type of Cost Code"
                          },
                          "name": "costType"
                        },
                        {
                          "type": {
                            "type": "record",
                            "name": "CostCost",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  "double"
                                ],
                                "name": "costId",
                                "default": null
                              },
                              {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "name": "costCode",
                                "default": null
                              },
                              {
                                "type": {
                                  "type": "enum",
                                  "name": "CostCostDiscriminator",
                                  "namespace": "com.linkedin.pegasus2avro.common",
                                  "symbols": [
                                    "costId",
                                    "costCode"
                                  ]
                                },
                                "name": "fieldDiscriminator",
                                "doc": "Contains the name of the field that has its value set."
                              }
                            ]
                          },
                          "name": "cost"
                        }
                      ]
                    },
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "deprecation"
                      },
                      "name": "Deprecation",
                      "namespace": "com.linkedin.pegasus2avro.common",
                      "fields": [
                        {
                          "Searchable": {
                            "addToFilters": true,
                            "fieldType": "BOOLEAN",
                            "filterNameOverride": "Deprecated",
                            "weightsPerFieldValue": {
                              "true": 0.5
                            }
                          },
                          "type": "boolean",
                          "name": "deprecated",
                          "doc": "Whether the entity is deprecated."
                        },
                        {
                          "type": [
                            "null",
                            "long"
                          ],
                          "name": "decommissionTime",
                          "default": null,
                          "doc": "The time user plan to decommission this entity."
                        },
                        {
                          "type": "string",
                          "name": "note",
                          "doc": "Additional information about the entity deprecation plan, such as the wiki, doc, RB."
                        },
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": "string",
                          "name": "actor",
                          "doc": "The user URN which will be credited for modifying this deprecation content."
                        },
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "replacement",
                          "default": null
                        }
                      ],
                      "doc": "Deprecation status of an entity"
                    },
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the MLModel. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "MLModel Snapshot entity details."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "mlPrimaryKeyKey",
              "name": "mlPrimaryKey"
            },
            "name": "MLPrimaryKeySnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.MLPrimaryKeyKey",
                    "com.linkedin.pegasus2avro.ml.metadata.MLPrimaryKeyProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.Deprecation",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the MLPrimaryKey. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "mlFeatureKey",
              "name": "mlFeature"
            },
            "name": "MLFeatureSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.MLFeatureUrn"
                },
                "Urn": "MLFeatureUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.MLFeatureKey",
                    "com.linkedin.pegasus2avro.ml.metadata.MLFeatureProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.Deprecation",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the MLFeature. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "mlFeatureTableKey",
              "name": "mlFeatureTable"
            },
            "name": "MLFeatureTableSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.MLFeatureTableKey",
                    "com.linkedin.pegasus2avro.ml.metadata.MLFeatureTableProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.InstitutionalMemory",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.Deprecation",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the MLFeatureTable. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "mlModelDeploymentKey",
              "name": "mlModelDeployment"
            },
            "name": "MLModelDeploymentSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.MLModelDeploymentKey",
                    "com.linkedin.pegasus2avro.ml.metadata.MLModelDeploymentProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.Deprecation",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the MLModelDeployment. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "mlModelGroupKey",
              "name": "mlModelGroup"
            },
            "name": "MLModelGroupSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.MLModelGroupKey",
                    "com.linkedin.pegasus2avro.ml.metadata.MLModelGroupProperties",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.Deprecation",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.common.GlobalTags",
                    "com.linkedin.pegasus2avro.common.DataPlatformInstance",
                    "com.linkedin.pegasus2avro.common.BrowsePathsV2"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the MLModelGroup. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ]
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "tagKey",
              "name": "tag"
            },
            "name": "TagSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.TagUrn"
                },
                "Urn": "TagUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.TagKey",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "tagProperties"
                      },
                      "name": "TagProperties",
                      "namespace": "com.linkedin.pegasus2avro.tag",
                      "fields": [
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM"
                          },
                          "type": "string",
                          "name": "name",
                          "doc": "Display name of the tag"
                        },
                        {
                          "Searchable": {},
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "description",
                          "default": null,
                          "doc": "Documentation of the tag"
                        },
                        {
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "colorHex",
                          "default": null,
                          "doc": "The color associated with the Tag in Hex. For example #FFFFFF."
                        }
                      ],
                      "doc": "Properties associated with a Tag"
                    },
                    "com.linkedin.pegasus2avro.common.Status"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the dataset. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific dataset entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "glossaryTermKey",
              "name": "glossaryTerm"
            },
            "name": "GlossaryTermSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.GlossaryTermUrn"
                },
                "Urn": "GlossaryTermUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.GlossaryTermKey",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "glossaryTermInfo"
                      },
                      "name": "GlossaryTermInfo",
                      "namespace": "com.linkedin.pegasus2avro.glossary",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldType": "TEXT",
                              "queryByDefault": true
                            }
                          },
                          "type": {
                            "type": "map",
                            "values": "string"
                          },
                          "name": "customProperties",
                          "default": {},
                          "doc": "Custom property bag."
                        },
                        {
                          "Searchable": {
                            "fieldType": "TEXT_PARTIAL"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "id",
                          "default": null,
                          "doc": "Optional id for the term"
                        },
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "name",
                          "default": null,
                          "doc": "Display name of the term"
                        },
                        {
                          "Searchable": {},
                          "type": "string",
                          "name": "definition",
                          "doc": "Definition of business term."
                        },
                        {
                          "Relationship": {
                            "entityTypes": [
                              "glossaryNode"
                            ],
                            "name": "IsPartOf"
                          },
                          "Searchable": {
                            "fieldName": "parentNode",
                            "fieldType": "URN",
                            "hasValuesFieldName": "hasParentNode"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.GlossaryNodeUrn"
                          },
                          "Urn": "GlossaryNodeUrn",
                          "entityTypes": [
                            "glossaryNode"
                          ],
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "parentNode",
                          "default": null,
                          "doc": "Parent node of the glossary term"
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "type": "string",
                          "name": "termSource",
                          "doc": "Source of the Business Term (INTERNAL or EXTERNAL) with default value as INTERNAL"
                        },
                        {
                          "Searchable": {
                            "fieldType": "KEYWORD"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "sourceRef",
                          "default": null,
                          "doc": "External Reference to the business-term"
                        },
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.url.Url",
                            "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "sourceUrl",
                          "default": null,
                          "doc": "The abstracted URL such as https://spec.edmcouncil.org/fibo/ontology/FBC/FinancialInstruments/FinancialInstruments/CashInstrument."
                        },
                        {
                          "deprecated": true,
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "rawSchema",
                          "default": null,
                          "doc": "Schema definition of the glossary term"
                        }
                      ],
                      "doc": "Properties associated with a GlossaryTerm"
                    },
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "glossaryRelatedTerms"
                      },
                      "name": "GlossaryRelatedTerms",
                      "namespace": "com.linkedin.pegasus2avro.glossary",
                      "fields": [
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "IsA"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "isRelatedTerms",
                              "fieldType": "URN",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "isRelatedTerms",
                          "default": null,
                          "doc": "The relationship Is A with glossary term"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "HasA"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "hasRelatedTerms",
                              "fieldType": "URN",
                              "queryByDefault": false
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "hasRelatedTerms",
                          "default": null,
                          "doc": "The relationship Has A with glossary term"
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "HasValue"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "values",
                              "fieldType": "URN"
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "values",
                          "default": null,
                          "doc": "The relationship Has Value with glossary term.\nThese are fixed value a term has. For example a ColorEnum where RED, GREEN and YELLOW are fixed values."
                        },
                        {
                          "Relationship": {
                            "/*": {
                              "entityTypes": [
                                "glossaryTerm"
                              ],
                              "name": "IsRelatedTo"
                            }
                          },
                          "Searchable": {
                            "/*": {
                              "fieldName": "relatedTerms",
                              "fieldType": "URN"
                            }
                          },
                          "Urn": "GlossaryTermUrn",
                          "urn_is_array": true,
                          "type": [
                            "null",
                            {
                              "type": "array",
                              "items": "string"
                            }
                          ],
                          "name": "relatedTerms",
                          "default": null,
                          "doc": "The relationship isRelatedTo with glossary term"
                        }
                      ],
                      "doc": "Has A / Is A lineage information about a glossary Term reporting the lineage"
                    }
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the GlossaryTerm. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific GlossaryTerm entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "glossaryNodeKey",
              "name": "glossaryNode"
            },
            "name": "GlossaryNodeSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.GlossaryNodeUrn"
                },
                "Urn": "GlossaryNodeUrn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.GlossaryNodeKey",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "glossaryNodeInfo"
                      },
                      "name": "GlossaryNodeInfo",
                      "namespace": "com.linkedin.pegasus2avro.glossary",
                      "fields": [
                        {
                          "Searchable": {
                            "/*": {
                              "fieldType": "TEXT",
                              "queryByDefault": true
                            }
                          },
                          "type": {
                            "type": "map",
                            "values": "string"
                          },
                          "name": "customProperties",
                          "default": {},
                          "doc": "Custom property bag."
                        },
                        {
                          "Searchable": {},
                          "type": "string",
                          "name": "definition",
                          "doc": "Definition of business node"
                        },
                        {
                          "Relationship": {
                            "entityTypes": [
                              "glossaryNode"
                            ],
                            "name": "IsPartOf"
                          },
                          "Searchable": {
                            "fieldName": "parentNode",
                            "fieldType": "URN",
                            "hasValuesFieldName": "hasParentNode"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.GlossaryNodeUrn"
                          },
                          "Urn": "GlossaryNodeUrn",
                          "entityTypes": [
                            "glossaryNode"
                          ],
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "parentNode",
                          "default": null,
                          "doc": "Parent node of the glossary term"
                        },
                        {
                          "Searchable": {
                            "boostScore": 10.0,
                            "enableAutocomplete": true,
                            "fieldName": "displayName",
                            "fieldNameAliases": [
                              "_entityName"
                            ],
                            "fieldType": "WORD_GRAM"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "name",
                          "default": null,
                          "doc": "Display name of the node"
                        },
                        {
                          "Searchable": {
                            "fieldType": "TEXT_PARTIAL"
                          },
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "id",
                          "default": null,
                          "doc": "Optional id for the GlossaryNode"
                        }
                      ],
                      "doc": "Properties associated with a GlossaryNode"
                    },
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the GlossaryNode. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific GlossaryNode entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dataHubPolicyKey",
              "name": "dataHubPolicy"
            },
            "name": "DataHubPolicySnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DataHubPolicyKey",
                    "com.linkedin.pegasus2avro.policy.DataHubPolicyInfo"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the DataHub access policy."
              }
            ],
            "doc": "A metadata snapshot for DataHub Access Policy data."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "schemaFieldKey",
              "name": "schemaField"
            },
            "name": "SchemaFieldSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.SchemaFieldKey"
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the dataset. Depending on the use case, this can either be all, or a selection, of supported aspects."
              }
            ],
            "doc": "A metadata snapshot for a specific schema field entity."
          },
          {
            "type": "record",
            "Entity": {
              "keyAspect": "dataHubRetentionKey",
              "name": "dataHubRetention"
            },
            "name": "DataHubRetentionSnapshot",
            "namespace": "com.linkedin.pegasus2avro.metadata.snapshot",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "URN for the entity the metadata snapshot is associated with."
              },
              {
                "type": {
                  "type": "array",
                  "items": [
                    "com.linkedin.pegasus2avro.metadata.key.DataHubRetentionKey",
                    {
                      "type": "record",
                      "Aspect": {
                        "name": "dataHubRetentionConfig"
                      },
                      "name": "DataHubRetentionConfig",
                      "namespace": "com.linkedin.pegasus2avro.retention",
                      "fields": [
                        {
                          "type": {
                            "type": "record",
                            "name": "Retention",
                            "namespace": "com.linkedin.pegasus2avro.retention",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "VersionBasedRetention",
                                    "namespace": "com.linkedin.pegasus2avro.retention",
                                    "fields": [
                                      {
                                        "type": "int",
                                        "name": "maxVersions"
                                      }
                                    ],
                                    "doc": "Keep max N latest records"
                                  }
                                ],
                                "name": "version",
                                "default": null
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "record",
                                    "name": "TimeBasedRetention",
                                    "namespace": "com.linkedin.pegasus2avro.retention",
                                    "fields": [
                                      {
                                        "type": "int",
                                        "name": "maxAgeInSeconds"
                                      }
                                    ],
                                    "doc": "Keep records that are less than X seconds old"
                                  }
                                ],
                                "name": "time",
                                "default": null
                              }
                            ],
                            "doc": "Base class that encapsulates different retention policies.\nOnly one of the fields should be set"
                          },
                          "name": "retention"
                        }
                      ]
                    }
                  ]
                },
                "name": "aspects",
                "doc": "The list of metadata aspects associated with the DataHub access policy."
              }
            ],
            "doc": "A metadata snapshot for DataHub Access Policy data."
          }
        ],
        "name": "proposedSnapshot",
        "doc": "Snapshot of the proposed metadata change. Include only the aspects affected by the change in the snapshot."
      },
      {
        "type": [
          "null"
        ],
        "name": "proposedDelta",
        "default": null,
        "doc": "Delta of the proposed metadata partial update."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.SystemMetadata"
        ],
        "name": "systemMetadata",
        "default": null,
        "doc": "Metadata around how the snapshot was ingested"
      }
    ],
    "doc": "Kafka event for proposing a metadata change for an entity. A corresponding MetadataAuditEvent is emitted when the change is accepted and committed, otherwise a FailedMetadataChangeEvent will be emitted instead."
  },
  {
    "type": "record",
    "name": "PlatformEvent",
    "namespace": "com.linkedin.pegasus2avro.mxe",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "PlatformEventHeader",
          "namespace": "com.linkedin.pegasus2avro.mxe",
          "fields": [
            {
              "type": "long",
              "name": "timestampMillis",
              "doc": "The event timestamp field as epoch at UTC in milli seconds."
            }
          ],
          "doc": "A header included with each DataHub platform event."
        },
        "name": "header",
        "doc": "Header information stored with the event."
      },
      {
        "type": "string",
        "name": "name",
        "doc": "The name of the event, e.g. the type of event. For example, 'notificationRequestEvent', 'entityChangeEvent'"
      },
      {
        "type": {
          "type": "record",
          "name": "GenericPayload",
          "namespace": "com.linkedin.pegasus2avro.mxe",
          "fields": [
            {
              "type": "bytes",
              "name": "value",
              "doc": "The value of the event, serialized as bytes."
            },
            {
              "type": "string",
              "name": "contentType",
              "doc": "The content type, which represents the fashion in which the event was serialized.\nThe only type currently supported is application/json."
            }
          ],
          "doc": "Generic payload record structure for serializing a Platform Event."
        },
        "name": "payload",
        "doc": "The event payload."
      }
    ],
    "doc": "A DataHub Platform Event."
  },
  "com.linkedin.pegasus2avro.mxe.SystemMetadata",
  {
    "type": "record",
    "name": "MetadataChangeProposal",
    "namespace": "com.linkedin.pegasus2avro.mxe",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.events.KafkaAuditHeader"
        ],
        "name": "auditHeader",
        "default": null,
        "doc": "Kafka audit header. Currently remains unused in the open source."
      },
      {
        "type": "string",
        "name": "entityType",
        "doc": "Type of the entity being written to"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "entityUrn",
        "default": null,
        "doc": "Urn of the entity being written"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.GenericAspect"
        ],
        "name": "entityKeyAspect",
        "default": null,
        "doc": "Key aspect of the entity being written"
      },
      {
        "type": "com.linkedin.pegasus2avro.events.metadata.ChangeType",
        "name": "changeType",
        "doc": "Type of change being proposed"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "aspectName",
        "default": null,
        "doc": "Aspect of the entity being written to\nNot filling this out implies that the writer wants to affect the entire entity\nNote: This is only valid for CREATE, UPSERT, and DELETE operations."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.GenericAspect"
        ],
        "name": "aspect",
        "default": null,
        "doc": "The value of the new aspect."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.mxe.SystemMetadata"
        ],
        "name": "systemMetadata",
        "default": null,
        "doc": "System properties that one might want to attach to an event"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "headers",
        "default": null,
        "doc": "Headers - intended to mimic http headers"
      }
    ],
    "doc": "Kafka event for proposing a metadata change for an entity. A corresponding MetadataChangeLog is emitted when the change is accepted and committed, otherwise a FailedMetadataChangeProposal will be emitted instead."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "domainProperties"
    },
    "name": "DomainProperties",
    "namespace": "com.linkedin.pegasus2avro.domain",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the Domain"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Domain"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Relationship": {
          "entityTypes": [
            "domain"
          ],
          "name": "IsPartOf"
        },
        "Searchable": {
          "fieldName": "parentDomain",
          "fieldType": "URN",
          "hasValuesFieldName": "hasParentDomain"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "domain"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "parentDomain",
        "default": null,
        "doc": "Optional: Parent of the domain"
      }
    ],
    "doc": "Information about a Domain"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "domains"
    },
    "name": "Domains",
    "namespace": "com.linkedin.pegasus2avro.domain",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "domain"
            ],
            "name": "AssociatedWith"
          }
        },
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "domains",
            "fieldType": "URN",
            "filterNameOverride": "In Domain",
            "hasValuesFieldName": "hasDomain"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "domains",
        "doc": "The Domains attached to an Asset"
      }
    ],
    "doc": "Links from an Asset to its Domains"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubActionInfo"
    },
    "name": "DataHubActionInfo",
    "namespace": "com.linkedin.pegasus2avro.action",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The display name of the action"
      },
      {
        "type": "string",
        "name": "type",
        "doc": "The type of the action itself, e.g. tag_propagation. Should match the recipe."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "category",
        "default": null,
        "doc": "The category of the action"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "The description of the action"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubActionConfig",
          "namespace": "com.linkedin.pegasus2avro.action",
          "fields": [
            {
              "type": "string",
              "name": "recipe",
              "doc": "The JSON recipe to use for the automation"
            },
            {
              "type": [
                "null",
                "string"
              ],
              "name": "executorId",
              "default": null,
              "doc": "The id of the executor pool to use to execute the automation. Defaults to 'default' (runs locally embedded)"
            }
          ]
        },
        "name": "config",
        "doc": "Parameters associated with the Action"
      },
      {
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "ACTIVE": "The action is supposed to be active",
              "INACTIVE": "The action should be inactive"
            },
            "name": "DataHubActionState",
            "namespace": "com.linkedin.pegasus2avro.action",
            "symbols": [
              "ACTIVE",
              "INACTIVE"
            ]
          },
          "null"
        ],
        "name": "state",
        "default": "ACTIVE",
        "doc": "The intended state of the action"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubActionSource",
            "namespace": "com.linkedin.pegasus2avro.action",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "sourceType"
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "SYSTEM": "A system internal source, e.g. for running search indexing operations, feature computation, etc."
                  },
                  "name": "DataHubActionRequestSource",
                  "namespace": "com.linkedin.pegasus2avro.action",
                  "symbols": [
                    "SYSTEM"
                  ]
                },
                "name": "type",
                "doc": "The source type of the ingestion source"
              }
            ]
          }
        ],
        "name": "source",
        "default": null,
        "doc": "The source or origin of the Action\n\nCurrently CLI and UI do not provide an explicit source."
      }
    ],
    "doc": "Info about a DataHub Action Pipeline"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubActionStatus"
    },
    "name": "DataHubActionStatus",
    "namespace": "com.linkedin.pegasus2avro.action",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubActionStageStatus",
            "namespace": "com.linkedin.pegasus2avro.action",
            "fields": [
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "reportedTime",
                "doc": "The time and source of the last update to the status"
              },
              {
                "type": {
                  "type": "enum",
                  "name": "DataHubActionStageStatusCode",
                  "namespace": "com.linkedin.pegasus2avro.action",
                  "symbols": [
                    "RUNNING",
                    "SUCCESS",
                    "FAILED",
                    "STOPPED",
                    "CANCELLED"
                  ],
                  "doc": "Captures the various status codes for different stages of a DataHub Action Pipeline"
                },
                "name": "statusCode",
                "doc": "The status of the stage"
              },
              {
                "type": "long",
                "name": "startTime",
                "doc": "The time the most recent invocation of the stage was started"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "endTime",
                "default": null,
                "doc": "The time the most recent invocation of the stage completed (either\nsuccessfully or unsuccessfully)\nIn the case of a running stage, this field should be null"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "lastSuccess",
                "default": null,
                "doc": "The time the most recent invocation of the stage was successful"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "report",
                "default": null,
                "doc": "Logs from the action stage."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "StructuredExecutionReport",
                    "namespace": "com.linkedin.pegasus2avro.execution",
                    "fields": [
                      {
                        "type": "string",
                        "name": "type",
                        "doc": "The type of the structured report. (e.g. INGESTION_REPORT, TEST_CONNECTION_REPORT, etc.)"
                      },
                      {
                        "type": "string",
                        "name": "serializedValue",
                        "doc": "The serialized value of the structured report"
                      },
                      {
                        "type": "string",
                        "name": "contentType",
                        "doc": "The content-type of the serialized value (e.g. application/json, application/json;gzip etc.)"
                      }
                    ],
                    "doc": "A flexible carrier for structured results of an execution request.\nThe goal is to allow for free flow of structured responses from execution tasks to the orchestrator or observer.\nThe full spectrum of different execution report types is not intended to be modeled by this object."
                  }
                ],
                "name": "structuredReport",
                "default": null,
                "doc": "A structured report."
              },
              {
                "type": {
                  "type": "map",
                  "values": "string"
                },
                "name": "customProperties",
                "default": {},
                "doc": "Additional properties for the pipeline status"
              }
            ]
          }
        ],
        "name": "bootstrap",
        "default": null,
        "doc": "Status of the bootstrap pipeline if applicable"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.action.DataHubActionStageStatus"
        ],
        "name": "live",
        "default": null,
        "doc": "Status of the live pipeline"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.action.DataHubActionStageStatus"
        ],
        "name": "rollback",
        "default": null,
        "doc": "Status of the rollback pipeline if applicable"
      }
    ],
    "doc": "Status about a DataHub Action Pipeline\nThis combines status from all the three stages of the pipeline - bootstrap, live and rollback"
  },
  "com.linkedin.pegasus2avro.retention.DataHubRetentionConfig",
  "com.linkedin.pegasus2avro.dataprocess.DataProcessInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceOutput"
    },
    "name": "DataProcessInstanceOutput",
    "namespace": "com.linkedin.pegasus2avro.dataprocess",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset",
              "mlModel"
            ],
            "name": "Produces"
          }
        },
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "outputs",
            "fieldType": "URN",
            "numValuesFieldName": "numOutputs",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "outputs",
        "doc": "Output assets produced"
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "outputEdges/*/created/actor",
            "createdOn": "outputEdges/*/created/time",
            "entityTypes": [
              "dataset",
              "mlModel",
              "dataProcessInstance"
            ],
            "isLineage": true,
            "isUpstream": false,
            "name": "DataProcessInstanceProduces",
            "properties": "outputEdges/*/properties",
            "updatedActor": "outputEdges/*/lastModified/actor",
            "updatedOn": "outputEdges/*/lastModified/time"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.Edge"
          }
        ],
        "name": "outputEdges",
        "default": null,
        "doc": "Output assets produced by the data process instance during processing, with additional metadata.\nCounts as lineage.\nWill eventually deprecate the outputs field."
      }
    ],
    "doc": "Information about the outputs of a Data process"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceInput"
    },
    "name": "DataProcessInstanceInput",
    "namespace": "com.linkedin.pegasus2avro.dataprocess",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset",
              "mlModel"
            ],
            "name": "Consumes"
          }
        },
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldName": "inputs",
            "fieldType": "URN",
            "numValuesFieldName": "numInputs",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "inputs",
        "doc": "Input assets consumed"
      },
      {
        "Relationship": {
          "/*/destinationUrn": {
            "createdActor": "inputEdges/*/created/actor",
            "createdOn": "inputEdges/*/created/time",
            "entityTypes": [
              "dataset",
              "mlModel",
              "dataProcessInstance"
            ],
            "isLineage": true,
            "name": "DataProcessInstanceConsumes",
            "properties": "inputEdges/*/properties",
            "updatedActor": "inputEdges/*/lastModified/actor",
            "updatedOn": "inputEdges/*/lastModified/time"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.Edge"
          }
        ],
        "name": "inputEdges",
        "default": null,
        "doc": "Input assets consumed by the data process instance, with additional metadata.\nCounts as lineage.\nWill eventually deprecate the inputs field."
      }
    ],
    "doc": "Information about the inputs datasets of a Data process"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceRunEvent",
      "type": "timeseries"
    },
    "name": "DataProcessInstanceRunEvent",
    "namespace": "com.linkedin.pegasus2avro.dataprocess",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "hasValuesFieldName": "hasRunEvents"
        },
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "STARTED": "The status where the Data processing run is in."
          },
          "name": "DataProcessRunStatus",
          "namespace": "com.linkedin.pegasus2avro.dataprocess",
          "symbols": [
            "STARTED",
            "COMPLETE"
          ]
        },
        "name": "status"
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "attempt",
        "default": null,
        "doc": "Return the try number that this Instance Run is in"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataProcessInstanceRunResult",
            "namespace": "com.linkedin.pegasus2avro.dataprocess",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "FAILURE": " The Run Failed",
                    "SKIPPED": " The Run Skipped",
                    "SUCCESS": " The Run Succeeded",
                    "UP_FOR_RETRY": " The Run Failed and will Retry"
                  },
                  "name": "RunResultType",
                  "namespace": "com.linkedin.pegasus2avro.dataprocess",
                  "symbols": [
                    "SUCCESS",
                    "FAILURE",
                    "SKIPPED",
                    "UP_FOR_RETRY"
                  ]
                },
                "name": "type",
                "doc": " The final result, e.g. SUCCESS, FAILURE, SKIPPED, or UP_FOR_RETRY."
              },
              {
                "type": "string",
                "name": "nativeResultType",
                "doc": "It identifies the system where the native result comes from like Airflow, Azkaban, etc.."
              }
            ]
          }
        ],
        "name": "result",
        "default": null,
        "doc": "The final result of the Data Processing run."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "durationMillis",
        "default": null,
        "doc": "The duration of the run in milliseconds."
      }
    ],
    "doc": "An event representing the current status of data process run.\nDataProcessRunEvent should be used for reporting the status of a dataProcess' run."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceProperties"
    },
    "name": "DataProcessInstanceProperties",
    "namespace": "com.linkedin.pegasus2avro.dataprocess",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.url.Url",
          "coercerClass": "com.linkedin.pegasus2avro.common.url.UrlCoercer"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "externalUrl",
        "default": null,
        "doc": "URL where the reference exist"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Process name"
      },
      {
        "Searchable": {
          "addToFilters": true,
          "fieldName": "processType",
          "fieldType": "KEYWORD",
          "filterNameOverride": "Process Type"
        },
        "type": [
          "null",
          {
            "type": "enum",
            "name": "DataProcessType",
            "namespace": "com.linkedin.pegasus2avro.dataprocess",
            "symbols": [
              "BATCH_SCHEDULED",
              "BATCH_AD_HOC",
              "STREAMING"
            ]
          }
        ],
        "name": "type",
        "default": null,
        "doc": "Process type"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "created",
            "fieldType": "COUNT",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp containing who reported the lineage and when"
      }
    ],
    "doc": "The inputs and outputs of this data process"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataProcessInstanceRelationships"
    },
    "name": "DataProcessInstanceRelationships",
    "namespace": "com.linkedin.pegasus2avro.dataprocess",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataJob",
            "dataFlow",
            "dataset"
          ],
          "name": "InstanceOf"
        },
        "Searchable": {
          "/*": {
            "fieldName": "parentTemplate",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataJob",
          "dataFlow",
          "dataset"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "parentTemplate",
        "default": null,
        "doc": "The parent entity whose run instance it is"
      },
      {
        "Relationship": {
          "entityTypes": [
            "dataProcessInstance"
          ],
          "name": "ChildOf"
        },
        "Searchable": {
          "/*": {
            "fieldName": "parentInstance",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataProcessInstance"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "parentInstance",
        "default": null,
        "doc": "The parent DataProcessInstance where it belongs to.\nIf it is a Airflow Task then it should belong to an Airflow Dag run as well\nwhich will be another DataProcessInstance"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataProcessInstance"
            ],
            "name": "UpstreamOf"
          }
        },
        "Searchable": {
          "/*": {
            "fieldName": "upstream",
            "fieldType": "URN",
            "numValuesFieldName": "numUpstreams",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "upstreamInstances",
        "doc": "Input DataProcessInstance which triggered this dataprocess instance"
      }
    ],
    "doc": "Information about Data process relationships"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubConnectionDetails"
    },
    "name": "DataHubConnectionDetails",
    "namespace": "com.linkedin.pegasus2avro.connection",
    "fields": [
      {
        "Searchable": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "JSON": "A json-encoded set of connection details"
          },
          "name": "DataHubConnectionDetailsType",
          "namespace": "com.linkedin.pegasus2avro.connection",
          "symbols": [
            "JSON"
          ]
        },
        "name": "type",
        "doc": "The type of the connection. This defines the schema / encoding of the connection details."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "TEXT_PARTIAL"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the connection"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DataHubJsonConnection",
            "namespace": "com.linkedin.pegasus2avro.connection",
            "fields": [
              {
                "type": "string",
                "name": "encryptedBlob",
                "doc": "The encrypted JSON connection details."
              }
            ],
            "doc": "A set of connection details consisting of an encrypted JSON blob."
          }
        ],
        "name": "json",
        "default": null,
        "doc": "An JSON payload containing raw connection details.\nThis will be present if the type is JSON."
      }
    ],
    "doc": "Information about a connection to an external platform."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorPoolGlobalConfig"
    },
    "name": "RemoteExecutorPoolGlobalConfig",
    "namespace": "com.linkedin.pegasus2avro.executorglobalconfig",
    "fields": [
      {
        "type": "string",
        "name": "defaultExecutorPoolId",
        "doc": "The default pool to use for tasks that require remote executors.\nReferences 'id' in com.linkedin.pegasus2avro.metadata.key.RemoteExecutorPoolKey"
      }
    ],
    "doc": "Global singleton storing configs for remote executor pools."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubStepStateProperties"
    },
    "name": "DataHubStepStateProperties",
    "namespace": "com.linkedin.pegasus2avro.step",
    "fields": [
      {
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "properties",
        "default": {},
        "doc": "Description of the secret"
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp describing the last person to update it."
      }
    ],
    "doc": "The properties associated with a DataHub step state"
  },
  "com.linkedin.pegasus2avro.tag.TagProperties",
  {
    "type": "record",
    "deprecated": "Use DatasetUsageStatistics, or other UsageStatistics records, instead",
    "name": "UsageAggregation",
    "namespace": "com.linkedin.pegasus2avro.usage",
    "fields": [
      {
        "type": "long",
        "name": "bucket",
        "doc": " Bucket start time in milliseconds "
      },
      {
        "type": {
          "type": "enum",
          "name": "WindowDuration",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "YEAR",
            "MONTH",
            "WEEK",
            "DAY",
            "HOUR"
          ],
          "doc": "Enum to define the length of a bucket when doing aggregations"
        },
        "name": "duration",
        "doc": " Bucket duration "
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "resource",
        "doc": " Resource associated with these usage stats "
      },
      {
        "type": {
          "type": "record",
          "name": "UsageAggregationMetrics",
          "namespace": "com.linkedin.pegasus2avro.usage",
          "fields": [
            {
              "type": [
                "null",
                "int"
              ],
              "name": "uniqueUserCount",
              "default": null,
              "doc": " Unique user count "
            },
            {
              "type": [
                "null",
                {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "UserUsageCounts",
                    "namespace": "com.linkedin.pegasus2avro.usage",
                    "fields": [
                      {
                        "java": {
                          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                        },
                        "Urn": "Urn",
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "user",
                        "default": null
                      },
                      {
                        "type": "int",
                        "name": "count"
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "userEmail",
                        "default": null,
                        "doc": " If user_email is set, we attempt to resolve the user's urn upon ingest "
                      }
                    ],
                    "doc": " Records a single user's usage counts for a given resource "
                  }
                }
              ],
              "name": "users",
              "default": null,
              "doc": " Users within this bucket, with frequency counts "
            },
            {
              "type": [
                "null",
                "int"
              ],
              "name": "totalSqlQueries",
              "default": null,
              "doc": " Total SQL query count "
            },
            {
              "type": [
                "null",
                {
                  "type": "array",
                  "items": "string"
                }
              ],
              "name": "topSqlQueries",
              "default": null,
              "doc": " Frequent SQL queries; mostly makes sense for datasets in SQL databases "
            },
            {
              "type": [
                "null",
                {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "FieldUsageCounts",
                    "namespace": "com.linkedin.pegasus2avro.usage",
                    "fields": [
                      {
                        "type": "string",
                        "name": "fieldName"
                      },
                      {
                        "type": "int",
                        "name": "count"
                      }
                    ],
                    "doc": " Records field-level usage counts for a given resource "
                  }
                }
              ],
              "name": "fields",
              "default": null,
              "doc": " Field-level usage stats "
            }
          ],
          "doc": "Metrics for usage data for a given resource and bucket. Not all fields\nmake sense for all buckets, so every field is optional."
        },
        "name": "metrics",
        "doc": " Metrics associated with this bucket "
      }
    ],
    "doc": "Usage data for a given resource, rolled up into a bucket."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actionWorkflowInfo"
    },
    "name": "ActionWorkflowInfo",
    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "name",
        "doc": "Display name of the workflow"
      },
      {
        "Searchable": {},
        "type": "com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowCategory",
        "name": "category",
        "doc": "Top-level category of the workflow, e.g. ACCESS"
      },
      {
        "Searchable": {},
        "type": [
          "null",
          "string"
        ],
        "name": "customCategory",
        "default": null,
        "doc": "Custom category for the workflow, if applicable.\n\nThis is used to group workflows that are not part of the standard types.\nShould be provided when the type is CUSTOM."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the workflow. \nIf this is based on a Form trigger, this will be displayed to users when completing the form. "
      },
      {
        "type": {
          "type": "record",
          "name": "ActionWorkflowTrigger",
          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
          "fields": [
            {
              "Searchable": {
                "fieldName": "triggerType"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "FORM_SUBMITTED": "The only trigger type currently supported - a workflow request form is submitted successfully. \nThis enables admins to create forms and display them on various entrypoints. \nThe form is also captured in the field \"form\" below. "
                },
                "name": "ActionWorkflowTriggerType",
                "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                "symbols": [
                  "FORM_SUBMITTED"
                ]
              },
              "name": "type",
              "doc": "A type of step / task / node in the Action Workflow. "
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "ActionWorkflowForm",
                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                  "fields": [
                    {
                      "type": {
                        "type": "array",
                        "items": {
                          "type": "record",
                          "name": "ActionWorkflowEntrypoint",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "Searchable": {
                                "fieldName": "entrypointType"
                              },
                              "type": {
                                "type": "enum",
                                "symbolDocs": {
                                  "ENTITY_PROFILE": " Visible on the entity profile page. For all valid entity types specified in the parent object. ",
                                  "HOME": " Visible on the home page to all users. "
                                },
                                "name": "ActionWorkflowEntrypointType",
                                "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                "symbols": [
                                  "HOME",
                                  "ENTITY_PROFILE"
                                ]
                              },
                              "name": "type",
                              "doc": "The type of entry point for the action request workflow.\nThis determines where the action request workflow will be displayed."
                            },
                            {
                              "type": "string",
                              "name": "label",
                              "doc": "The label for the entry point, which is displayed to users.\nThis should be a user-friendly name that describes the action request."
                            },
                            {
                              "type": [
                                "null",
                                "com.linkedin.pegasus2avro.metadata.query.filter.Filter"
                              ],
                              "name": "filter",
                              "default": null,
                              "doc": "Additional filter criteria to determine when the entry point should be displayed.\n\nNot yet supported (but will be in the future)."
                            }
                          ],
                          "doc": "The entry point arguments for the action request workflowform.\nIn the future, we may extend this model to support more granular entry point filters."
                        }
                      },
                      "name": "entrypoints",
                      "doc": "Entrypoints for form submission."
                    },
                    {
                      "Searchable": {
                        "/*": {
                          "fieldName": "entityTypes",
                          "fieldType": "URN"
                        }
                      },
                      "Urn": "Urn",
                      "urn_is_array": true,
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "string"
                        }
                      ],
                      "name": "entityTypes",
                      "default": null,
                      "doc": "The valid entity type URNs that can be associated with a Workflow Form.\nIf provided, this will require that an entity of one of the provided types is specified when completing the form.\n\nIf no entity types are provided, the workflow form can be submitted without specifying an entity. In general, this should\nbe populated for workflows of type ACCESS to enable users to request access to a specific entity!\n\nIf specified, the associated action requests for this workflow will contain an URN of the corresponding type inside of\nthe `resource` field.\n\nNote that associating multiple entities with a single Action Request is not yet supported."
                    },
                    {
                      "type": {
                        "type": "array",
                        "items": {
                          "type": "record",
                          "name": "ActionWorkflowField",
                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                          "fields": [
                            {
                              "type": "string",
                              "name": "id",
                              "doc": "Workflow-local id for the field"
                            },
                            {
                              "type": "string",
                              "name": "name",
                              "doc": "The display name or label for the field, for rendering"
                            },
                            {
                              "type": [
                                "null",
                                "string"
                              ],
                              "name": "description",
                              "default": null,
                              "doc": "The description for the field, for rendering"
                            },
                            {
                              "java": {
                                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                              },
                              "Urn": "Urn",
                              "type": "string",
                              "name": "valueType",
                              "doc": "The urn of the value type for the values - reused from structured properties.\nAlso, used for rendering"
                            },
                            {
                              "Urn": "Urn",
                              "urn_is_array": true,
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": "string"
                                }
                              ],
                              "name": "allowedEntityTypes",
                              "default": null,
                              "doc": "The urns for allowed entity types."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "array",
                                  "items": "com.linkedin.pegasus2avro.structured.PropertyValue"
                                }
                              ],
                              "name": "allowedValues",
                              "default": null,
                              "doc": "A list of allowed values that the property is allowed to take.\nIf this is not specified, then the property can take any value of given type."
                            },
                            {
                              "type": "com.linkedin.pegasus2avro.structured.PropertyCardinality",
                              "name": "cardinality",
                              "doc": "Whether or not multiple values are allowed."
                            },
                            {
                              "type": "boolean",
                              "name": "required",
                              "default": false,
                              "doc": "Whether the field is required or not."
                            },
                            {
                              "type": [
                                "null",
                                {
                                  "type": "record",
                                  "name": "ActionWorkflowFieldCondition",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "fields": [
                                    {
                                      "type": {
                                        "type": "enum",
                                        "symbolDocs": {
                                          "SINGLE_FIELD_VALUE": "The field should be shown if the value of a previously completed field matches the specified value."
                                        },
                                        "name": "ActionWorkflowFieldConditionType",
                                        "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                        "symbols": [
                                          "SINGLE_FIELD_VALUE"
                                        ]
                                      },
                                      "name": "type",
                                      "doc": "The type of field condition"
                                    },
                                    {
                                      "type": [
                                        "null",
                                        {
                                          "type": "record",
                                          "name": "ActionWorkflowSingleFieldValueCondition",
                                          "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                          "fields": [
                                            {
                                              "type": "string",
                                              "name": "field",
                                              "doc": "The id / name of the field that the criterion refers to"
                                            },
                                            {
                                              "type": {
                                                "type": "array",
                                                "items": "string"
                                              },
                                              "name": "values",
                                              "default": [],
                                              "doc": "Values. one of which the intended field should match\nNote, if values is set, the above \"value\" field will be ignored"
                                            },
                                            {
                                              "type": "com.linkedin.pegasus2avro.metadata.query.filter.Condition",
                                              "name": "condition",
                                              "default": "EQUAL",
                                              "doc": "The condition for the criterion, e.g. EQUAL, START_WITH"
                                            },
                                            {
                                              "type": "boolean",
                                              "name": "negated",
                                              "default": false,
                                              "doc": "Whether the condition should be negated"
                                            }
                                          ],
                                          "doc": "A specific type of field condition that checks whether a field should be shown based on the value of a previously completed field."
                                        }
                                      ],
                                      "name": "singleFieldValueCondition",
                                      "default": null,
                                      "doc": "A field value condition. Present if type is FIELD_VALUE."
                                    }
                                  ],
                                  "doc": "A condition that determines whether a form field should be shown in the action workflow.\nThis may evolve in the future to have additional condition types."
                                }
                              ],
                              "name": "condition",
                              "default": null,
                              "doc": "A dynamic condition that determines whether the field should be shown or not."
                            }
                          ],
                          "doc": "A field inside an Action Workflow Form."
                        }
                      },
                      "name": "fields",
                      "doc": "Fields comprising the workflow request. These are the inputs / arguments required to trigger the workflow."
                    }
                  ]
                }
              ],
              "name": "form",
              "default": null,
              "doc": "The form definition that will trigger the action workflow when submitted. "
            }
          ],
          "doc": "Defines the conditions on which the action workflow is triggered. \n\nCurrently we have only one trigger type, but we expect this to extend e.g. in the case that change events, proposals,\nor other actions can trigger workflows. \n\nCurrently, the workflow must have exactly 1 trigger condition. We don't expect this to change. "
        },
        "name": "trigger",
        "doc": "The action or event that triggers the workflow. This MUST be stored here, because there is no other\nplace to capture dynamic form state like this. "
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "ActionWorkflowStep",
            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
            "fields": [
              {
                "type": "string",
                "name": "id",
                "doc": "A unique identifier for this step within the workflow.\nThis ID must be unique within the workflow and is used to match values during workflow execution."
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "APPROVAL": "The only step type currently supported - a human review step. \nThis step type requires that an assigned user reviews an action request associated with this workflow. \nreviews the request, approving or denying it (currently the actions supported, may extend later). "
                  },
                  "name": "ActionWorkflowStepType",
                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                  "symbols": [
                    "APPROVAL"
                  ]
                },
                "name": "type",
                "doc": "A type of step / task / node in the Action Workflow. "
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "description",
                "default": null,
                "doc": "Optional description shown alongside the step to explain its purpose."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ActionWorkflowStepActors",
                    "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                    "fields": [
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "users",
                        "doc": "Users statically assigned to perform the review step."
                      },
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "groups",
                        "doc": "Groups statically assigned to perform the review step."
                      },
                      {
                        "Urn": "Urn",
                        "urn_is_array": true,
                        "type": {
                          "type": "array",
                          "items": "string"
                        },
                        "name": "roles",
                        "doc": "Roles statically assigned to perform the review step."
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "ActionWorkflowStepDynamicAssignment",
                            "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                            "fields": [
                              {
                                "type": {
                                  "type": "enum",
                                  "symbolDocs": {
                                    "ENTITY_DATA_PRODUCT_OWNERS": "Assign the entity data product owners.",
                                    "ENTITY_DOMAIN_OWNERS": "Assign the entity domain owners.",
                                    "ENTITY_OWNERS": "Assign the entity owners."
                                  },
                                  "name": "ActionWorkflowStepDynamicAssignmentType",
                                  "namespace": "com.linkedin.pegasus2avro.actionworkflow",
                                  "symbols": [
                                    "ENTITY_OWNERS",
                                    "ENTITY_DOMAIN_OWNERS",
                                    "ENTITY_DATA_PRODUCT_OWNERS"
                                  ]
                                },
                                "name": "type",
                                "doc": "A standardized policy for resolving actors dynamically for an access request."
                              },
                              {
                                "Urn": "Urn",
                                "urn_is_array": true,
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "string"
                                  }
                                ],
                                "name": "ownershipTypeUrns",
                                "default": null,
                                "doc": "Optional: A well defined set of ownership type urns to including in routing."
                              }
                            ]
                          }
                        ],
                        "name": "dynamicAssignment",
                        "default": null,
                        "doc": "Dynamic assignment type for the review step."
                      }
                    ],
                    "doc": "A definition of the actors required to review."
                  }
                ],
                "name": "actors",
                "default": null,
                "doc": "A definition of the actors required to execute the step, if there are any.\n\nFor steps of type REQUEST_REVIEW, this field MUST be provided! "
              }
            ],
            "doc": "Defines a single review step in a workflow.\n\nToday, steps are simple. They execute in sequence after the trigger event. \n\nIn the future, we may extend steps to include \"depends on steps\" to form a DAG structure across\nsteps. For now, steps execute in linear sequence after the trigger event -- however the expectation\nis that they COULD run in parallel after the trigger event without a problem in the future.\n\nIf necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step\n\nToday, step state is reflected via a single entity representing the workflow instance: the ActionRequest entity.\nIn the future we'll explore modeling individual step states separately if required."
          }
        },
        "name": "steps",
        "doc": "Definition of the steps / tasks / nodes comprising the workflow definition. This is the part we can aim \nto be able to convert / transform into serialized XML BPMN Format. For now, we model it strongly here. \nIf we can successfully use BPMN for step state, we can deprecate this field in place of the XML serialization. \n\nThis is the part we'll try to build a transpiler to BPMN for execution for. Ultimately, we do need \na representation we can easily convert into the frontend framework for display. This represents the set of \nwell known workflow step types - across tasks, conditionals, notifications, etc - that are officially supported today.\n\nIf necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp capturing the time and actor who created the workflow."
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp capturing the time and actor who last modified the workflow."
      }
    ],
    "doc": "The ActionWorkflowInfo record captures the metadata and configuration of a workflow.\nTODO: In the future, we may store the serialized camunda / flowable workflow instance ID inside.\nWe'll likely also need to add the \"steps\" into here since we'll need that to inform state transitions."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldsInferredMetadata"
    },
    "name": "SchemaFieldsInferredMetadata",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaFieldInferredMetadata",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "fieldUrn",
                "doc": "SchemaField Urn this metadata is associated with"
              },
              {
                "Searchable": {
                  "/*/description": {
                    "fieldName": "inferredFieldDescriptions",
                    "fieldType": "TEXT"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "InferredDescription",
                      "namespace": "com.linkedin.pegasus2avro.inferred",
                      "fields": [
                        {
                          "type": "string",
                          "name": "description",
                          "doc": "Inferred description text"
                        },
                        {
                          "type": {
                            "type": "record",
                            "name": "InferredMetadataSource",
                            "namespace": "com.linkedin.pegasus2avro.inferred",
                            "fields": [
                              {
                                "type": "string",
                                "name": "algorithm",
                                "doc": "Algorithm used for inference"
                              },
                              {
                                "type": [
                                  "null",
                                  "float"
                                ],
                                "name": "score",
                                "default": null,
                                "doc": "Inference score - can be used to decide rank of inference\nFor same algorithm, higher score represents higher confidence in inference.\nThis score is not intended to be compared across multiple algorithms."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "map",
                                    "values": "string"
                                  }
                                ],
                                "name": "context",
                                "default": null,
                                "doc": "Additional details about this inference"
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "enum",
                                      "symbolDocs": {
                                        "DATASET_PLATFORM": "Platform of dataset",
                                        "DATASET_SCHEMA": "Schema of dataset",
                                        "ENTITY_DESCRIPTION": "Description of entity",
                                        "ENTITY_NAME": "Name of entity",
                                        "FIELD_DATA_TYPE": "Datatype of dataset field",
                                        "FIELD_DESCRIPTION": "Description of dataset field",
                                        "FIELD_NAME": "Name of dataset field",
                                        "FIELD_PARENT_DATASET": "Dataset containing the field",
                                        "LINEAGE": "Lineage of entity"
                                      },
                                      "name": "SimilarityFactor",
                                      "namespace": "com.linkedin.pegasus2avro.inferred",
                                      "symbols": [
                                        "ENTITY_NAME",
                                        "ENTITY_DESCRIPTION",
                                        "LINEAGE",
                                        "DATASET_SCHEMA",
                                        "DATASET_PLATFORM",
                                        "FIELD_NAME",
                                        "FIELD_DESCRIPTION",
                                        "FIELD_DATA_TYPE",
                                        "FIELD_PARENT_DATASET"
                                      ],
                                      "doc": "Factors related to an entity"
                                    }
                                  }
                                ],
                                "name": "similarityFactors",
                                "default": null,
                                "doc": "Primary factors contributing to this inference\nOrdering of the array indicates rank."
                              }
                            ],
                            "doc": "Provenace details corresponding to an inference"
                          },
                          "name": "source",
                          "doc": "Provenance details about this inference"
                        }
                      ],
                      "doc": "Records inferred description and its provenance"
                    }
                  }
                ],
                "name": "inferredDescriptions",
                "default": null,
                "doc": "Inferred descriptions for schema field"
              },
              {
                "Searchable": {
                  "/*/tags/*": {
                    "fieldName": "inferredFieldTags",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "InferredTags",
                      "namespace": "com.linkedin.pegasus2avro.inferred",
                      "fields": [
                        {
                          "Urn": "Urn",
                          "urn_is_array": true,
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "tags",
                          "doc": "Urns of inferred Tag"
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                          "name": "source",
                          "doc": "Provenance details about this inference"
                        }
                      ],
                      "doc": "Records inferred tags along with their provenance\nAll tags in this record share same provenance"
                    }
                  }
                ],
                "name": "inferredTags",
                "default": null,
                "doc": "Inferred tags for schema field"
              },
              {
                "Searchable": {
                  "/*/glossaryTerms/*": {
                    "fieldName": "inferredFieldGlossaryTerms",
                    "fieldType": "URN"
                  }
                },
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "InferredGlossaryTerms",
                      "namespace": "com.linkedin.pegasus2avro.inferred",
                      "fields": [
                        {
                          "Urn": "Urn",
                          "urn_is_array": true,
                          "type": {
                            "type": "array",
                            "items": "string"
                          },
                          "name": "glossaryTerms",
                          "doc": "Urn of inferred glossary term"
                        },
                        {
                          "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                          "name": "source",
                          "doc": "Provenance details about this inference"
                        }
                      ],
                      "doc": "Records inferred glossary terms along with their provenance\nAll glossary terms from this record share same provenance"
                    }
                  }
                ],
                "name": "inferredGlossaryTerms",
                "default": null,
                "doc": "Inferred glossary terms for schema field"
              }
            ],
            "doc": "Inferred Metadata for dataset schema fields"
          }
        },
        "name": "schemaFieldsInferredMetadata",
        "doc": "Inferred Metadata for dataset's schema fields"
      }
    ],
    "doc": "Aspect for representing Inferred Metadata for dataset's schema fields"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inferredMetadata"
    },
    "name": "InferredMetadata",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "Searchable": {
          "/*/description": {
            "fieldName": "inferredDescriptions",
            "fieldType": "TEXT"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.inferred.InferredDescription"
          }
        ],
        "name": "inferredDescriptions",
        "default": null,
        "doc": "Inferred descriptions for entity"
      },
      {
        "Searchable": {
          "/*/tags/*": {
            "fieldName": "inferredTags",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.inferred.InferredTags"
          }
        ],
        "name": "inferredTags",
        "default": null,
        "doc": "Inferred tags for entity"
      },
      {
        "Searchable": {
          "/*/glossaryTerms/*": {
            "fieldName": "inferredGlossaryTerms",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.inferred.InferredGlossaryTerms"
          }
        ],
        "name": "inferredGlossaryTerms",
        "default": null,
        "doc": "Inferred glossary terms for entity"
      },
      {
        "Searchable": {
          "/*/owners/*/owner": {
            "fieldName": "inferredOwners",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "InferredOwners",
              "namespace": "com.linkedin.pegasus2avro.inferred",
              "fields": [
                {
                  "type": {
                    "type": "array",
                    "items": "com.linkedin.pegasus2avro.common.Owner"
                  },
                  "name": "owners",
                  "doc": "Inferred ownership details"
                },
                {
                  "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                  "name": "source",
                  "doc": "Provenance details about this inference"
                }
              ],
              "doc": "Records inferred ownership information along with its provenance\nAll owners in this record share same provenance"
            }
          }
        ],
        "name": "inferredOwners",
        "default": null,
        "doc": "Inferred owners for entity"
      }
    ],
    "doc": "Inferred Metadata for entities"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inferredNeighbors"
    },
    "name": "InferredNeighbors",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InferredNeighbor",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "Urn of inferred neighbor entity"
              },
              {
                "type": "com.linkedin.pegasus2avro.inferred.InferredMetadataSource",
                "name": "source",
                "doc": "Provenance details about this inference"
              }
            ],
            "doc": "Records Urn of inferred neighbor entity and its provenance"
          }
        },
        "name": "inferredNeighbors",
        "doc": "Neighbors of an entity as determined by algorithm"
      }
    ],
    "doc": "Aspect for representing neighbor entities as inferred by various algorithms"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldsInferredNeighbors"
    },
    "name": "SchemaFieldsInferredNeighbors",
    "namespace": "com.linkedin.pegasus2avro.inferred",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "SchemaFieldInferredNeighbors",
            "namespace": "com.linkedin.pegasus2avro.inferred",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "fieldUrn",
                "doc": "SchemaField Urn"
              },
              {
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.inferred.InferredNeighbor"
                },
                "name": "inferredNeighbors",
                "doc": "Neighbors of a schema field as determined by algorithm"
              }
            ],
            "doc": "Neighbors for a particular schema field as inferred by various algorithms"
          }
        },
        "name": "schemaFieldsInferredNeighbors",
        "doc": "Neighbors of dataset's schema fields as determined by algorithm"
      }
    ],
    "doc": "Aspect for representing Neighbors of dataset's schema fields as determined by algorithm"
  },
  "com.linkedin.pegasus2avro.chart.ChartInfo",
  "com.linkedin.pegasus2avro.chart.ChartQuery",
  {
    "type": "record",
    "Aspect": {
      "name": "chartUsageStatistics",
      "type": "timeseries"
    },
    "name": "ChartUsageStatistics",
    "namespace": "com.linkedin.pegasus2avro.chart",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "viewsCount",
        "default": null,
        "doc": "The total number of times chart has been viewed"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "user"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "ChartUserUsageCounts",
              "namespace": "com.linkedin.pegasus2avro.chart",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "user",
                  "doc": "The unique id of the user."
                },
                {
                  "TimeseriesField": {},
                  "type": [
                    "null",
                    "int"
                  ],
                  "name": "viewsCount",
                  "default": null,
                  "doc": "The number of times the user has viewed the chart"
                }
              ],
              "doc": "Records a single user's usage counts for a given resource"
            }
          }
        ],
        "name": "userCounts",
        "default": null,
        "doc": "Users within this bucket, with frequency counts"
      }
    ],
    "doc": "Experimental (Subject to breaking change) -- Stats corresponding to chart's usage.\n\nIf this aspect represents the latest snapshot of the statistics about a Chart, the eventGranularity field should be null.\nIf this aspect represents a bucketed window of usage statistics (e.g. over a day), then the eventGranularity field should be set accordingly."
  },
  "com.linkedin.pegasus2avro.chart.EditableChartProperties",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubSecretValue"
    },
    "name": "DataHubSecretValue",
    "namespace": "com.linkedin.pegasus2avro.secret",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The display name for the secret"
      },
      {
        "type": "string",
        "name": "value",
        "doc": "The AES-encrypted value of the DataHub secret."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the secret"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      }
    ],
    "doc": "The value of a DataHub Secret"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubAccessTokenInfo"
    },
    "name": "DataHubAccessTokenInfo",
    "namespace": "com.linkedin.pegasus2avro.access.token",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "User defined name for the access token if defined."
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "actorUrn",
        "doc": "Urn of the actor to which this access token belongs to."
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "ownerUrn",
        "doc": "Urn of the actor which created this access token."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "createdAt",
        "doc": "When the token was created."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "expiresAt",
        "default": null,
        "doc": "When the token expires."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the token if defined."
      }
    ],
    "doc": "Information about a DataHub Access Token"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "globalSettingsInfo"
    },
    "name": "GlobalSettingsInfo",
    "namespace": "com.linkedin.pegasus2avro.settings.global",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalIntegrationSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "SlackIntegrationSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "deprecated": true,
                        "type": "boolean",
                        "name": "enabled",
                        "default": true,
                        "doc": "Whether the slack integration is enabled or not.\nDeprecated! This is no longer used in favor of using the connections abstraction.\nIf a connection is present, then this is enabled."
                      },
                      {
                        "deprecated": true,
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "encryptedBotToken",
                        "default": null,
                        "doc": "An encrypted bot token.\nDeprecated! This is no longer used in favor of using the connections abstraction."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "defaultChannelName",
                        "default": null,
                        "doc": "A default slack channel to use."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "datahubAtMentionEnabled",
                        "default": null,
                        "doc": "Whether the Slack @DataHub bot mention functionality is enabled.\nIf null, use the default value from feature flags."
                      }
                    ],
                    "doc": "Slack integration settings."
                  }
                ],
                "name": "slackSettings",
                "default": null,
                "doc": "Slack integration settings."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "EmailIntegrationSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "defaultEmail",
                        "default": null,
                        "doc": "The default email address to use for global notifications."
                      }
                    ],
                    "doc": "Email integration settings. Enabled by default and only disable-able via the application configs."
                  }
                ],
                "name": "emailSettings",
                "default": null,
                "doc": "Email integration settings."
              }
            ],
            "doc": "Native DataHub Integrations, supported on the UI."
          }
        ],
        "name": "integrations",
        "default": null,
        "doc": "Integrations between DataHub & other platforms."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalNotificationSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "map",
                    "values": "com.linkedin.pegasus2avro.settings.NotificationSetting"
                  }
                ],
                "name": "settings",
                "default": null,
                "doc": "Global / platform notification settings.\nA map of notification scenario type to the settings associated with it.\nFor a list of all scenario types to notify on, check out NotificationScenarioType enum."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "GlobalIncidentsSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "com.linkedin.pegasus2avro.settings.NotificationSetting",
                        "name": "broadcastNewIncidentNotification",
                        "doc": "Send a 'broadcast' notification when a new incident has been created. A broadcast is a notification that\nis sent to a general purpose channel, as opposed to a specific user or group member directly."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.settings.NotificationSetting",
                        "name": "broadcastIncidentStatusChangeNotification",
                        "doc": "Send a 'broadcast' notification when an incident status has changed. A broadcast is a notification that\nis sent to a general purpose channel, as opposed to a specific user or group member directly."
                      }
                    ]
                  }
                ],
                "name": "incidents",
                "default": null,
                "doc": "Settings related to asset incidents.\nDeprecated! Use 'settings' for configuring incidents settings instead."
              }
            ],
            "doc": "DataHub global notification settings"
          }
        ],
        "name": "notifications",
        "default": null,
        "doc": "Global notifications settings"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "SsoSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "string",
                "name": "baseUrl",
                "doc": "Auth base URL."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "OidcSettings",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "boolean",
                        "name": "enabled",
                        "doc": "Whether OIDC SSO is enabled."
                      },
                      {
                        "type": "string",
                        "name": "clientId",
                        "doc": "Unique client id issued by the identity provider."
                      },
                      {
                        "type": "string",
                        "name": "clientSecret",
                        "doc": "Unique client secret issued by the identity provider."
                      },
                      {
                        "type": "string",
                        "name": "discoveryUri",
                        "doc": "The IdP OIDC discovery url."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "userNameClaim",
                        "default": null,
                        "doc": "ADVANCED. The attribute / claim used to derive the DataHub username. Defaults to \"preferred_username\"."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "userNameClaimRegex",
                        "default": null,
                        "doc": "ADVANCED. TThe regex used to parse the DataHub username from the user name claim. Defaults to (.*) (all)."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "scope",
                        "default": null,
                        "doc": "ADVANCED. String representing the requested scope from the IdP. Defaults to \"oidc email profile\"."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "clientAuthenticationMethod",
                        "default": null,
                        "doc": "ADVANCED. Which authentication method to use to pass credentials (clientId and clientSecret) to the token endpoint: Defaults to \"client_secret_basic\"."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "jitProvisioningEnabled",
                        "default": null,
                        "doc": "ADVANCED. Whether DataHub users should be provisioned on login if they do not exist. Defaults to true."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "preProvisioningRequired",
                        "default": null,
                        "doc": "ADVANCED. Whether the user should already exist in DataHub on login, failing login if they are not. Defaults to false."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "extractGroupsEnabled",
                        "default": null,
                        "doc": "ADVANCED. Whether groups should be extracted from a claim in the OIDC profile. Only applies if JIT provisioning is enabled. Groups will be created if they do not exist. Defaults to true."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "groupsClaim",
                        "default": null,
                        "doc": "ADVANCED. The OIDC claim to extract groups information from. Defaults to 'groups'."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "responseType",
                        "default": null,
                        "doc": "ADVANCED. Response type."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "responseMode",
                        "default": null,
                        "doc": "ADVANCED. Response mode."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "useNonce",
                        "default": null,
                        "doc": "ADVANCED. Use Nonce."
                      },
                      {
                        "type": [
                          "null",
                          "long"
                        ],
                        "name": "readTimeout",
                        "default": null,
                        "doc": "ADVANCED. Read timeout."
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "extractJwtAccessTokenClaims",
                        "default": null,
                        "doc": "ADVANCED. Whether to extract claims from JWT access token.  Defaults to false."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "preferredJwsAlgorithm",
                        "default": null,
                        "doc": " ADVANCED. Which jws algorithm to use. Unused."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "preferredJwsAlgorithm2",
                        "default": null,
                        "doc": " ADVANCED. Which jws algorithm to use."
                      }
                    ],
                    "doc": "Settings for OIDC SSO integration."
                  }
                ],
                "name": "oidcSettings",
                "default": null,
                "doc": "Optional OIDC SSO settings."
              }
            ],
            "doc": "SSO Integrations, supported on the UI."
          }
        ],
        "name": "sso",
        "default": null,
        "doc": "SSO integrations between DataHub and identity providers"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalViewsSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "dataHubView"
                  ],
                  "name": "viewedWith"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "dataHubView"
                ],
                "type": [
                  "null",
                  "string"
                ],
                "name": "defaultView",
                "default": null,
                "doc": "The default View for the instance, or organization."
              }
            ],
            "doc": "Settings for DataHub Views feature."
          }
        ],
        "name": "views",
        "default": null,
        "doc": "Settings related to the Views Feature"
      },
      {
        "type": [
          {
            "type": "record",
            "name": "DocPropagationFeatureSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "config",
                "default": null,
                "doc": "The configuration for the feature, in JSON format."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "configVersion",
                "default": null,
                "doc": "The version of the configuration schema that has been used to serialize\n       the config.\nIf not provided, the version is assumed to be the latest version."
              },
              {
                "type": "boolean",
                "name": "columnPropagationEnabled",
                "default": true
              }
            ]
          },
          "null"
        ],
        "name": "docPropagation",
        "default": {
          "configVersion": null,
          "config": null,
          "enabled": true,
          "columnPropagationEnabled": true
        },
        "doc": "Settings related to the documentation propagation feature"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalHomePageSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "defaultTemplate",
                "doc": "The urn that will be rendered in the UI by default for all users"
              }
            ],
            "doc": "Global settings related to the home page for an instance"
          }
        ],
        "name": "homePage",
        "default": null,
        "doc": "Global settings related to the home page for an instance"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "ApplicationsSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "config",
                "default": null,
                "doc": "The configuration for the feature, in JSON format."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "configVersion",
                "default": null,
                "doc": "The version of the configuration schema that has been used to serialize\n       the config.\nIf not provided, the version is assumed to be the latest version."
              }
            ]
          }
        ],
        "name": "applications",
        "default": null,
        "doc": "Settings related to applications. If not enabled, applications won't show up in navigation"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DocumentationAiSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": "boolean",
                "name": "enabled",
                "default": true,
                "doc": "Whether or not AI-generated documentation is enabled."
              }
            ],
            "doc": "Settings related to AI-powered documentation."
          }
        ],
        "name": "documentationAi",
        "default": null,
        "doc": "Settings related to AI-powered documentation."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "GlobalVisualSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "HelpLink",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "boolean",
                        "name": "isEnabled",
                        "doc": "Whether or not this link should be shown in the UI"
                      },
                      {
                        "type": "string",
                        "name": "label",
                        "doc": "The label of this help link"
                      },
                      {
                        "type": "string",
                        "name": "link",
                        "doc": "The url or mailto link that this links to"
                      }
                    ],
                    "doc": "Information regarding the help link dislayed in the UI"
                  }
                ],
                "name": "helpLink",
                "default": null,
                "doc": "The configurable help link shown in the UI"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "customLogoUrl",
                "default": null,
                "doc": "The Url for a custom logo to display in the UI"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "customOrgName",
                "default": null,
                "doc": "A customized name for organization display preferences"
              }
            ],
            "doc": "Global settings for the UI"
          }
        ],
        "name": "visual",
        "default": null,
        "doc": "Global settings related to the UI and what's displayed in the app"
      }
    ],
    "doc": "DataHub Global platform settings. Careful - these should not be modified by the outside world!"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemafieldInfo"
    },
    "name": "SchemaFieldInfo",
    "namespace": "com.linkedin.pegasus2avro.schemafield",
    "fields": [
      {
        "Searchable": {
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "URN",
            "queryByDefault": true
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "schemaFieldAliases",
        "default": null,
        "doc": "Used to store field path variations for the schemaField urn."
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldAliases"
    },
    "name": "SchemaFieldAliases",
    "namespace": "com.linkedin.pegasus2avro.schemafield",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldName": "schemaFieldAliases",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "aliases",
        "default": null,
        "doc": "Used to store aliases"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubRemoteExecutorPoolInfo"
    },
    "name": "RemoteExecutorPoolInfo",
    "namespace": "com.linkedin.pegasus2avro.executorpool",
    "fields": [
      {
        "Searchable": {
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "createdAt",
        "doc": "UTC-based timestamp of when this pool was created"
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "creator",
        "default": null,
        "doc": "The creator of this pool"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "A description for this pool"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "queueUrl",
        "default": null,
        "doc": "The url to the task queue for this pool. I.e., SQS queue url."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "queueRegion",
        "default": null,
        "doc": "The region of the sqs queue for this pool for backwards compatibility."
      },
      {
        "type": [
          "null",
          "boolean"
        ],
        "name": "isEmbedded",
        "default": null,
        "doc": "Only set true if this is the pool embedded within the DataHub Cloud deployment"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "RemoteExecutorPoolState",
            "namespace": "com.linkedin.pegasus2avro.executorpool",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "PROVISIONING_FAILED": "The pool has failed to be provisioned.",
                    "PROVISIONING_IN_PROGRESS": "The pool has been picked up by DataHub and is in the process of being provisioned.",
                    "PROVISIONING_PENDING": "The pool is pending provisioning. Default state on creation.",
                    "READY": "The pool has been successfully provisioned and is ready to accept tasks."
                  },
                  "name": "RemoteExecutorPoolStatus",
                  "namespace": "com.linkedin.pegasus2avro.executorpool",
                  "symbols": [
                    "PROVISIONING_PENDING",
                    "PROVISIONING_IN_PROGRESS",
                    "PROVISIONING_FAILED",
                    "READY"
                  ]
                },
                "name": "status",
                "doc": "The status of the remote executor pool"
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "message",
                "default": null,
                "doc": "The message associated with the status. I.e., an error message explaining failure."
              }
            ]
          }
        ],
        "name": "state",
        "default": null,
        "doc": "The status of the remote executor pool"
      }
    ]
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubExecutionRequestSignal"
    },
    "name": "ExecutionRequestSignal",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "type": "string",
        "name": "signal",
        "doc": "The signal to issue, e.g. KILL"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "executorId",
        "default": null,
        "doc": "Advanced: specify a specific executor pool to route the request to. If none is provided, a default embedded executor is used."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "createdAt",
        "doc": "Audit Stamp"
      }
    ],
    "doc": "An signal sent to a running execution request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubExecutionRequestInput"
    },
    "name": "ExecutionRequestInput",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "type": "string",
        "name": "task",
        "doc": "The name of the task to execute, for example RUN_INGEST"
      },
      {
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "args",
        "doc": "Arguments provided to the task"
      },
      {
        "Searchable": {
          "fieldName": "executorId",
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": "string",
        "name": "executorId",
        "doc": "Advanced: specify a specific executor pool to route the request to. If none is provided, a \"default\" embedded executor is used."
      },
      {
        "type": {
          "type": "record",
          "name": "ExecutionRequestSource",
          "namespace": "com.linkedin.pegasus2avro.execution",
          "fields": [
            {
              "type": "string",
              "name": "type",
              "doc": "The type of the execution request source, e.g. INGESTION_SOURCE"
            },
            {
              "Relationship": {
                "entityTypes": [
                  "dataHubIngestionSource"
                ],
                "name": "ingestionSource"
              },
              "Searchable": {
                "fieldName": "ingestionSource",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "entityTypes": [
                "dataHubIngestionSource"
              ],
              "type": [
                "null",
                "string"
              ],
              "name": "ingestionSource",
              "default": null,
              "doc": "The urn of the ingestion source associated with the ingestion request. Present if type is INGESTION_SOURCE"
            },
            {
              "Relationship": {
                "entityTypes": [
                  "dataHubConnection"
                ],
                "name": "connection"
              },
              "Searchable": {
                "fieldName": "connection",
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "java": {
                "class": "com.linkedin.pegasus2avro.common.urn.Urn"
              },
              "Urn": "Urn",
              "entityTypes": [
                "dataHubConnection"
              ],
              "type": [
                "null",
                "string"
              ],
              "name": "connection",
              "default": null,
              "doc": "The urn of the connection source associated with the connection request. Present if type is CONNECTION"
            }
          ]
        },
        "name": "source",
        "doc": "Source which created the execution request"
      },
      {
        "Searchable": {
          "fieldName": "requestTimeMs",
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": "long",
        "name": "requestedAt",
        "doc": "Time at which the execution request input was created"
      },
      {
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "actorUrn",
        "default": null,
        "doc": "Urn of the actor who created this execution request."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "attempts",
        "default": null,
        "doc": "Field tracking number of previously unsuccessful attempts for the given execution request"
      }
    ],
    "doc": "An request to execution some remote logic or action.\nTODO: Determine who is responsible for emitting execution request success or failure. Executor?"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubExecutionRequestResult"
    },
    "name": "ExecutionRequestResult",
    "namespace": "com.linkedin.pegasus2avro.execution",
    "fields": [
      {
        "Searchable": {
          "fieldName": "executionResultStatus",
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "status",
        "doc": "The status of the execution request"
      },
      {
        "Searchable": {
          "fieldName": "executorInstanceId",
          "fieldType": "KEYWORD",
          "queryByDefault": false
        },
        "type": [
          "null",
          "string"
        ],
        "name": "executorInstanceId",
        "default": null,
        "doc": "Identity of the executor instance handling the request"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "report",
        "default": null,
        "doc": "The pretty-printed execution report."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.execution.StructuredExecutionReport"
        ],
        "name": "structuredReport",
        "default": null,
        "doc": "A structured report if available."
      },
      {
        "Searchable": {
          "fieldName": "startTimeMs",
          "fieldType": "COUNT",
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "startTimeMs",
        "default": null,
        "doc": "Time at which the request was created"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "durationMs",
        "default": null,
        "doc": "Duration in milliseconds"
      }
    ],
    "doc": "The result of an execution request"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "businessAttributes"
    },
    "name": "BusinessAttributes",
    "namespace": "com.linkedin.pegasus2avro.businessattribute",
    "fields": [
      {
        "Relationship": {
          "/businessAttributeUrn": {
            "entityTypes": [
              "businessAttribute"
            ],
            "name": "BusinessAttributeOf"
          }
        },
        "SearchableRef": {
          "/businessAttributeUrn": {
            "boostScore": 0.5,
            "fieldName": "businessAttributeRef",
            "fieldType": "URN",
            "refType": "businessAttribute"
          }
        },
        "type": [
          "null",
          {
            "type": "record",
            "name": "BusinessAttributeAssociation",
            "namespace": "com.linkedin.pegasus2avro.businessattribute",
            "fields": [
              {
                "Searchable": {
                  "fieldName": "schemaFieldBusinessAttribute",
                  "includeSystemModifiedAt": true,
                  "queryByDefault": false,
                  "systemModifiedAtFieldName": "schemaFieldBusinessAttributeModifiedAt"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.BusinessAttributeUrn"
                },
                "Urn": "BusinessAttributeUrn",
                "type": "string",
                "name": "businessAttributeUrn",
                "doc": "Urn of the applied businessAttribute"
              }
            ]
          }
        ],
        "name": "businessAttribute",
        "default": null,
        "doc": "Business Attribute for this field."
      }
    ],
    "doc": "BusinessAttribute aspect used for applying it to an entity"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "businessAttributeKey",
      "keyForEntity": "businessAttribute",
      "entityCategory": "core",
      "entityAspects": [
        "businessAttributeInfo",
        "status",
        "ownership",
        "institutionalMemory"
      ]
    },
    "name": "BusinessAttributeKey",
    "namespace": "com.linkedin.pegasus2avro.businessattribute",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "A unique id for the Business Attribute."
      }
    ],
    "doc": "Key for a Query"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "businessAttributeInfo"
    },
    "name": "BusinessAttributeInfo",
    "namespace": "com.linkedin.pegasus2avro.businessattribute",
    "fields": [
      {
        "type": "string",
        "name": "fieldPath",
        "doc": "FieldPath uniquely identifying the SchemaField this metadata is associated with"
      },
      {
        "Searchable": {
          "boostScore": 0.1,
          "fieldName": "editedFieldDescriptions",
          "fieldType": "TEXT"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description"
      },
      {
        "Relationship": {
          "/tags/*/tag": {
            "entityTypes": [
              "tag"
            ],
            "name": "EditableSchemaFieldTaggedWith"
          }
        },
        "Searchable": {
          "/tags/*/attribution/actor": {
            "fieldName": "editedFieldTagAttributionActors",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/tags/*/attribution/source": {
            "fieldName": "editedFieldTagAttributionSources",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/tags/*/attribution/time": {
            "fieldName": "editedFieldTagAttributionDates",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/tags/*/tag": {
            "boostScore": 0.5,
            "fieldName": "editedFieldTags",
            "fieldType": "URN"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.GlobalTags"
        ],
        "name": "globalTags",
        "default": null,
        "doc": "Tags associated with the field"
      },
      {
        "Relationship": {
          "/terms/*/urn": {
            "entityTypes": [
              "glossaryTerm"
            ],
            "name": "EditableSchemaFieldWithGlossaryTerm"
          }
        },
        "Searchable": {
          "/terms/*/attribution/actor": {
            "fieldName": "editedFieldTermAttributionActors",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/terms/*/attribution/source": {
            "fieldName": "editedFieldTermAttributionSources",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/terms/*/attribution/time": {
            "fieldName": "editedFieldTermAttributionDates",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/terms/*/urn": {
            "boostScore": 0.5,
            "fieldName": "editedFieldGlossaryTerms",
            "fieldType": "URN",
            "includeSystemModifiedAt": true,
            "systemModifiedAtFieldName": "schemaFieldTermsModifiedAt"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.GlossaryTerms"
        ],
        "name": "glossaryTerms",
        "default": null,
        "doc": "Glossary terms associated with the field"
      },
      {
        "Searchable": {
          "/*": {
            "fieldType": "TEXT",
            "queryByDefault": true
          }
        },
        "type": {
          "type": "map",
          "values": "string"
        },
        "name": "customProperties",
        "default": {},
        "doc": "Custom property bag."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "default": {
          "actor": "urn:li:corpuser:unknown",
          "impersonator": null,
          "time": 0,
          "message": null
        },
        "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "deleted",
        "default": null,
        "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the BusinessAttribute"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.schema.SchemaFieldDataType"
        ],
        "name": "type",
        "default": null
      }
    ],
    "doc": "Properties associated with a BusinessAttribute"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "telemetryClientId"
    },
    "name": "TelemetryClientId",
    "namespace": "com.linkedin.pegasus2avro.telemetry",
    "fields": [
      {
        "type": "string",
        "name": "clientId",
        "doc": "A string representing the telemetry client ID"
      }
    ],
    "doc": "A simple wrapper around a String to persist the client ID for telemetry in DataHub's backend DB"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPageModuleProperties"
    },
    "name": "DataHubPageModuleProperties",
    "namespace": "com.linkedin.pegasus2avro.module",
    "fields": [
      {
        "type": "string",
        "name": "name",
        "doc": "The display name of this module"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ASSET_COLLECTION": "A module with a collection of assets",
            "DOMAINS": "Module displaying the top domains",
            "HIERARCHY": "A module displaying a hierarchy to navigate",
            "LINK": "Link type module",
            "OWNED_ASSETS": "Module displaying assets owned by a user",
            "RICH_TEXT": "Module containing rich text to be rendered",
            "SUBSCRIBED_ASSETS": "Module displaying assets subscribed to by a given user"
          },
          "name": "DataHubPageModuleType",
          "namespace": "com.linkedin.pegasus2avro.module",
          "symbols": [
            "LINK",
            "RICH_TEXT",
            "ASSET_COLLECTION",
            "HIERARCHY",
            "OWNED_ASSETS",
            "DOMAINS",
            "SUBSCRIBED_ASSETS"
          ],
          "doc": "Enum containing the types of page modules that there are"
        },
        "name": "type",
        "doc": "The type of this module - the purpose it serves"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubPageModuleVisibility",
          "namespace": "com.linkedin.pegasus2avro.module",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "GLOBAL": "This module is discoverable and can be used by any user on the platform",
                  "PERSONAL": "This module is used for individual use only"
                },
                "name": "PageModuleScope",
                "namespace": "com.linkedin.pegasus2avro.module",
                "symbols": [
                  "PERSONAL",
                  "GLOBAL"
                ]
              },
              "name": "scope",
              "doc": "Audit stamp for when and by whom this module was created"
            }
          ],
          "doc": "Info about the visibility of this module"
        },
        "name": "visibility",
        "doc": "Info about the visibility of this module"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubPageModuleParams",
          "namespace": "com.linkedin.pegasus2avro.module",
          "fields": [
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "LinkModuleParams",
                  "namespace": "com.linkedin.pegasus2avro.module",
                  "fields": [
                    {
                      "type": "string",
                      "name": "linkUrl"
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "imageUrl",
                      "default": null
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "description",
                      "default": null
                    }
                  ]
                }
              ],
              "name": "linkParams",
              "default": null,
              "doc": "The params required if the module is type LINK"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "RichTextModuleParams",
                  "namespace": "com.linkedin.pegasus2avro.module",
                  "fields": [
                    {
                      "type": "string",
                      "name": "content"
                    }
                  ]
                }
              ],
              "name": "richTextParams",
              "default": null,
              "doc": "The params required if the module is type RICH_TEXT"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "AssetCollectionModuleParams",
                  "namespace": "com.linkedin.pegasus2avro.module",
                  "fields": [
                    {
                      "Urn": "Urn",
                      "urn_is_array": true,
                      "type": {
                        "type": "array",
                        "items": "string"
                      },
                      "name": "assetUrns"
                    }
                  ],
                  "doc": "The params required if the module is type ASSET_COLLECTION"
                }
              ],
              "name": "assetCollectionParams",
              "default": null,
              "doc": "The params required if the module is type ASSET_COLLECTION"
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "HierarchyModuleParams",
                  "namespace": "com.linkedin.pegasus2avro.module",
                  "fields": [
                    {
                      "Urn": "Urn",
                      "urn_is_array": true,
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "string"
                        }
                      ],
                      "name": "assetUrns",
                      "default": null
                    },
                    {
                      "type": "boolean",
                      "name": "showRelatedEntities"
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "relatedEntitiesFilterJson",
                      "default": null,
                      "doc": "Optional filters to filter relatedEntities (assetUrns) out\n\nThe stringified json representing the logical predicate built in the UI to select assets.\nThis predicate is turned into orFilters to send through graphql since graphql doesn't support\narbitrary nesting. This string is used to restore the UI for this logical predicate."
                    }
                  ],
                  "doc": "The params required if the module is type HIERARCHY_VIEW"
                }
              ],
              "name": "hierarchyViewParams",
              "default": null,
              "doc": "The params required if the module is type HIERARCHY_VIEW"
            }
          ],
          "doc": "The specific parameters stored for a module"
        },
        "name": "params",
        "doc": "The specific parameters stored for this module"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Audit stamp for when and by whom this template was created"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "Audit stamp for when and by whom this template was last updated"
      }
    ],
    "doc": "The main properties of a DataHub page module"
  },
  "com.linkedin.pegasus2avro.dataplatform.DataPlatformInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "slackUserInfo"
    },
    "name": "SlackUserInfo",
    "namespace": "com.linkedin.pegasus2avro.dataplatform.slack",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "dataPlatformInstance"
          ],
          "name": "PartOfSlackWorkspace"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataPlatformInstance"
        ],
        "type": "string",
        "name": "slackInstance",
        "doc": "The dataplatform instance that this Slack member belongs to."
      },
      {
        "type": "string",
        "name": "id",
        "doc": "The unique identifier for the Slack member."
      },
      {
        "type": "string",
        "name": "name",
        "doc": "The username of the Slack member."
      },
      {
        "type": "string",
        "name": "realName",
        "doc": "The real name of the Slack member."
      },
      {
        "type": "string",
        "name": "displayName",
        "doc": "The display name of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "email",
        "default": null,
        "doc": "The email associated with the Slack member."
      },
      {
        "type": "string",
        "name": "teamId",
        "doc": "The ID associated with the Slack team."
      },
      {
        "type": "boolean",
        "name": "isDeleted",
        "doc": "Whether the member is deleted or not."
      },
      {
        "type": "boolean",
        "name": "isAdmin",
        "doc": "Whether the member is an admin."
      },
      {
        "type": "boolean",
        "name": "isOwner",
        "doc": "Whether the member is an owner."
      },
      {
        "type": "boolean",
        "name": "isPrimaryOwner",
        "doc": "Whether the member is a primary owner."
      },
      {
        "type": "boolean",
        "name": "isBot",
        "doc": "Whether the member is a bot."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "timezone",
        "default": null,
        "doc": "The timezone of the Slack member."
      },
      {
        "type": [
          "null",
          "int"
        ],
        "name": "timezoneOffset",
        "default": null,
        "doc": "The timezone offset of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "The title of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "phone",
        "default": null,
        "doc": "The phone number of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "profilePictureUrl",
        "default": null,
        "doc": "The URL of the member's profile picture."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "statusText",
        "default": null,
        "doc": "The status text of the Slack member."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "statusEmoji",
        "default": null,
        "doc": "The status emoji of the Slack member."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "lastUpdatedSeconds",
        "default": null,
        "doc": "The timestamp of when the member was last updated. (in seconds)"
      }
    ],
    "doc": "Information about a Slack user."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPersonaInfo"
    },
    "name": "DataHubPersonaInfo",
    "namespace": "com.linkedin.pegasus2avro.persona",
    "fields": [
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "view",
        "default": null,
        "doc": "The urn of the search view associated with the persona."
      }
    ],
    "doc": "Placeholder aspect for persona type info"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "formNotifications"
    },
    "name": "FormNotifications",
    "namespace": "com.linkedin.pegasus2avro.notification",
    "fields": [
      {
        "Searchable": {
          "/*/formUrn": {
            "fieldName": "notificationFormUrn",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormNotificationDetails",
            "namespace": "com.linkedin.pegasus2avro.notification",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "formUrn",
                "doc": "The urn of the form that these notification details are on behalf of"
              },
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "FormNotificationEntry",
                    "namespace": "com.linkedin.pegasus2avro.notification",
                    "fields": [
                      {
                        "type": "long",
                        "name": "time",
                        "doc": "The time at which this notification was sent in milliseconds"
                      },
                      {
                        "type": "string",
                        "name": "notificationType",
                        "doc": "The notification scenario type for this notification record"
                      }
                    ],
                    "doc": "Info about a specific form notification"
                  }
                },
                "name": "notificationLog",
                "default": [],
                "doc": "The list of details per notification sent on behalf of this form"
              }
            ],
            "doc": "Info about all of the notifications a user has received for a given form"
          }
        },
        "name": "notificationDetails",
        "default": [],
        "doc": "List of details for notifications for each form"
      }
    ],
    "doc": "The history of notifications sent to this actor on behalf of forms"
  },
  "com.linkedin.pegasus2avro.glossary.GlossaryRelatedTerms",
  "com.linkedin.pegasus2avro.glossary.GlossaryNodeInfo",
  "com.linkedin.pegasus2avro.glossary.GlossaryTermInfo",
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubUpgradeResult"
    },
    "name": "DataHubUpgradeResult",
    "namespace": "com.linkedin.pegasus2avro.upgrade",
    "fields": [
      {
        "type": [
          {
            "type": "enum",
            "symbolDocs": {
              "ABORTED": "Upgrade with an error state and should not be re-run.",
              "FAILED": "Upgrade with an error state, however the upgrade should be re-run.",
              "IN_PROGRESS": "Upgrade in progress.",
              "SUCCEEDED": "Upgrade was successful."
            },
            "name": "DataHubUpgradeState",
            "namespace": "com.linkedin.pegasus2avro.upgrade",
            "symbols": [
              "IN_PROGRESS",
              "SUCCEEDED",
              "FAILED",
              "ABORTED"
            ]
          },
          "null"
        ],
        "name": "state",
        "default": "SUCCEEDED",
        "doc": "Upgrade state  UpgradeResult.Result"
      },
      {
        "type": "long",
        "name": "timestampMs",
        "doc": "Timestamp when we started this DataHubUpgrade"
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "result",
        "default": null,
        "doc": "Result map to place helpful information about this upgrade job"
      }
    ],
    "doc": "Information collected when a DataHubUpgrade successfully finishes"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubUpgradeRequest"
    },
    "name": "DataHubUpgradeRequest",
    "namespace": "com.linkedin.pegasus2avro.upgrade",
    "fields": [
      {
        "type": "long",
        "name": "timestampMs",
        "doc": "Timestamp when we started this DataHubUpgrade"
      },
      {
        "type": "string",
        "name": "version",
        "doc": "Version of this upgrade"
      }
    ],
    "doc": "Information collected when kicking off a DataHubUpgrade"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "datasetUsageStatistics",
      "type": "timeseries"
    },
    "name": "DatasetUsageStatistics",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "totalSqlQueries",
        "default": null,
        "doc": "Total SQL query count"
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "topSqlQueries",
        "default": null,
        "doc": "Frequent SQL queries; mostly makes sense for datasets in SQL databases"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "user"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.dataset.DatasetUserUsageCounts"
          }
        ],
        "name": "userCounts",
        "default": null,
        "doc": "Users within this bucket, with frequency counts"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "fieldPath"
        },
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DatasetFieldUsageCounts",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": "string",
                  "name": "fieldPath",
                  "doc": "The name of the field."
                },
                {
                  "TimeseriesField": {},
                  "type": "int",
                  "name": "count",
                  "doc": "Number of times the field has been used."
                }
              ],
              "doc": "Records field-level usage counts for a given dataset"
            }
          }
        ],
        "name": "fieldCounts",
        "default": null,
        "doc": "Field-level usage stats"
      }
    ],
    "doc": "Stats corresponding to dataset's usage."
  },
  "com.linkedin.pegasus2avro.dataset.UpstreamLineage",
  "com.linkedin.pegasus2avro.dataset.DatasetUpstreamLineage",
  {
    "type": "record",
    "Aspect": {
      "name": "partitionsSummary"
    },
    "name": "PartitionsSummary",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "PartitionSummary",
            "namespace": "com.linkedin.pegasus2avro.dataset",
            "fields": [
              {
                "type": "string",
                "name": "partition",
                "doc": "A unique id / value for the partition for which statistics were collected,\ngenerated by applying the key definition to a given row."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "createdTime",
                "default": null,
                "doc": "The created time for a given partition."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "lastModifiedTime",
                "default": null,
                "doc": "The last modified / touched time for a given partition."
              }
            ],
            "doc": "Defines how the data is partitioned"
          }
        ],
        "name": "minPartition",
        "default": null,
        "doc": "The minimum partition as ordered"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.dataset.PartitionSummary"
        ],
        "name": "maxPartition",
        "default": null,
        "doc": "The maximum partition as ordered"
      }
    ],
    "doc": "Defines how the data is partitioned for Data Lake tables (e.g. Hive, S3, Iceberg, Delta, Hudi, etc)."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "schemaFieldProfile",
      "type": "timeseries"
    },
    "name": "SchemaFieldProfile",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": [
          "null",
          "long"
        ],
        "name": "uniqueCount",
        "default": null,
        "doc": "The count of unique values for the field across the dataset.\nUseful for understanding the diversity of field values."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "uniqueProportion",
        "default": null,
        "doc": "The proportion of unique values over the total number of non-null entries.\nHelps in assessing the uniqueness of the data in the field."
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "nullCount",
        "default": null,
        "doc": "The count of null or missing entries for the field.\nImportant for data quality assessments."
      },
      {
        "type": [
          "null",
          "float"
        ],
        "name": "nullProportion",
        "default": null,
        "doc": "The proportion of null entries over the total number of entries in the field.\nUseful for identifying fields with a high rate of missing values."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "min",
        "default": null,
        "doc": "The minimum value in the field for string-representable data types.\nProvides a sense of the lower bound of field values."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "max",
        "default": null,
        "doc": "The maximum value in the field for string-representable data types.\nProvides a sense of the upper bound of field values."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "mean",
        "default": null,
        "doc": "The mean (average) value of the field, represented as a string.\nUseful for numerical fields to understand the central tendency."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "median",
        "default": null,
        "doc": "The median value of the field, represented as a string.\nUseful for understanding the middle value when data is sorted."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "stdev",
        "default": null,
        "doc": "The standard deviation of the field values, represented as a string.\nIndicates the amount of variation or dispersion of field values."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "Quantile",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": "string",
                  "name": "quantile"
                },
                {
                  "type": "string",
                  "name": "value"
                }
              ]
            }
          }
        ],
        "name": "quantiles",
        "default": null,
        "doc": "Only for numerical columns. Sorted list of quantile cutoffs for the field, in ascending order.\nHelps in assessing the diversity of the data in the field.\nExpect both the quantile and the value field to be string-ified floats.\nEx: quantile: \"0.25\", value: \"1.0\" means the 25th percentile of values falls at 1.0"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "Histogram",
            "namespace": "com.linkedin.pegasus2avro.dataset",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": "string"
                },
                "name": "boundaries"
              },
              {
                "type": {
                  "type": "array",
                  "items": "float"
                },
                "name": "heights"
              }
            ]
          }
        ],
        "name": "histogram",
        "default": null,
        "doc": "Only for numerical columns. A histogram where a range of values in a numerical column\nare rolled up into bins, with the heights representing the number of values in that bin.\nDivided into k bin boundaries, with k-1 frequencies; first+last frequency values are tail weights\nCurrently unused in the product."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "ValueFrequency",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": "string",
                  "name": "value"
                },
                {
                  "type": "long",
                  "name": "frequency"
                }
              ]
            }
          }
        ],
        "name": "distinctValueFrequencies",
        "default": null,
        "doc": "Volume of each column value for a low-cardinality / categorical field.\nUseful for understanding the distribution of values in the field, and monitoring for changes\nin specific value volumes.\nFor numeric colums, the value will contain a strigified value."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "sampleValues",
        "default": null,
        "doc": "N randomly sampled values of the column. Useful for showing rough preview of the column."
      },
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          {
            "type": "record",
            "name": "DatasetMetricsSourceDetails",
            "namespace": "com.linkedin.pegasus2avro.dataset",
            "fields": [
              {
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "INGESTION_SOURCE": "Operation was produced during a normal ingestion source run.",
                    "MONITOR": "A running monitor produced the metadata."
                  },
                  "name": "MetadataProducerType",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "INGESTION_SOURCE",
                    "MONITOR"
                  ],
                  "doc": "The type of the producer of the metadata, e.g. reflective of the process that produced the metadata."
                },
                "name": "producerType",
                "doc": "The specific type of producer for the operation."
              },
              {
                "TimeseriesField": {},
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "producerUrn",
                "default": null,
                "doc": "The producer urn for the operation. Only provided is producerType == MONITOR currently,\nwhere it will be set to the monitor urn that sampled the operation. Ideally, this also contains\nthe ingestion source urn if applicable."
              },
              {
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "ALL_ROWS_QUERY": "Issue a query to the table to obtain the metric or values across\nall rows.",
                    "AUDIT_LOG": "Operation was identified by inspecting an audit log API",
                    "CHANGED_ROWS_QUERY": "Issue a query to the table to obtain the metric values across\nonly the rows which have changed since the previous evaluation.",
                    "FILE_METADATA": "Operation was identified by inspecting underlying file system.",
                    "INFORMATION_SCHEMA": "Operation was identified by inspecting an information schema table, or other system metadata table."
                  },
                  "name": "DatasetMetricsOriginType",
                  "namespace": "com.linkedin.pegasus2avro.dataset",
                  "symbols": [
                    "ALL_ROWS_QUERY",
                    "CHANGED_ROWS_QUERY",
                    "INFORMATION_SCHEMA",
                    "AUDIT_LOG",
                    "FILE_METADATA"
                  ]
                },
                "name": "originType",
                "doc": "The specific origin of the metric with regards to the source platform."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.FreshnessFieldSpec"
                ],
                "name": "changedRowsField",
                "default": null,
                "doc": "A field that can be used to filter for the fresh rows since the previous assertion\nevaluation. This should be present when sourceType = CHANGED_ROWS_QUERY.\n\nIf not provided, or the metricSourceType is not QUERY, then the assertion will be evaluated against the\nentire dataset."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.dataset.DatasetFilter"
                ],
                "name": "filter",
                "default": null,
                "doc": "Any additional filters that were applied in a query to retrieve the metric.\nOnly possible to be present if originType is ALL_ROWS_QUERY or CHANGED_ROWS_QUERY."
              }
            ],
            "doc": "Additional details about the origins of a captured source-platform Metric or Metric Set."
          }
        ],
        "name": "source",
        "default": null,
        "doc": "Rich details about the source of the metrics provided in this profile."
      }
    ],
    "doc": "Metrics corresponding to a single schema field.\nNotice that this aspect may be partially completed so the user\nshould filter for existence of the stats they need when querying.\n\nIn the long term, this serves as a replacement for the DatasetFieldProfile object.\nNote that it does not yet support quantiles, histograms, etc, but may evolve to in the future."
  },
  "com.linkedin.pegasus2avro.dataset.DatasetProperties",
  "com.linkedin.pegasus2avro.dataset.EditableDatasetProperties",
  {
    "type": "record",
    "Aspect": {
      "name": "icebergCatalogInfo"
    },
    "name": "IcebergCatalogInfo",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "metadataPointer",
        "default": null,
        "doc": "When Datahub is the REST Catalog for an Iceberg Table, stores the current metadata pointer.\nIf the Iceberg table is managed by an external catalog, the metadata pointer is not set."
      },
      {
        "type": [
          "null",
          "boolean"
        ],
        "name": "view",
        "default": null
      }
    ],
    "doc": "Iceberg Catalog metadata associated with an Iceberg table/view"
  },
  "com.linkedin.pegasus2avro.dataset.DatasetDeprecation",
  {
    "type": "record",
    "Aspect": {
      "name": "datasetProfile",
      "type": "timeseries"
    },
    "name": "DatasetProfile",
    "namespace": "com.linkedin.pegasus2avro.dataset",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasRowCount"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "rowCount",
        "default": null,
        "doc": "The total number of rows"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasColumnCount"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "columnCount",
        "default": null,
        "doc": "The total number of columns (or schema fields)"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasSizeInBytes"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytes",
        "default": null,
        "doc": "Storage size in bytes"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DatasetFieldProfile",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "uniqueCount",
                  "default": null,
                  "doc": "The count of unique values for the field across the dataset.\nUseful for understanding the diversity of field values."
                },
                {
                  "type": [
                    "null",
                    "float"
                  ],
                  "name": "uniqueProportion",
                  "default": null,
                  "doc": "The proportion of unique values over the total number of non-null entries.\nHelps in assessing the uniqueness of the data in the field."
                },
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "nullCount",
                  "default": null,
                  "doc": "The count of null or missing entries for the field.\nImportant for data quality assessments."
                },
                {
                  "type": [
                    "null",
                    "float"
                  ],
                  "name": "nullProportion",
                  "default": null,
                  "doc": "The proportion of null entries over the total number of entries in the field.\nUseful for identifying fields with a high rate of missing values."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "min",
                  "default": null,
                  "doc": "The minimum value in the field for string-representable data types.\nProvides a sense of the lower bound of field values."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "max",
                  "default": null,
                  "doc": "The maximum value in the field for string-representable data types.\nProvides a sense of the upper bound of field values."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "mean",
                  "default": null,
                  "doc": "The mean (average) value of the field, represented as a string.\nUseful for numerical fields to understand the central tendency."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "median",
                  "default": null,
                  "doc": "The median value of the field, represented as a string.\nUseful for understanding the middle value when data is sorted."
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "stdev",
                  "default": null,
                  "doc": "The standard deviation of the field values, represented as a string.\nIndicates the amount of variation or dispersion of field values."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "com.linkedin.pegasus2avro.dataset.Quantile"
                    }
                  ],
                  "name": "quantiles",
                  "default": null,
                  "doc": "Only for numerical columns. Sorted list of quantile cutoffs for the field, in ascending order.\nHelps in assessing the diversity of the data in the field.\nExpect both the quantile and the value field to be string-ified floats.\nEx: quantile: \"0.25\", value: \"1.0\" means the 25th percentile of values falls at 1.0"
                },
                {
                  "type": [
                    "null",
                    "com.linkedin.pegasus2avro.dataset.Histogram"
                  ],
                  "name": "histogram",
                  "default": null,
                  "doc": "Only for numerical columns. A histogram where a range of values in a numerical column\nare rolled up into bins, with the heights representing the number of values in that bin.\nDivided into k bin boundaries, with k-1 frequencies; first+last frequency values are tail weights\nCurrently unused in the product."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "com.linkedin.pegasus2avro.dataset.ValueFrequency"
                    }
                  ],
                  "name": "distinctValueFrequencies",
                  "default": null,
                  "doc": "Volume of each column value for a low-cardinality / categorical field.\nUseful for understanding the distribution of values in the field, and monitoring for changes\nin specific value volumes.\nFor numeric colums, the value will contain a strigified value."
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "sampleValues",
                  "default": null,
                  "doc": "N randomly sampled values of the column. Useful for showing rough preview of the column."
                },
                {
                  "type": "string",
                  "name": "fieldPath",
                  "doc": "The standard path to the field"
                }
              ],
              "doc": "Stats corresponding to fields in a dataset"
            }
          }
        ],
        "name": "fieldProfiles",
        "default": null,
        "doc": "Profiles for each column (or schema field). Notice that we are moving away from\nusing this model and moving toward DatasetFieldProfiles attached to the dataset\nfield urn directly. This field is kept for backward compatibility."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.dataset.DatasetMetricsSourceDetails"
        ],
        "name": "source",
        "default": null,
        "doc": "Rich details about the source of the metrics provided in this profile."
      }
    ],
    "doc": "Metrics corresponding to datasets.\n\nNotice that this aspect may be partially completed so the user\nshould filter for existence of the stats they need when querying."
  },
  "com.linkedin.pegasus2avro.dataset.ViewProperties",
  {
    "type": "record",
    "Aspect": {
      "name": "assertionsSummary"
    },
    "name": "AssertionsSummary",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "failingAssertions",
        "default": [],
        "doc": "Failing assertions for an asset\nDeprecated! Use failingAssertionDetails."
      },
      {
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "passingAssertions",
        "default": [],
        "doc": "Passing assertions for an asset\nDeprecated! Use passingAssertionDetails."
      },
      {
        "Searchable": {
          "fieldName": "lastAssertionResultAt",
          "fieldType": "DATETIME",
          "queryByDefault": false
        },
        "type": [
          "null",
          "long"
        ],
        "name": "lastAssertionResultAt",
        "default": null,
        "doc": "The last time an assertion was run."
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "PassingAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "passingAssertionResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "passingAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "passingAssertionTypes",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "passingAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasPassingAssertions",
            "numValuesFieldName": "numPassingAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "AssertionSummaryDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "The urn of the assertion"
              },
              {
                "type": "string",
                "name": "type",
                "doc": "The top-level type of an assertion"
              },
              {
                "type": "long",
                "name": "lastResultAt",
                "doc": "The time at which the last result was produced."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "source",
                "default": null,
                "doc": "The source of the assertion"
              }
            ],
            "doc": "Summary statistics about assertions on an entity."
          }
        },
        "name": "passingAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of passing assertions"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "FailingAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "failingAssertionResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "failingAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "failingAssertionType",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "addHasValuesToFilters": true,
            "fieldName": "failingAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasFailingAssertions",
            "numValuesFieldName": "numFailingAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AssertionSummaryDetails"
        },
        "name": "failingAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of failing assertions"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "assertion"
            ],
            "name": "ErroringAssertions"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "erroringAssertionResultTimes",
            "fieldType": "DATETIME"
          },
          "/*/source": {
            "fieldName": "erroringAssertionSources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "erroringAssertionType",
            "fieldType": "KEYWORD"
          },
          "/*/urn": {
            "fieldName": "erroringAssertions",
            "fieldType": "URN",
            "hasValuesFieldName": "hasErroringAssertions",
            "numValuesFieldName": "numErroringAssertions",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AssertionSummaryDetails"
        },
        "name": "erroringAssertionDetails",
        "default": [],
        "doc": "Summary details about the set of erroring assertions"
      }
    ],
    "doc": "Summary related to entity assertions"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "operation",
      "type": "timeseries"
    },
    "name": "Operation",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": "long",
        "name": "timestampMillis",
        "doc": "The event timestamp field as epoch at UTC in milli seconds."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.timeseries.TimeWindowSize"
        ],
        "name": "eventGranularity",
        "default": null,
        "doc": "Granularity of the event if applicable"
      },
      {
        "type": [
          "com.linkedin.pegasus2avro.timeseries.PartitionSpec",
          "null"
        ],
        "name": "partitionSpec",
        "default": {
          "partition": "FULL_TABLE_SNAPSHOT",
          "type": "FULL_TABLE",
          "timePartition": null
        },
        "doc": "The optional partition specification."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "messageId",
        "default": null,
        "doc": "The optional messageId, if provided serves as a custom user-defined unique identifier for an aspect value."
      },
      {
        "TimeseriesField": {},
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": [
          "null",
          "string"
        ],
        "name": "actor",
        "default": null,
        "doc": "Actor who issued this operation."
      },
      {
        "TimeseriesField": {},
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ALTER": "Asset was altered",
            "CREATE": "Asset was created",
            "CUSTOM": "Custom asset operation. If this is set, ensure customOperationType is filled out.",
            "DELETE": "Rows were deleted",
            "DROP": "Asset was dropped",
            "INSERT": "Rows were inserted",
            "UPDATE": "Rows were updated"
          },
          "name": "OperationType",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "INSERT",
            "UPDATE",
            "DELETE",
            "CREATE",
            "ALTER",
            "DROP",
            "CUSTOM",
            "UNKNOWN"
          ],
          "doc": "Enum to define the operation type when an entity changes."
        },
        "name": "operationType",
        "doc": "Operation type of change."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "string"
        ],
        "name": "customOperationType",
        "default": null,
        "doc": "A custom type of operation. Required if operationType is CUSTOM."
      },
      {
        "TimeseriesField": {},
        "type": [
          "null",
          "long"
        ],
        "name": "numAffectedRows",
        "default": null,
        "doc": "How many rows were affected by this operation."
      },
      {
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "affectedDatasets",
        "default": null,
        "doc": "Which other datasets were affected by this operation."
      },
      {
        "TimeseriesField": {},
        "deprecated": true,
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "DATA_PLATFORM": "Update was provided by consulting the data platform  itself.",
              "DATA_PROCESS": "Provided by a Data Process"
            },
            "name": "OperationSourceType",
            "namespace": "com.linkedin.pegasus2avro.common",
            "symbols": [
              "DATA_PROCESS",
              "DATA_PLATFORM"
            ],
            "doc": "The source of an operation. Note that this may be superceded by sourceDetails > producerType."
          }
        ],
        "name": "sourceType",
        "default": null,
        "doc": "Source Type - E.g. which process produced this operation. Note that this field will be superseded by the richer information\nprovided inside the \"source\" field (e.g source > producerType)"
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "OperationSourceDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "TimeseriesField": {},
                "type": "com.linkedin.pegasus2avro.common.MetadataProducerType",
                "name": "producerType",
                "doc": "The specific type of producer for the operation."
              },
              {
                "TimeseriesField": {},
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "producerUrn",
                "default": null,
                "doc": "The producer urn for the operation. Only provided is producerType == MONITOR currently,\nwhere it will be set to the monitor urn that sampled the operation. Ideally, this also contains\nthe ingestion source urn if applicable."
              },
              {
                "TimeseriesField": {},
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "AUDIT_LOG": "Operation was identified by inspecting an audit log API",
                    "FIELD_VALUE": "Operation was identified by querying a particular field / column value.",
                    "FILE_METADATA": "Operation was identified by inspecting underlying file system.",
                    "INFORMATION_SCHEMA": "Operation was identified by inspecting an information schema table, or other system metadata table."
                  },
                  "name": "OperationSourceOriginType",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "FIELD_VALUE",
                    "INFORMATION_SCHEMA",
                    "AUDIT_LOG",
                    "FILE_METADATA"
                  ]
                },
                "name": "originType",
                "doc": "The specific origin of the operation with regards to the source platform."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.assertion.FreshnessFieldSpec"
                ],
                "name": "field",
                "default": null,
                "doc": "Information about the field / column. May be present when originType is FIELD_VALUE"
              }
            ],
            "doc": "Additional details about the origins of a captured source-platform Operation."
          }
        ],
        "name": "source",
        "default": null,
        "doc": "More detailed information about the source of the operation."
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "customProperties",
        "default": null,
        "doc": "Custom properties"
      },
      {
        "Searchable": {
          "fieldName": "lastOperationTime",
          "fieldType": "DATETIME"
        },
        "TimeseriesField": {
          "fieldType": "DATETIME"
        },
        "type": "long",
        "name": "lastUpdatedTimestamp",
        "doc": "The time at which the operation occurred. Would be better named 'operationTime'"
      },
      {
        "TimeseriesFieldCollection": {
          "key": "query"
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "queries",
        "default": null,
        "doc": "Which queries were used in this operation."
      }
    ],
    "doc": "Operational info for an entity."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "versionProperties"
    },
    "name": "VersionProperties",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Relationship": {
          "entityTypes": [
            "versionSet"
          ],
          "name": "VersionOf"
        },
        "Searchable": {
          "queryByDefault": false
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "versionSet"
        ],
        "type": "string",
        "name": "versionSet",
        "doc": "The linked Version Set entity that ties multiple versioned assets together"
      },
      {
        "Searchable": {
          "/versionTag": {
            "fieldName": "version",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.VersionTag",
        "name": "version",
        "doc": "Label for this versioned asset, is unique within a version set"
      },
      {
        "Searchable": {
          "/*/versionTag": {
            "fieldName": "aliases",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.VersionTag"
        },
        "name": "aliases",
        "default": [],
        "doc": "Associated aliases for this versioned asset"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "comment",
        "default": null,
        "doc": "Comment documenting what this version was created for, changes, or represents"
      },
      {
        "Searchable": {
          "fieldName": "versionSortId",
          "queryByDefault": false
        },
        "type": "string",
        "name": "sortId",
        "doc": "Sort identifier that determines where a version lives in the order of the Version Set.\nWhat this looks like depends on the Version Scheme. For sort ids generated by DataHub we use an 8 character string representation."
      },
      {
        "type": "com.linkedin.pegasus2avro.versionset.VersioningScheme",
        "name": "versioningScheme",
        "default": "LEXICOGRAPHIC_STRING",
        "doc": "What versioning scheme `sortId` belongs to.\nDefaults to a plain string that is lexicographically sorted."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "sourceCreatedTimestamp",
        "default": null,
        "doc": "Timestamp reflecting when this asset version was created in the source system."
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "metadataCreatedTimestamp",
        "default": null,
        "doc": "Timestamp reflecting when the metadata for this version was created in DataHub"
      },
      {
        "Searchable": {
          "fieldType": "BOOLEAN",
          "queryByDefault": false
        },
        "type": [
          "null",
          "boolean"
        ],
        "name": "isLatest",
        "default": null,
        "doc": "Marks whether this version is currently the latest. Set by a side effect and should not be modified by API."
      }
    ],
    "doc": "Properties about a versioned asset i.e. dataset, ML Model, etc."
  },
  "com.linkedin.pegasus2avro.common.GlossaryTerms",
  {
    "type": "record",
    "Aspect": {
      "name": "access"
    },
    "name": "Access",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "RoleAssociation",
              "namespace": "com.linkedin.pegasus2avro.common",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "role"
                    ],
                    "name": "AssociatedWith"
                  },
                  "Searchable": {
                    "fieldName": "roles",
                    "fieldType": "URN",
                    "filterNameOverride": "Role",
                    "hasValuesFieldName": "hasRoles",
                    "queryByDefault": false
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "role"
                  ],
                  "type": "string",
                  "name": "urn",
                  "doc": "Urn of the External Role"
                }
              ],
              "doc": "Properties of an applied Role. For now, just an Urn"
            }
          }
        ],
        "name": "roles",
        "default": null,
        "doc": "List of Roles which needs to be associated"
      }
    ],
    "doc": "Aspect used for associating roles to a dataset or any asset"
  },
  "com.linkedin.pegasus2avro.common.BrowsePathsV2",
  "com.linkedin.pegasus2avro.common.Status",
  {
    "type": "record",
    "Aspect": {
      "name": "origin"
    },
    "name": "Origin",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "type": "enum",
          "symbolDocs": {
            "EXTERNAL": "The entity is external to DataHub.",
            "NATIVE": "The entity is native to DataHub."
          },
          "name": "OriginType",
          "namespace": "com.linkedin.pegasus2avro.common",
          "symbols": [
            "NATIVE",
            "EXTERNAL"
          ],
          "doc": "Enum to define where an entity originated from."
        },
        "name": "type",
        "doc": "Where an entity originated from. Either NATIVE or EXTERNAL."
      },
      {
        "deprecated": "Use sourceDetails instead",
        "type": [
          "null",
          "string"
        ],
        "name": "externalType",
        "default": null,
        "doc": "Only populated if type is EXTERNAL. The externalType of the entity, such as the name of the identity provider."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "SourceDetails",
              "namespace": "com.linkedin.pegasus2avro.common",
              "fields": [
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "source",
                  "doc": "Urn of the source of this asset. Could be an ingestion source (e.g. urn:li:dataHubIngestionSource:1234), an acryl\n    platform instance, etc."
                },
                {
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "type": "string",
                  "name": "platform",
                  "doc": "Urn of the platform this asset originated from ie. urn:li:dataPlatform:snowflake for snowflake ingestion\nor urn:li:dataPlatform:acryl for assets synced from another catalog instance."
                },
                {
                  "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                  "name": "lastModified",
                  "doc": "Audit stamp for when this asset was synced"
                },
                {
                  "type": {
                    "type": "enum",
                    "symbolDocs": {
                      "API": "Synced via the API (pushed from clients using the API directly)",
                      "INGEST": "Synced via ingestion recipes",
                      "OTHER": "Synced via some other mechanism (used as a placeholder for incubating\n      future mechanisms)",
                      "SHARE": "Synced via metadata sharing with another Acryl instance"
                    },
                    "name": "SyncMechanism",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "symbols": [
                      "INGEST",
                      "SHARE",
                      "API",
                      "OTHER"
                    ]
                  },
                  "name": "mechanism",
                  "doc": "The means by which this asset got synchronized"
                },
                {
                  "type": [
                    {
                      "type": "map",
                      "values": "string"
                    },
                    "null"
                  ],
                  "name": "properties",
                  "default": {},
                  "doc": "Additional information related to the origin of this metadata"
                }
              ],
              "doc": "Info about how this asset was brought into DataHub"
            }
          }
        ],
        "name": "sourceDetails",
        "default": null,
        "doc": "Details about the source(s) by which this asset was originated"
      }
    ],
    "doc": "Carries information about where an entity originated from."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "share"
    },
    "name": "Share",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*/destination": {
            "fieldName": "shareDestinations",
            "fieldType": "URN",
            "hasValuesFieldName": "hasShareDestinations",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "ShareResult",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "destination",
                "doc": "Urn of the DataHubConnection related to another Acryl instance"
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "implicitShareEntity",
                "default": null,
                "doc": "If this share happened implicitly due to another entity being shared, this field\nwill be populated with that entity urn. Example: if a dataset is shared, its containers\nwill also be shared. The share result for the container will have the dataset urn here."
              },
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "created",
                "doc": "Audit stamp for when the first share request for the given destination occurred."
              },
              {
                "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                "name": "lastAttempt",
                "doc": "When did we get this share result and who requested the share. This will be the time\nthat we try and execute the share on the backend, regardless of success."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "lastAttemptRequestId",
                "default": null,
                "doc": "The request id that generated this share result. This is the id of the request that triggered this share.\nThis is primarily used for debugging purposes."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "record",
                    "name": "ShareConfig",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "enableUpstreamLineage",
                        "default": null,
                        "doc": "Upstream lineage was shared"
                      },
                      {
                        "type": [
                          "null",
                          "boolean"
                        ],
                        "name": "enableDownstreamLineage",
                        "default": null,
                        "doc": "Downstream lineage was shared"
                      }
                    ]
                  }
                ],
                "name": "shareConfig",
                "default": null,
                "doc": "The config for this particular share result"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastSuccess",
                "default": null,
                "doc": "Audit stamp for the last time a share to this above destination successfully occurred"
              },
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "FAILURE": "The share was a failure",
                    "PARTIAL_SUCCESS": "The share was partially successful. Some, but not all, aspects were shared.",
                    "RUNNING": "The share request is still in progress",
                    "SUCCESS": "The share was successful"
                  },
                  "name": "ShareResultState",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "RUNNING",
                    "SUCCESS",
                    "PARTIAL_SUCCESS",
                    "FAILURE"
                  ]
                },
                "name": "status",
                "doc": "Status for this share result - whether or not it succeeded"
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "statusLastUpdated",
                "default": null,
                "doc": "The last time the status was updated. Timestamp in milliseconds since epoch.\nUseful for monitoring if the status is stale."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "message",
                "default": null,
                "doc": "Optional message for this share result. Error messages will be stored here.\nThis message will be presented to the end user, so it should not include stack traces etc."
              }
            ],
            "doc": "Info about the results from sharing metadata for a given entity"
          }
        },
        "name": "lastShareResults",
        "doc": "The last share result for each destination that this entity has been shared with"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": "com.linkedin.pegasus2avro.common.ShareResult"
          }
        ],
        "name": "lastUnshareResults",
        "default": null,
        "doc": "The last unshare result for each destination that this entity was\npreviously shared with. A successfully unshared destination should not\nappear in the lastShareResults field."
      }
    ],
    "doc": "Aspect used for keeping track of metadata sharing info"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "documentation"
    },
    "name": "Documentation",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "The time and actor that generated or last updated this documentation."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "DocumentationAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": "string",
                "name": "documentation",
                "doc": "Description of this asset"
              },
              {
                "Searchable": {
                  "/actor": {
                    "fieldName": "documentationAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/source": {
                    "fieldName": "documentationAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/time": {
                    "fieldName": "documentationAttributionDates",
                    "fieldType": "DATETIME",
                    "queryByDefault": false
                  }
                },
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.MetadataAttribution"
                ],
                "name": "attribution",
                "default": null,
                "doc": "Information about who, why, and how this metadata was applied"
              }
            ],
            "doc": "Properties of applied documentation including the attribution of the doc"
          }
        },
        "name": "documentations",
        "doc": "Documentations associated with this asset. We could be receiving docs from different sources"
      }
    ],
    "doc": "Aspect used for storing all applicable documentations on assets.\nThis aspect supports multiple documentations from different sources.\nThere is an implicit assumption that there is only one documentation per\n   source.\nFor example, if there are two documentations from the same source, the\n   latest one will overwrite the previous one.\nIf there are two documentations from different sources, both will be\n   stored.\nFuture evolution considerations:\nThe first entity that uses this aspect is Schema Field. We will expand this\n    aspect to other entities eventually.\nThe values of the documentation are not currently searchable. This will be\n    changed once this aspect develops opinion on which documentation entry is\n    the authoritative one.\nEnsuring that there is only one documentation per source is a business\n    rule that is not enforced by the aspect yet. This will currently be enforced by the\n    application that uses this aspect. We will eventually enforce this rule in\n    the aspect using AspectMutators."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "siblings"
    },
    "name": "Siblings",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset"
            ],
            "name": "SiblingOf"
          }
        },
        "Searchable": {
          "/*": {
            "addHasValuesToFilters": true,
            "fieldName": "siblings",
            "fieldType": "URN",
            "hasValuesFieldName": "hasSiblings",
            "queryByDefault": false
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "siblings",
        "doc": "List of sibling entities"
      },
      {
        "type": "boolean",
        "name": "primary",
        "doc": "If this is the leader entity of the set of siblings"
      }
    ],
    "doc": "Siblings information of an entity."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "inputFields"
    },
    "name": "InputFields",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "InputField",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "schemaField"
                  ],
                  "name": "consumesField"
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "schemaField"
                ],
                "type": "string",
                "name": "schemaFieldUrn",
                "doc": "Urn of the schema being referenced for lineage purposes"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.schema.SchemaField"
                ],
                "name": "schemaField",
                "default": null,
                "doc": "Copied version of the referenced schema field object for indexing purposes"
              }
            ],
            "doc": "Information about a field a chart or dashboard references"
          }
        },
        "name": "fields",
        "doc": "List of fields being referenced"
      }
    ],
    "doc": "Information about the fields a chart or dashboard references"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "anomaliesSummary"
    },
    "name": "AnomaliesSummary",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "anomaly"
            ],
            "name": "ActiveAnomalies"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "activeAnomalyResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "activeAnomalySources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "activeAnomalyTypes",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "activeAnomalies",
            "fieldType": "URN",
            "hasValuesFieldName": "hasActiveAnomalies",
            "numValuesFieldName": "numActiveAnomalies",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "AnomalySummaryDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "The urn of the anomaly"
              },
              {
                "type": "string",
                "name": "type",
                "doc": "The top-level type of an anomaly"
              },
              {
                "type": "long",
                "name": "lastResultAt",
                "doc": "The time at which the last result was produced."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "source",
                "default": null,
                "doc": "The source of the anomaly"
              }
            ],
            "doc": "Summary statistics about anomalies on an entity."
          }
        },
        "name": "activeAnomalyDetails",
        "default": [],
        "doc": "Summary details about the set of active anomalies"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "anomaly"
            ],
            "name": "ResolvedAnomalies"
          }
        },
        "Searchable": {
          "/*/lastResultAt": {
            "fieldName": "resolvedAnomalyResultTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/source": {
            "fieldName": "resolvedAnomalySources",
            "queryByDefault": false
          },
          "/*/type": {
            "fieldName": "resolvedAnomalyTypes",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "resolvedAnomalies",
            "fieldType": "URN",
            "hasValuesFieldName": "hasResolvedAnomalies",
            "numValuesFieldName": "numResolvedAnomalies",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.AnomalySummaryDetails"
        },
        "name": "resolvedAnomalyDetails",
        "default": [],
        "doc": "Summary details about the set of resolved anomalies"
      }
    ],
    "doc": "Summary related to entity anomalies"
  },
  "com.linkedin.pegasus2avro.common.Cost",
  {
    "type": "record",
    "Aspect": {
      "name": "incidentsSummary"
    },
    "name": "IncidentsSummary",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "resolvedIncidents",
        "default": [],
        "doc": "Resolved incidents for an asset\nDeprecated! Use the richer resolvedIncidentsDetails instead."
      },
      {
        "deprecated": true,
        "Urn": "Urn",
        "urn_is_array": true,
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "activeIncidents",
        "default": [],
        "doc": "Active incidents for an asset\nDeprecated! Use the richer activeIncidentsDetails instead."
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "incident"
            ],
            "name": "ResolvedIncidents"
          }
        },
        "Searchable": {
          "/*/createdAt": {
            "fieldName": "resolvedIncidentCreatedTimes",
            "fieldType": "DATETIME"
          },
          "/*/priority": {
            "fieldName": "resolvedIncidentPriorities",
            "fieldType": "COUNT"
          },
          "/*/resolvedAt": {
            "fieldName": "resolvedIncidentResolvedTimes",
            "fieldType": "DATETIME"
          },
          "/*/type": {
            "fieldName": "resolvedIncidentTypes",
            "fieldType": "KEYWORD"
          },
          "/*/urn": {
            "fieldName": "resolvedIncidents",
            "fieldType": "URN",
            "hasValuesFieldName": "hasResolvedIncidents",
            "numValuesFieldName": "numResolvedIncidents",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "IncidentSummaryDetails",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "The urn of the incident"
              },
              {
                "type": "string",
                "name": "type",
                "doc": "The type of an incident"
              },
              {
                "type": "long",
                "name": "createdAt",
                "doc": "The time at which the incident was raised in milliseconds since epoch."
              },
              {
                "type": [
                  "null",
                  "long"
                ],
                "name": "resolvedAt",
                "default": null,
                "doc": "The time at which the incident was marked as resolved in milliseconds since epoch. Null if the incident is still active."
              },
              {
                "type": [
                  "null",
                  "int"
                ],
                "name": "priority",
                "default": null,
                "doc": "The priority of the incident"
              }
            ],
            "doc": "Summary statistics about incidents on an entity."
          }
        },
        "name": "resolvedIncidentDetails",
        "default": [],
        "doc": "Summary details about the set of resolved incidents"
      },
      {
        "Relationship": {
          "/*/urn": {
            "entityTypes": [
              "incident"
            ],
            "name": "ActiveIncidents"
          }
        },
        "Searchable": {
          "/*/createdAt": {
            "fieldName": "activeIncidentCreatedTimes",
            "fieldType": "DATETIME"
          },
          "/*/priority": {
            "fieldName": "activeIncidentPriorities",
            "fieldType": "COUNT"
          },
          "/*/type": {
            "fieldName": "activeIncidentTypes",
            "fieldType": "KEYWORD"
          },
          "/*/urn": {
            "addHasValuesToFilters": true,
            "fieldName": "activeIncidents",
            "fieldType": "URN",
            "hasValuesFieldName": "hasActiveIncidents",
            "numValuesFieldName": "numActiveIncidents",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.IncidentSummaryDetails"
        },
        "name": "activeIncidentDetails",
        "default": [],
        "doc": "Summary details about the set of active incidents"
      }
    ],
    "doc": "Summary related incidents on an entity."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "forms"
    },
    "name": "Forms",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*/completedPrompts/*/id": {
            "fieldName": "incompleteFormsCompletedPromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/completedPrompts/*/lastModified/time": {
            "fieldName": "incompleteFormsCompletedPromptResponseTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/incompletePrompts/*/id": {
            "fieldName": "incompleteFormsIncompletePromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "incompleteForms",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "urn",
                "doc": "Urn of the applied form"
              },
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "FormPromptAssociation",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": "string",
                        "name": "id",
                        "doc": "The id for the prompt. This must be GLOBALLY UNIQUE."
                      },
                      {
                        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                        "name": "lastModified",
                        "doc": "The last time this prompt was touched for the entity (set, unset)"
                      },
                      {
                        "type": [
                          "null",
                          {
                            "type": "record",
                            "name": "FormPromptFieldAssociations",
                            "namespace": "com.linkedin.pegasus2avro.common",
                            "fields": [
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "record",
                                      "name": "FieldFormPromptAssociation",
                                      "namespace": "com.linkedin.pegasus2avro.common",
                                      "fields": [
                                        {
                                          "type": "string",
                                          "name": "fieldPath",
                                          "doc": "The field path on a schema field."
                                        },
                                        {
                                          "type": "com.linkedin.pegasus2avro.common.AuditStamp",
                                          "name": "lastModified",
                                          "doc": "The last time this prompt was touched for the field on the entity (set, unset)"
                                        },
                                        {
                                          "type": [
                                            "null",
                                            {
                                              "type": "record",
                                              "name": "FormPromptResponse",
                                              "namespace": "com.linkedin.pegasus2avro.common",
                                              "fields": [
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "StructuredPropertyPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "java": {
                                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                          },
                                                          "Urn": "Urn",
                                                          "type": "string",
                                                          "name": "propertyUrn",
                                                          "doc": "Which property was applied from this prompt response"
                                                        },
                                                        {
                                                          "type": {
                                                            "type": "array",
                                                            "items": [
                                                              "string",
                                                              "double"
                                                            ]
                                                          },
                                                          "name": "values",
                                                          "doc": "Which values for the given property were applied from this prompt response"
                                                        }
                                                      ]
                                                    }
                                                  ],
                                                  "name": "structuredPropertyResponse",
                                                  "default": null,
                                                  "doc": "Response for a structured property type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "OwnershipPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "Urn": "Urn",
                                                          "urn_is_array": true,
                                                          "type": {
                                                            "type": "array",
                                                            "items": "string"
                                                          },
                                                          "name": "owners",
                                                          "doc": "The owners applied to an asset from this prompt response"
                                                        },
                                                        {
                                                          "java": {
                                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                          },
                                                          "Urn": "Urn",
                                                          "type": "string",
                                                          "name": "ownershipTypeUrn",
                                                          "doc": "The type of ownership applied from this prompt response"
                                                        }
                                                      ],
                                                      "doc": "Response for an ownership type prompt"
                                                    }
                                                  ],
                                                  "name": "ownershipResponse",
                                                  "default": null,
                                                  "doc": "Response for an ownership type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "DocumentationPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "type": "string",
                                                          "name": "documentation",
                                                          "doc": "The documentation provided for this specific response"
                                                        }
                                                      ]
                                                    }
                                                  ],
                                                  "name": "documentationResponse",
                                                  "default": null,
                                                  "doc": "Response for a documentation type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "GlossaryTermsPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "Urn": "Urn",
                                                          "urn_is_array": true,
                                                          "type": {
                                                            "type": "array",
                                                            "items": "string"
                                                          },
                                                          "name": "glossaryTerms",
                                                          "doc": "The glossaryTerms applied to an asset from this prompt response"
                                                        }
                                                      ],
                                                      "doc": "Response for a glossary terms type prompt"
                                                    }
                                                  ],
                                                  "name": "glossaryTermsResponse",
                                                  "default": null,
                                                  "doc": "Response for a glossary terms type prompt"
                                                },
                                                {
                                                  "type": [
                                                    "null",
                                                    {
                                                      "type": "record",
                                                      "name": "DomainPromptResponse",
                                                      "namespace": "com.linkedin.pegasus2avro.common",
                                                      "fields": [
                                                        {
                                                          "java": {
                                                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                                                          },
                                                          "Urn": "Urn",
                                                          "type": "string",
                                                          "name": "domain",
                                                          "doc": "The domain applied to an asset from this prompt response"
                                                        }
                                                      ],
                                                      "doc": "Response for a domain type prompt"
                                                    }
                                                  ],
                                                  "name": "domainResponse",
                                                  "default": null,
                                                  "doc": "Response for a domain type prompt"
                                                }
                                              ],
                                              "doc": "A record of what was actually submitted when a user responds to a form prompt"
                                            }
                                          ],
                                          "name": "response",
                                          "default": null,
                                          "doc": "Optional record of what was actually submitted when a user responds to a field-level form prompt.\nThis should be populated going forward."
                                        }
                                      ],
                                      "doc": "Information about the status of a particular prompt for a specific schema field\non an entity."
                                    }
                                  }
                                ],
                                "name": "completedFieldPrompts",
                                "default": null,
                                "doc": "A list of field-level prompt associations that are not yet complete for this form."
                              },
                              {
                                "type": [
                                  "null",
                                  {
                                    "type": "array",
                                    "items": "com.linkedin.pegasus2avro.common.FieldFormPromptAssociation"
                                  }
                                ],
                                "name": "incompleteFieldPrompts",
                                "default": null,
                                "doc": "A list of field-level prompt associations that are complete for this form."
                              }
                            ],
                            "doc": "Information about the field-level prompt associations on a top-level prompt association."
                          }
                        ],
                        "name": "fieldAssociations",
                        "default": null,
                        "doc": "Optional information about the field-level prompt associations."
                      },
                      {
                        "type": [
                          "null",
                          "com.linkedin.pegasus2avro.common.FormPromptResponse"
                        ],
                        "name": "response",
                        "default": null,
                        "doc": "Optional record of what was actually submitted when a user responds to a form prompt.\nThis should be populated going forward."
                      }
                    ],
                    "doc": "Information about the status of a particular prompt.\nNote that this is where we can add additional information about individual responses:\nactor, timestamp, and the response itself."
                  }
                },
                "name": "incompletePrompts",
                "default": [],
                "doc": "A list of prompts that are not yet complete for this form."
              },
              {
                "type": {
                  "type": "array",
                  "items": "com.linkedin.pegasus2avro.common.FormPromptAssociation"
                },
                "name": "completedPrompts",
                "default": [],
                "doc": "A list of prompts that have been completed for this form."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "created",
                "default": null,
                "doc": "An audit stamp of when this form association was created"
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastModified",
                "default": null,
                "doc": "An audit stamp of the last time this form association was modified"
              }
            ],
            "doc": "Properties of an applied form."
          }
        },
        "name": "incompleteForms",
        "doc": "All incomplete forms assigned to the entity."
      },
      {
        "Searchable": {
          "/*/completedPrompts/*/id": {
            "fieldName": "completedFormsCompletedPromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/completedPrompts/*/lastModified/time": {
            "fieldName": "completedFormsCompletedPromptResponseTimes",
            "fieldType": "DATETIME",
            "queryByDefault": false
          },
          "/*/incompletePrompts/*/id": {
            "fieldName": "completedFormsIncompletePromptIds",
            "fieldType": "KEYWORD",
            "queryByDefault": false
          },
          "/*/urn": {
            "fieldName": "completedForms",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.common.FormAssociation"
        },
        "name": "completedForms",
        "doc": "All complete forms assigned to the entity."
      },
      {
        "Searchable": {
          "/*/form": {
            "fieldName": "verifiedForms",
            "fieldType": "URN",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "FormVerificationAssociation",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": "string",
                "name": "form",
                "doc": "The urn of the form that granted this verification."
              },
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.common.AuditStamp"
                ],
                "name": "lastModified",
                "default": null,
                "doc": "An audit stamp capturing who and when verification was applied for this form."
              }
            ],
            "doc": "An association between a verification and an entity that has been granted\nvia completion of one or more forms of type 'VERIFICATION'."
          }
        },
        "name": "verifications",
        "default": [],
        "doc": "Verifications that have been applied to the entity via completed forms."
      }
    ],
    "doc": "Forms that are assigned to this entity to be filled out"
  },
  "com.linkedin.pegasus2avro.common.Ownership",
  "com.linkedin.pegasus2avro.common.InstitutionalMemory",
  {
    "type": "record",
    "Aspect": {
      "name": "dataTransformLogic"
    },
    "name": "DataTransformLogic",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "DataTransform",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": [
                  "null",
                  "com.linkedin.pegasus2avro.query.QueryStatement"
                ],
                "name": "queryStatement",
                "default": null,
                "doc": "The data transform may be defined by a query statement"
              }
            ],
            "doc": "Information about a transformation. It may be a query,"
          }
        },
        "name": "transforms",
        "doc": "List of transformations applied"
      }
    ],
    "doc": "Information about a Query against one or more data assets (e.g. Tables or Views)."
  },
  "com.linkedin.pegasus2avro.common.GlobalTags",
  {
    "type": "record",
    "Aspect": {
      "name": "proposals"
    },
    "name": "Proposals",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "fieldName": "proposedTags",
            "fieldType": "URN",
            "filterNameOverride": "Proposed Tag"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "proposedTags",
        "default": null,
        "doc": "Proposed tags for a given entity"
      },
      {
        "Searchable": {
          "/*": {
            "fieldName": "proposedGlossaryTerms",
            "fieldType": "URN",
            "filterNameOverride": "Proposed Glossary Term"
          }
        },
        "Urn": "Urn",
        "urn_is_array": true,
        "type": [
          "null",
          {
            "type": "array",
            "items": "string"
          }
        ],
        "name": "proposedGlossaryTerms",
        "default": null,
        "doc": "Proposed glossary terms for a given entity"
      }
    ],
    "doc": "Proposals aspect for proposed tags and glossary terms for an entity.\nThese are secondary indices and ActionRequests remain the source of truth."
  },
  "com.linkedin.pegasus2avro.common.DataPlatformInstance",
  {
    "type": "record",
    "Aspect": {
      "name": "displayProperties"
    },
    "name": "DisplayProperties",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "colorHex",
        "default": null,
        "doc": "The color associated with the entity in Hex. For example #FFFFFF."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "IconProperties",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "MATERIAL": "Material UI"
                  },
                  "name": "IconLibrary",
                  "namespace": "com.linkedin.pegasus2avro.common",
                  "symbols": [
                    "MATERIAL"
                  ],
                  "doc": "Enum of possible icon sources"
                },
                "name": "iconLibrary",
                "doc": "The source of the icon: e.g. Antd, Material, etc"
              },
              {
                "type": "string",
                "name": "name",
                "doc": "The name of the icon"
              },
              {
                "type": "string",
                "name": "style",
                "doc": "Any modifier for the icon, this will be library-specific, e.g. filled/outlined, etc"
              }
            ],
            "doc": "Properties describing an icon associated with an entity"
          }
        ],
        "name": "icon",
        "default": null,
        "doc": "The icon associated with the entity"
      }
    ],
    "doc": "Properties related to how the entity is displayed in the Datahub UI"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "embed"
    },
    "name": "Embed",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": [
          "null",
          "string"
        ],
        "name": "renderUrl",
        "default": null,
        "doc": "An embed URL to be rendered inside of an iframe."
      }
    ],
    "doc": "Information regarding rendering an embed for an asset."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "subTypes"
    },
    "name": "SubTypes",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "Searchable": {
          "/*": {
            "addToFilters": true,
            "fieldType": "KEYWORD",
            "filterNameOverride": "Sub Type",
            "queryByDefault": false
          }
        },
        "type": {
          "type": "array",
          "items": "string"
        },
        "name": "typeNames",
        "doc": "The names of the specific types."
      }
    ],
    "doc": "Sub Types. Use this aspect to specialize a generic Entity\ne.g. Making a Dataset also be a View or also be a LookerExplore"
  },
  "com.linkedin.pegasus2avro.common.Deprecation",
  "com.linkedin.pegasus2avro.common.BrowsePaths",
  {
    "type": "record",
    "Aspect": {
      "name": "roleProperties"
    },
    "name": "RoleProperties",
    "namespace": "com.linkedin.pegasus2avro.role",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM"
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the IAM Role in the external system"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the IAM Role"
      },
      {
        "type": "string",
        "name": "type",
        "doc": "Can be READ, ADMIN, WRITE"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "requestUrl",
        "default": null,
        "doc": "Link to access external access management"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      }
    ],
    "doc": "Information about a ExternalRoleProperties"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "actors"
    },
    "name": "Actors",
    "namespace": "com.linkedin.pegasus2avro.role",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "RoleUser",
              "namespace": "com.linkedin.pegasus2avro.role",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "corpuser"
                    ],
                    "name": "Has"
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "corpuser"
                  ],
                  "type": "string",
                  "name": "user",
                  "doc": "Link provisioned corp user for a role"
                }
              ],
              "doc": "Provisioned users of a role"
            }
          }
        ],
        "name": "users",
        "default": null,
        "doc": "List of provisioned users of a role"
      }
    ],
    "doc": "Provisioned users of a role"
  },
  {
    "type": "record",
    "Event": {
      "name": "notificationRequest"
    },
    "name": "NotificationRequest",
    "namespace": "com.linkedin.pegasus2avro.event.notification",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "NotificationMessage",
          "namespace": "com.linkedin.pegasus2avro.event.notification",
          "fields": [
            {
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE": "Broadcast that an action workflow form request has been completed (approved or denied).",
                  "BROADCAST_ASSERTION_STATUS_CHANGE": "Assertion change notification template.",
                  "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST": "Broadcast that a new action workflow form request has been created or needs review.",
                  "BROADCAST_NEW_INCIDENT_UPDATE": "Updates the broadcasted incident if possible.",
                  "CUSTOM": "Legacy template types to support backwards compatibility.",
                  "OWNERSHIP_CHANGE": "Ownership change notification template."
                },
                "name": "NotificationTemplateType",
                "namespace": "com.linkedin.pegasus2avro.event.notification.template",
                "symbols": [
                  "OWNERSHIP_CHANGE",
                  "BROADCAST_ASSERTION_STATUS_CHANGE",
                  "CUSTOM",
                  "BROADCAST_NEW_INCIDENT",
                  "BROADCAST_NEW_INCIDENT_UPDATE",
                  "BROADCAST_INCIDENT_STATUS_CHANGE",
                  "BROADCAST_ENTITY_CHANGE",
                  "BROADCAST_INGESTION_RUN_CHANGE",
                  "BROADCAST_NEW_PROPOSAL",
                  "BROADCAST_PROPOSAL_STATUS_CHANGE",
                  "BROADCAST_COMPLIANCE_FORM_PUBLISH",
                  "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST",
                  "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE",
                  "INVALID_TEMPLATE"
                ],
                "doc": "Possible notification template types."
              },
              "name": "template",
              "doc": "The name of a notification template to use, e.g. INCIDENT_CREATED, INCIDENT_STATUS_UPDATED, CUSTOM.\nEach sink may support a different set of template types."
            },
            {
              "type": [
                "null",
                {
                  "type": "map",
                  "values": "string"
                }
              ],
              "name": "parameters",
              "default": null,
              "doc": "Parameters serving as input to the template, validated and substituted based on the selected template."
            },
            {
              "type": [
                "null",
                {
                  "type": "record",
                  "name": "OwnershipParameters",
                  "namespace": "com.linkedin.pegasus2avro.event.notification.template",
                  "fields": [
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "com.linkedin.pegasus2avro.common.Owner"
                        }
                      ],
                      "name": "ownersAdded",
                      "default": null,
                      "doc": "The owners that were added."
                    },
                    {
                      "type": [
                        "null",
                        {
                          "type": "array",
                          "items": "com.linkedin.pegasus2avro.common.Owner"
                        }
                      ],
                      "name": "ownersRemoved",
                      "default": null,
                      "doc": "The owners that were removed."
                    }
                  ],
                  "doc": "A message to send via notification."
                }
              ],
              "name": "ownershipParameters",
              "default": null,
              "doc": "Input parameters for ownership notification template. Only filled when templateType is OWNERSHIP_CHANGE."
            }
          ],
          "doc": "A message to send via notification."
        },
        "name": "message",
        "doc": "A message to send."
      },
      {
        "type": {
          "type": "array",
          "items": {
            "type": "record",
            "name": "NotificationRecipient",
            "namespace": "com.linkedin.pegasus2avro.event.notification",
            "fields": [
              {
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "CUSTOM": "A custom target, e.g. a slack channel or dm, that a specific sink can handle. Sinks are expected to handle custom\ntypes appropriately.",
                    "EMAIL": "A specific email address to send a notification to.",
                    "SLACK_CHANNEL": "A slack channel to send a notification to.",
                    "SLACK_DM": "A slack member to send a notification to.",
                    "USER": "Deprecated! A DataHub user (via urn.). Currently this is NOT USED and may be removed in future versions.\nRecipient type should correspond to the sink type, and the sink should understand how to handle the recipient type appropriately.\nInstead, typically notifications have specific recipients as Slack handles, slack channels, or email addresses."
                  },
                  "name": "NotificationRecipientType",
                  "namespace": "com.linkedin.pegasus2avro.event.notification",
                  "symbols": [
                    "EMAIL",
                    "SLACK_CHANNEL",
                    "SLACK_DM",
                    "CUSTOM",
                    "USER"
                  ],
                  "doc": "A type of target (recipient) channel for a notification. Typically a single recipient\nmaps to a single sink type. Each sink can support one or more recipient types.\n\nEach type of Notification Sink exposes the recipient types that they support sinking to. This\nis used by the notification manager to filter out recipients that are not supported by a given sink."
                },
                "name": "type",
                "doc": "The type of a notification recipient, e.g. the channel type."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "customType",
                "default": null,
                "doc": "A custom notification recipient type. Required if recipient type is CUSTOM."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "id",
                "default": null,
                "doc": "A unique channel / target id that the sink can pick up.\nFor slack sink, this will contain the channel or user id to send to.\nFor email sink, this will contain the email address to send to."
              },
              {
                "type": [
                  "null",
                  {
                    "type": "enum",
                    "symbolDocs": {
                      "ACTOR_NOTIFICATION": "The notification originated from an actor-oriented default notification.\nFor example, proposal task or ownership assignment notifications.",
                      "GLOBAL_NOTIFICATION": "The notification originated from a global change.",
                      "SUBSCRIPTION": "The notification originated from a subscription."
                    },
                    "name": "NotificationRecipientOriginType",
                    "namespace": "com.linkedin.pegasus2avro.event.notification",
                    "symbols": [
                      "SUBSCRIPTION",
                      "GLOBAL_NOTIFICATION",
                      "ACTOR_NOTIFICATION"
                    ]
                  }
                ],
                "name": "origin",
                "default": null,
                "doc": "The origin of the recipient notification, for tracking."
              },
              {
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "type": [
                  "null",
                  "string"
                ],
                "name": "actor",
                "default": null,
                "doc": "The URN of the actor associated with the recipient (personal or subscription related notifications)."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "displayName",
                "default": null,
                "doc": "An optional display name to use when addressing the recipient. Available only for subscription or personal notifications."
              }
            ],
            "doc": "The targeted recipient of a notification, either a specific User or a specific channel."
          }
        },
        "name": "recipients",
        "doc": "The target (receiver) of the notification, in DataHub Terms."
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "NotificationSink",
              "namespace": "com.linkedin.pegasus2avro.event.notification",
              "fields": [
                {
                  "type": "com.linkedin.pegasus2avro.event.notification.NotificationSinkType",
                  "name": "type",
                  "doc": "The type of the sink."
                }
              ],
              "doc": "Information about the sink of a notification, e.g. HOW the notification is sent."
            }
          }
        ],
        "name": "sinks",
        "default": null,
        "doc": "Optional: A specific sink / set of sinks to send to. If not specified, all enabled sinks\nwill be attemped and will be expected to handle the notification if they are able to send\nto a given recipient type."
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "NotificationContext",
            "namespace": "com.linkedin.pegasus2avro.event.notification",
            "fields": [
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "runId",
                "default": null,
                "doc": "The run-id that triggered the notification. If it was triggered by a manual action,\nthis may be set to the default \"no-run-id-provided\" value."
              }
            ],
            "doc": "Additional context about the notification."
          }
        ],
        "name": "context",
        "default": null,
        "doc": "Additional context about the notification."
      }
    ],
    "doc": "A request to send a notification."
  }
]