[
  "null",
  {
    "type": "record",
    "Aspect": {
      "name": "dataPlatformInfo"
    },
    "name": "DataPlatformInfo",
    "namespace": "com.linkedin.pegasus2avro.dataplatform",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": false,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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"
  },
  {
    "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": "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": "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": "KEYWORD"
                },
                "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": "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",
          {
            "type": "record",
            "name": "TimeWindowSize",
            "namespace": "com.linkedin.pegasus2avro.timeseries",
            "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": "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."
      },
      {
        "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": "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": {
          "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",
        "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": "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"
  },
  {
    "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",
                  {
                    "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",
                          "sanitizeRichText": true
                        },
                        "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,
                                    "searchTier": 2
                                  }
                                },
                                "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."
                                              }
                                            ],
                                            "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",
                                          "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": "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": "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": "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."
  },
  {
    "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": "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."
      },
      {
        "TimeseriesFieldCollection": {
          "key": "datasetName"
        },
        "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": {},
        "type": [
          "null",
          {
            "type": "enum",
            "symbolDocs": {
              "DATA_PLATFORM": "Rows were updated",
              "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"
          }
        ],
        "name": "sourceType",
        "default": null,
        "doc": "Source Type"
      },
      {
        "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."
  },
  "com.linkedin.pegasus2avro.common.GlossaryTerms",
  "com.linkedin.pegasus2avro.common.GlobalTags",
  {
    "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"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "documentation"
    },
    "name": "Documentation",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "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": "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": {
          "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",
        "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."
  },
  {
    "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": "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": "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)"
                                        }
                                      ],
                                      "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."
                      }
                    ],
                    "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."
              }
            ],
            "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"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "ownership"
    },
    "name": "Ownership",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "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,
                  "searchTier": 2
                },
                "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"
                },
                "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"
              },
              {
                "Searchable": {
                  "/actor": {
                    "fieldName": "ownerAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/source": {
                    "fieldName": "ownerAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/time": {
                    "fieldName": "ownerAttributionDates",
                    "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": "Ownership information"
          }
        },
        "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": "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": {
                    "addToFilters": true,
                    "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"
  },
  {
    "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": "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."
      },
      {
        "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."
      }
    ],
    "doc": "Carries information about where an entity originated from."
  },
  {
    "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."
  },
  {
    "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."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "semanticContent"
    },
    "name": "SemanticContent",
    "namespace": "com.linkedin.pegasus2avro.common",
    "fields": [
      {
        "type": {
          "type": "map",
          "values": {
            "type": "record",
            "name": "EmbeddingModelData",
            "namespace": "com.linkedin.pegasus2avro.common",
            "fields": [
              {
                "type": "string",
                "name": "modelVersion",
                "doc": "Full model identifier including provider.\nExamples: bedrock/cohere.embed-english-v3, openai/text-embedding-ada-002"
              },
              {
                "type": "long",
                "name": "generatedAt",
                "doc": "Timestamp when embeddings were generated (milliseconds since epoch)."
              },
              {
                "type": [
                  "null",
                  "string"
                ],
                "name": "chunkingStrategy",
                "default": null,
                "doc": "Description of the chunking strategy used.\nExamples: sentence_boundary_400t, fixed_512_chars, paragraph"
              },
              {
                "type": "int",
                "name": "totalChunks",
                "doc": "Total number of chunks."
              },
              {
                "type": [
                  "null",
                  "int"
                ],
                "name": "totalTokens",
                "default": null,
                "doc": "Estimated total token count across all chunks."
              },
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "EmbeddingChunk",
                    "namespace": "com.linkedin.pegasus2avro.common",
                    "fields": [
                      {
                        "type": "int",
                        "name": "position",
                        "doc": "Zero-based position/index of this chunk within the document."
                      },
                      {
                        "type": {
                          "type": "array",
                          "items": "float"
                        },
                        "name": "vector",
                        "doc": "The embedding vector for this chunk.\nDimensionality depends on the model (e.g., 1024 for Cohere v3)."
                      },
                      {
                        "type": [
                          "null",
                          "int"
                        ],
                        "name": "characterOffset",
                        "default": null,
                        "doc": "Character offset from start of source text.\nUsed for highlighting and navigation. Optional for privacy."
                      },
                      {
                        "type": [
                          "null",
                          "int"
                        ],
                        "name": "characterLength",
                        "default": null,
                        "doc": "Character length of the chunk in source text.\nOptional for privacy-sensitive use cases."
                      },
                      {
                        "type": [
                          "null",
                          "int"
                        ],
                        "name": "tokenCount",
                        "default": null,
                        "doc": "Estimated token count for this chunk."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "text",
                        "default": null,
                        "doc": "Original text of this chunk.\nOPTIONAL: May be omitted for privacy-sensitive data sources\nwhere only embeddings should be stored, not source text."
                      }
                    ],
                    "doc": "A single chunk of text with its embedding vector.\n\nChunks enable semantic search over long documents by breaking them\ninto smaller, semantically coherent pieces that fit within model\ncontext windows."
                  }
                },
                "name": "chunks",
                "doc": "Individual chunks with their embedding vectors."
              }
            ],
            "doc": "Embedding data for a specific model.\nContains metadata about the embedding generation and the chunked vectors."
          }
        },
        "name": "embeddings",
        "doc": "Map of embedding model name to embedding data.\nKey is the model identifier (e.g., cohere_embed_v3, openai_ada_002).\nAllows storing embeddings from multiple models simultaneously."
      }
    ],
    "doc": "Semantic content for enabling vector similarity search.\n\nThis aspect stores chunked text and embedding vectors for any entity that supports semantic search. Generation of the data for this aspect should be built in tight collaboration with the embedding generator during semantic search query processing. Chunk determination and generation can happen somewhat independently\nThe data in this aspect is directly passed along to the semantic search index.\n\nDesign notes:\n- Supports multiple embedding models (e.g., different providers or versions)\n- Supports chunked content for long documents\n- Text field is optional to support privacy-sensitive use cases where\n  only embeddings (not source text) are shared with DataHub"
  },
  {
    "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": "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": "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)."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "documentSettings"
    },
    "name": "DocumentSettings",
    "namespace": "com.linkedin.pegasus2avro.knowledge",
    "fields": [
      {
        "Searchable": {
          "fieldType": "BOOLEAN",
          "queryByDefault": false
        },
        "type": "boolean",
        "name": "showInGlobalContext",
        "default": true,
        "doc": "Whether or not this document should be visible in the global context (e.g., global navigation, knowledge base search).\nWhen false, the document is \"private\" and accessible primarily through the assets it is related to.\nWhen true, the document appears in the global documents space accessible to all users."
      },
      {
        "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 document entity"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "documentInfo"
    },
    "name": "DocumentInfo",
    "namespace": "com.linkedin.pegasus2avro.knowledge",
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "Optional title for the document. "
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "DocumentSource",
            "namespace": "com.linkedin.pegasus2avro.knowledge",
            "fields": [
              {
                "Searchable": {
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": {
                  "type": "enum",
                  "symbolDocs": {
                    "EXTERNAL": "External - The document was ingested from an external source. ",
                    "NATIVE": "Created via the DataHub UI or API"
                  },
                  "name": "DocumentSourceType",
                  "namespace": "com.linkedin.pegasus2avro.knowledge",
                  "symbols": [
                    "NATIVE",
                    "EXTERNAL"
                  ]
                },
                "name": "sourceType",
                "doc": "The type of the source (e.g., \"Confluence\", \"Notion\", \"Google Docs\", \"SharePoint\", \"Slack\")"
              },
              {
                "Searchable": {
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": [
                  "null",
                  "string"
                ],
                "name": "externalUrl",
                "default": null,
                "doc": "URL to the external source where this document originated"
              },
              {
                "Searchable": {
                  "fieldType": "KEYWORD",
                  "queryByDefault": false
                },
                "type": [
                  "null",
                  "string"
                ],
                "name": "externalId",
                "default": null,
                "doc": "Unique identifier in the external system. Searchable in case we need to find ingested docs via filtering."
              }
            ],
            "doc": "Information about the source of a document, especially for externally sourced documents.\nThis record is embedded within DocumentInfo to track whether a document is first-party \n(created in DataHub) or third-party (ingested from external sources like Slack, Notion, etc.)"
          }
        ],
        "name": "source",
        "default": null,
        "doc": "Information about the external source of this document. \nOnly populated for third-party documents ingested from external systems."
      },
      {
        "type": {
          "type": "record",
          "name": "DocumentStatus",
          "namespace": "com.linkedin.pegasus2avro.knowledge",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD",
                "queryByDefault": false
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "PUBLISHED": "Document is published and visible to others.",
                  "UNPUBLISHED": "Document is not published to be consumed by others."
                },
                "name": "DocumentState",
                "namespace": "com.linkedin.pegasus2avro.knowledge",
                "symbols": [
                  "PUBLISHED",
                  "UNPUBLISHED"
                ],
                "doc": "The state of a document"
              },
              "name": "state",
              "doc": "The current visibility state of the document"
            }
          ],
          "doc": "Visibility status information for a document"
        },
        "name": "status",
        "doc": "Status of the document (published, unpublished.)"
      },
      {
        "type": {
          "type": "record",
          "name": "DocumentContents",
          "namespace": "com.linkedin.pegasus2avro.knowledge",
          "fields": [
            {
              "Searchable": {
                "fieldType": "TEXT"
              },
              "type": "string",
              "name": "text",
              "doc": "The text contents of the document.\nThis needs to be added to semantic search! "
            }
          ],
          "doc": "The contents of a document"
        },
        "name": "contents",
        "doc": "Content of the document"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "creator",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "The time and actor who created the document"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "lastModifiedBy",
            "fieldType": "URN",
            "queryByDefault": false
          },
          "/time": {
            "addToFilters": false,
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME",
            "queryByDefault": false
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "lastModified",
        "doc": "The time and actor who last modified the document (any field)"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "RelatedAsset",
              "namespace": "com.linkedin.pegasus2avro.knowledge",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "container",
                      "dataset",
                      "dataJob",
                      "dataFlow",
                      "dashboard",
                      "chart",
                      "application",
                      "mlModel",
                      "mlModelGroup",
                      "mlPrimaryKey",
                      "mlFeature",
                      "mlFeatureTable",
                      "dataProduct",
                      "domain",
                      "glossaryTerm",
                      "glossaryNode",
                      "tag",
                      "structuredProperty",
                      "mlModel",
                      "mlModelGroup",
                      "mlPrimaryKey",
                      "mlFeature",
                      "mlFeatureTable"
                    ],
                    "name": "RelatedAsset"
                  },
                  "Searchable": {
                    "fieldName": "relatedAssets",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "container",
                    "dataset",
                    "dataJob",
                    "dataFlow",
                    "dashboard",
                    "chart",
                    "application",
                    "mlModel",
                    "mlModelGroup",
                    "mlPrimaryKey",
                    "mlFeature",
                    "mlFeatureTable",
                    "dataProduct",
                    "domain",
                    "glossaryTerm",
                    "glossaryNode",
                    "tag",
                    "structuredProperty",
                    "mlModel",
                    "mlModelGroup",
                    "mlPrimaryKey",
                    "mlFeature",
                    "mlFeatureTable"
                  ],
                  "type": "string",
                  "name": "asset",
                  "doc": "The asset referenced by or related to the document. "
                }
              ],
              "doc": "A data asset referenced by a document."
            }
          }
        ],
        "name": "relatedAssets",
        "default": null,
        "doc": "Assets referenced by or related to this document. "
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "RelatedDocument",
              "namespace": "com.linkedin.pegasus2avro.knowledge",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "document"
                    ],
                    "name": "RelatedDocument"
                  },
                  "Searchable": {
                    "fieldName": "relatedDocuments",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "document"
                  ],
                  "type": "string",
                  "name": "document",
                  "doc": "The document referenced by or related to the document. "
                }
              ],
              "doc": "An document referenced by or related to another document\nNote that this does NOT include child documents. "
            }
          }
        ],
        "name": "relatedDocuments",
        "default": null,
        "doc": "Documents referenced by or related to this document. "
      },
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "ParentDocument",
            "namespace": "com.linkedin.pegasus2avro.knowledge",
            "fields": [
              {
                "Relationship": {
                  "entityTypes": [
                    "document"
                  ],
                  "name": "IsChildOf"
                },
                "Searchable": {
                  "fieldName": "parentDocument",
                  "fieldType": "URN",
                  "queryByDefault": false
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "document"
                ],
                "type": "string",
                "name": "document",
                "doc": "The hierarchical parent document for this document. "
              }
            ],
            "doc": "The parent document of the document. "
          }
        ],
        "name": "parentDocument",
        "default": null,
        "doc": "Parent article for this asset. "
      }
    ],
    "doc": "Information about a document"
  },
  {
    "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",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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"
          },
          "/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"
          },
          "/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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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": "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": "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": "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": [
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "searchLabel": "qualifiedName",
          "searchTier": 1
        },
        "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": "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": "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": "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"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "rowCount",
        "default": null,
        "doc": "The total number of rows"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasColumnCount"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "columnCount",
        "default": null,
        "doc": "The total number of columns (or schema fields)"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "DatasetFieldProfile",
              "namespace": "com.linkedin.pegasus2avro.dataset",
              "fields": [
                {
                  "type": "string",
                  "name": "fieldPath"
                },
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "uniqueCount",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "float"
                  ],
                  "name": "uniqueProportion",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "long"
                  ],
                  "name": "nullCount",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "float"
                  ],
                  "name": "nullProportion",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "min",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "max",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "mean",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "median",
                  "default": null
                },
                {
                  "type": [
                    "null",
                    "string"
                  ],
                  "name": "stdev",
                  "default": null
                },
                {
                  "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
                },
                {
                  "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
                },
                {
                  "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
                },
                {
                  "type": [
                    "null",
                    {
                      "type": "array",
                      "items": "string"
                    }
                  ],
                  "name": "sampleValues",
                  "default": null
                }
              ],
              "doc": "Stats corresponding to fields in a dataset"
            }
          }
        ],
        "name": "fieldProfiles",
        "default": null,
        "doc": "Profiles for each column (or schema field)"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasSizeInBytes"
        },
        "type": [
          "null",
          "long"
        ],
        "name": "sizeInBytes",
        "default": null,
        "doc": "Storage size in bytes"
      }
    ],
    "doc": "Stats corresponding to datasets"
  },
  {
    "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"
  },
  {
    "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": {
              "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": " List of fine-grained lineage information, including field-level lineage"
      }
    ],
    "doc": "Upstream lineage of 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",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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": "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": "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"
  },
  {
    "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."
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasUniqueUserCount"
        },
        "TimeseriesField": {},
        "type": [
          "null",
          "int"
        ],
        "name": "uniqueUserCount",
        "default": null,
        "doc": "Unique user count"
      },
      {
        "Searchable": {
          "fieldType": "COUNT",
          "hasValuesFieldName": "hasTotalSqlQueriesCount"
        },
        "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."
  },
  {
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Dataset"
      },
      {
        "Searchable": {
          "addToFilters": false,
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "searchLabel": "qualifiedName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "qualifiedName",
        "default": null,
        "doc": "Fully-qualified name of the Dataset"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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",
            "searchLabel": "createdAt"
          }
        },
        "type": [
          "null",
          {
            "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",
        "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",
            "searchLabel": "lastModifiedAt"
          }
        },
        "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the Asset Container"
      },
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "searchLabel": "qualifiedName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "qualifiedName",
        "default": null,
        "doc": "Fully-qualified name of the Container"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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",
          {
            "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",
        "default": null,
        "doc": "Environment for this flow"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME",
            "searchLabel": "createdAt"
          }
        },
        "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",
            "searchLabel": "lastModifiedAt"
          }
        },
        "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": {
      "name": "editableContainerProperties"
    },
    "name": "EditableContainerProperties",
    "namespace": "com.linkedin.pegasus2avro.container",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "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": "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"
  },
  {
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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"
  },
  {
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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"
  },
  {
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Data Product"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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",
        "assetSettings"
      ]
    },
    "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "title",
        "doc": "Title of the dashboard"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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",
            "searchLabel": "lastModifiedAt"
          }
        },
        "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",
          "searchTier": 4
        },
        "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",
          "searchTier": 4
        },
        "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"
      },
      {
        "type": [
          "null",
          "long"
        ],
        "name": "lastRefreshed",
        "default": null,
        "doc": "The time when this dashboard last refreshed"
      }
    ],
    "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",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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": "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": "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"
      }
    ]
  },
  {
    "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",
                              "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",
                              "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"
  },
  {
    "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"
      ]
    },
    "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": "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": "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": "erModelRelationshipKey",
      "keyForEntity": "erModelRelationship",
      "entityCategory": "_unset_",
      "entityAspects": [
        "erModelRelationshipProperties",
        "editableERModelRelationshipProperties",
        "institutionalMemory",
        "ownership",
        "status",
        "globalTags",
        "glossaryTerms"
      ],
      "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": "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": "dataHubActionKey",
      "keyForEntity": "dataHubAction",
      "entityCategory": "internal",
      "entityAspects": []
    },
    "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": "tagKey",
      "keyForEntity": "tag",
      "entityCategory": "core",
      "entityAspects": [
        "tagProperties",
        "ownership",
        "deprecation",
        "status",
        "testResults"
      ]
    },
    "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": "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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": "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"
      ],
      "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": "corpGroupKey",
      "keyForEntity": "corpGroup",
      "entityCategory": "_unset_",
      "entityAspects": [
        "corpGroupInfo",
        "corpGroupEditableInfo",
        "globalTags",
        "ownership",
        "status",
        "origin",
        "roleMembership",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes"
      ],
      "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": "incidentKey",
      "keyForEntity": "incident",
      "entityCategory": "core",
      "entityAspects": [
        "incidentInfo",
        "globalTags"
      ],
      "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": "queryKey",
      "keyForEntity": "query",
      "entityCategory": "core",
      "entityAspects": [
        "queryProperties",
        "querySubjects",
        "queryUsageStatistics",
        "status",
        "dataPlatformInstance",
        "subTypes"
      ]
    },
    "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": "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": "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": "mlFeatureKey",
      "keyForEntity": "mlFeature",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlFeatureProperties",
        "domains",
        "applications",
        "mlFeatureProperties",
        "ownership",
        "institutionalMemory",
        "status",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes"
      ]
    },
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the feature"
      }
    ],
    "doc": "Key for an MLFeature"
  },
  {
    "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": "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": "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": "testKey",
      "keyForEntity": "test",
      "entityCategory": "core",
      "entityAspects": [
        "testInfo"
      ],
      "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": "domainKey",
      "keyForEntity": "domain",
      "entityCategory": "core",
      "entityAspects": [
        "domainProperties",
        "institutionalMemory",
        "ownership",
        "structuredProperties",
        "forms",
        "testResults",
        "displayProperties",
        "assetSettings"
      ],
      "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": "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": "mlPrimaryKeyKey",
      "keyForEntity": "mlPrimaryKey",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlPrimaryKeyProperties",
        "domains",
        "applications",
        "mlPrimaryKeyProperties",
        "ownership",
        "institutionalMemory",
        "status",
        "deprecation",
        "globalTags",
        "dataPlatformInstance",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes"
      ]
    },
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the primary key"
      }
    ],
    "doc": "Key for an MLPrimaryKey"
  },
  {
    "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",
        "assetSettings"
      ],
      "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,
          "searchLabel": "origin"
        },
        "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": "postKey",
      "keyForEntity": "post",
      "entityCategory": "core",
      "entityAspects": [
        "postInfo",
        "subTypes"
      ]
    },
    "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": "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"
      ]
    },
    "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": "dataProcessInstanceKey",
      "keyForEntity": "dataProcessInstance",
      "entityCategory": "_unset_",
      "entityAspects": [
        "dataProcessInstanceInput",
        "dataProcessInstanceOutput",
        "dataProcessInstanceProperties",
        "dataProcessInstanceRelationships",
        "dataProcessInstanceRunEvent",
        "status",
        "testResults",
        "dataPlatformInstance",
        "subTypes",
        "container",
        "mlTrainingRunProperties"
      ],
      "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": "documentKey",
      "keyForEntity": "document",
      "entityCategory": "core",
      "entityAspects": [
        "documentInfo",
        "documentSettings",
        "status",
        "ownership",
        "domains",
        "structuredProperties",
        "subTypes",
        "dataPlatformInstance",
        "browsePathsV2",
        "globalTags",
        "glossaryTerms",
        "semanticContent",
        "institutionalMemory",
        "documentation"
      ]
    },
    "name": "DocumentKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "Searchable": {},
        "type": "string",
        "name": "id",
        "doc": "Unique identifier for the document."
      }
    ],
    "doc": "Key for a Document"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "glossaryNodeKey",
      "keyForEntity": "glossaryNode",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryNodeInfo",
        "institutionalMemory",
        "ownership",
        "status",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "displayProperties",
        "assetSettings"
      ]
    },
    "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": "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": "dataHubFileKey",
      "keyForEntity": "dataHubFile",
      "entityCategory": "core",
      "entityAspects": [
        "dataHubFileInfo",
        "status"
      ]
    },
    "name": "DataHubFileKey",
    "namespace": "com.linkedin.pegasus2avro.metadata.key",
    "fields": [
      {
        "type": "string",
        "name": "id",
        "doc": "Unique id for the file."
      }
    ],
    "doc": "Key for a DataHubFile"
  },
  {
    "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"
      ],
      "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": "schemaFieldKey",
      "keyForEntity": "schemaField",
      "entityCategory": "core",
      "entityAspects": [
        "schemafieldInfo",
        "structuredProperties",
        "forms",
        "businessAttributes",
        "status",
        "schemaFieldAliases",
        "documentation",
        "testResults",
        "deprecation",
        "subTypes",
        "logicalParent",
        "globalTags",
        "glossaryTerms"
      ]
    },
    "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": "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": "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": "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": "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": "glossaryTermKey",
      "keyForEntity": "glossaryTerm",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTermInfo",
        "glossaryRelatedTerms",
        "institutionalMemory",
        "schemaMetadata",
        "ownership",
        "deprecation",
        "domains",
        "applications",
        "status",
        "browsePaths",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "assetSettings"
      ]
    },
    "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": "assertionKey",
      "keyForEntity": "assertion",
      "entityCategory": "core",
      "entityAspects": [
        "assertionInfo",
        "dataPlatformInstance",
        "assertionRunEvent",
        "assertionActions",
        "status",
        "globalTags"
      ],
      "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": "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": "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": "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": "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": "formKey",
      "keyForEntity": "form",
      "entityCategory": "core",
      "entityAspects": [
        "formInfo",
        "dynamicFormAssignment",
        "ownership"
      ]
    },
    "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": "mlFeatureTableKey",
      "keyForEntity": "mlFeatureTable",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlFeatureTableProperties",
        "domains",
        "applications",
        "mlFeatureTableProperties",
        "ownership",
        "institutionalMemory",
        "status",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes"
      ]
    },
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Name of the feature table"
      }
    ],
    "doc": "Key for an MLFeatureTable"
  },
  {
    "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"
      ]
    },
    "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": "mlModelGroupKey",
      "keyForEntity": "mlModelGroup",
      "entityCategory": "core",
      "entityAspects": [
        "glossaryTerms",
        "editableMlModelGroupProperties",
        "domains",
        "applications",
        "mlModelGroupProperties",
        "ownership",
        "status",
        "deprecation",
        "browsePaths",
        "globalTags",
        "dataPlatformInstance",
        "browsePathsV2",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "container",
        "institutionalMemory"
      ]
    },
    "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,
          "fieldName": "id",
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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": "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"
      ]
    },
    "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,
          "fieldName": "id",
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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": "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": "corpUserKey",
      "keyForEntity": "corpuser",
      "entityCategory": "_unset_",
      "entityAspects": [
        "corpUserInfo",
        "corpUserEditableInfo",
        "corpUserStatus",
        "groupMembership",
        "globalTags",
        "status",
        "corpUserCredentials",
        "nativeGroupMembership",
        "corpUserSettings",
        "origin",
        "roleMembership",
        "structuredProperties",
        "forms",
        "testResults",
        "subTypes",
        "slackUserInfo"
      ],
      "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": "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": "dataHubConnectionKey",
      "keyForEntity": "dataHubConnection",
      "entityCategory": "internal",
      "entityAspects": [
        "dataHubConnectionDetails",
        "dataPlatformInstance"
      ]
    },
    "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": "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"
      ]
    },
    "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": "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": "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": "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": [
          "null",
          "com.linkedin.pegasus2avro.common.Edge"
        ],
        "name": "parent",
        "default": null
      }
    ],
    "doc": "Relates a physical asset to a logical model."
  },
  {
    "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 to route the request to. If none is provided, a \"default\" 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 to route the request to. If none is provided, a \"default\" 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"
            }
          ]
        },
        "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."
      }
    ],
    "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"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "report",
        "default": null,
        "doc": "The pretty-printed execution report."
      },
      {
        "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 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": "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": "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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"
                  }
                },
                "UrnValidation": {
                  "entityTypes": [
                    "schemaField"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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": {},
                "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset",
                    "dataJob"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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": {
                  "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": "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": "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."
                    }
                  ],
                  "doc": "Attributes defining a single Freshness schedule."
                },
                "name": "schedule",
                "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": {},
                "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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": {},
                "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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": {},
                "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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 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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset",
                    "dataJob"
                  ],
                  "exist": false,
                  "strict": true
                },
                "java": {
                  "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                },
                "Urn": "Urn",
                "entityTypes": [
                  "dataset",
                  "dataJob"
                ],
                "type": "string",
                "name": "entity",
                "doc": "The entity targeted by the assertion"
              },
              {
                "type": {
                  "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": "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."
                    },
                    {
                      "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": "com.linkedin.pegasus2avro.schema.SchemaField"
                      },
                      "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"
                },
                "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"
                },
                "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "dataset"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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"
                },
                "UrnValidation": {
                  "entityTypes": [
                    "schemaField"
                  ],
                  "exist": false,
                  "strict": true
                },
                "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",
          "sanitizeRichText": true
        },
        "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"
  },
  {
    "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 milli seconds."
      },
      {
        "type": "string",
        "name": "runId",
        "doc": " Native (platform-specific) identifier for this run"
      },
      {
        "TimeseriesField": {},
        "UrnValidation": {
          "entityTypes": [
            "dataset"
          ],
          "exist": false,
          "strict": true
        },
        "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": [
              {
                "Searchable": {},
                "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"
              }
            ],
            "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": {},
        "UrnValidation": {
          "entityTypes": [
            "assertion"
          ],
          "exist": false,
          "strict": true
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "assertionUrn"
      },
      {
        "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.\nAssertionRunEvent should be used for reporting the status of a run as an assertion evaluation progresses."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "tagProperties"
    },
    "name": "TagProperties",
    "namespace": "com.linkedin.pegasus2avro.tag",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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"
  },
  {
    "type": "record",
    "Event": {
      "name": "relationshipChangeEvent"
    },
    "name": "RelationshipChangeEvent",
    "namespace": "com.linkedin.pegasus2avro.platform.event.v1",
    "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 containing metadata about the message itself.\nIncludes information like message ID, timestamp, and server details."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "sourceUrn",
        "doc": "The URN (Uniform Resource Name) of the source entity in the relationship.\nIn a downstream relationship example, this would be the URN of the upstream dataset."
      },
      {
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "type": "string",
        "name": "destinationUrn",
        "doc": "The URN of the destination entity in the relationship.\nIn a downstream relationship example, this would be the URN of the downstream dataset."
      },
      {
        "type": {
          "type": "enum",
          "name": "RelationshipChangeOperation",
          "namespace": "com.linkedin.pegasus2avro.platform.event.v1",
          "symbols": [
            "ADD",
            "REMOVE",
            "RESTATE"
          ]
        },
        "name": "operation",
        "doc": "The operation being performed on this relationship.\nTypically includes operations like ADD, REMOVE, or RESTATE."
      },
      {
        "type": "string",
        "name": "relationshipType",
        "doc": "The type/category of relationship being established or modified.\nExamples: \"DownstreamOf\", \"Contains\", \"OwnedBy\", \"DerivedFrom\", etc."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "lifecycleOwner",
        "default": null,
        "doc": "The system or service responsible for managing the lifecycle of this relationship.\nThis helps identify which component has authority over the relationship."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "via",
        "default": null,
        "doc": "Information about how or through what means this relationship was established.\nCould indicate a specific pipeline, process, or tool that discovered/created the relationship."
      },
      {
        "type": [
          "null",
          {
            "type": "map",
            "values": "string"
          }
        ],
        "name": "properties",
        "default": null,
        "doc": "Additional custom properties associated with this relationship.\nAllows for flexible extension without changing the schema."
      },
      {
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "auditStamp",
        "doc": "Stores information about who made this change and when.\nContains the actor (user or system) that performed the action and the timestamp."
      }
    ],
    "doc": "Kafka event for proposing a relationship change between two entities.\nFor example, when dataset1 establishes a new downstream relationship with dataset2."
  },
  {
    "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": "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",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "title",
        "doc": "Title of the Notebook"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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": "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": "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": [
          "null",
          {
            "type": "record",
            "name": "DataHubPageTemplateAssetSummary",
            "namespace": "com.linkedin.pegasus2avro.template",
            "fields": [
              {
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "SummaryElement",
                      "namespace": "com.linkedin.pegasus2avro.template",
                      "fields": [
                        {
                          "type": {
                            "type": "enum",
                            "name": "SummaryElementType",
                            "namespace": "com.linkedin.pegasus2avro.template",
                            "symbols": [
                              "CREATED",
                              "TAGS",
                              "GLOSSARY_TERMS",
                              "OWNERS",
                              "DOMAIN",
                              "STRUCTURED_PROPERTY"
                            ]
                          },
                          "name": "elementType",
                          "doc": "The type of element/property"
                        },
                        {
                          "Relationship": {
                            "entityTypes": [
                              "structuredProperty"
                            ],
                            "name": "ContainsStructuredProperty"
                          },
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "entityTypes": [
                            "structuredProperty"
                          ],
                          "type": [
                            "null",
                            "string"
                          ],
                          "name": "structuredPropertyUrn",
                          "default": null,
                          "doc": "The urn of the structured property shown. Required if propertyType is STRUCTURED_PROPERTY"
                        }
                      ],
                      "doc": "Info for a given asset summary element"
                    }
                  }
                ],
                "name": "summaryElements",
                "default": null,
                "doc": "The optional list of properties shown on an asset summary page header."
              }
            ],
            "doc": "The page template info for asset summaries"
          }
        ],
        "name": "assetSummary",
        "default": null,
        "doc": "The optional info for asset summaries. Should be populated if surfaceType is ASSET_SUMMARY"
      },
      {
        "type": {
          "type": "record",
          "name": "DataHubPageTemplateSurface",
          "namespace": "com.linkedin.pegasus2avro.template",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": {
                "type": "enum",
                "symbolDocs": {
                  "ASSET_SUMMARY": "This template applies to what to display on asset summary pages",
                  "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",
                  "ASSET_SUMMARY"
                ]
              },
              "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": "dataHubFileInfo"
    },
    "name": "DataHubFileInfo",
    "namespace": "com.linkedin.pegasus2avro.file",
    "fields": [
      {
        "type": {
          "type": "record",
          "name": "BucketStorageLocation",
          "namespace": "com.linkedin.pegasus2avro.file",
          "fields": [
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": "string",
              "name": "storageBucket",
              "doc": "The storage bucket this file is stored in"
            },
            {
              "Searchable": {
                "fieldType": "KEYWORD"
              },
              "type": "string",
              "name": "storageKey",
              "doc": "The key for where this file is stored inside of the given bucket"
            }
          ],
          "doc": "Information where a file is stored"
        },
        "name": "bucketStorageLocation",
        "doc": "Info about where a file is stored"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "originalFileName",
        "doc": "The original filename as uploaded by the user"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "mimeType",
        "doc": "MIME type of the file (e.g., image/png, application/pdf)"
      },
      {
        "type": "long",
        "name": "sizeInBytes",
        "doc": "Size of the file in bytes"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": {
          "type": "enum",
          "symbolDocs": {
            "ASSET_DOCUMENTATION": "File uploaded for entity documentation",
            "ASSET_DOCUMENTATION_LINKS": "Upload for asset documentation links."
          },
          "name": "FileUploadScenario",
          "namespace": "com.linkedin.pegasus2avro.file",
          "symbols": [
            "ASSET_DOCUMENTATION",
            "ASSET_DOCUMENTATION_LINKS"
          ]
        },
        "name": "scenario",
        "doc": "The scenario/context in which this file was uploaded"
      },
      {
        "Relationship": {
          "entityTypes": [
            "dataset",
            "chart",
            "container",
            "dashboard",
            "dataFlow",
            "dataJob",
            "glossaryTerm",
            "glossaryNode",
            "mlModel",
            "mlFeature",
            "notebook",
            "mlFeatureTable",
            "mlPrimaryKey",
            "mlModelGroup",
            "domain",
            "dataProduct",
            "businessAttribute",
            "document"
          ],
          "name": "ReferencedBy"
        },
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "dataset",
          "chart",
          "container",
          "dashboard",
          "dataFlow",
          "dataJob",
          "glossaryTerm",
          "glossaryNode",
          "mlModel",
          "mlFeature",
          "notebook",
          "mlFeatureTable",
          "mlPrimaryKey",
          "mlModelGroup",
          "domain",
          "dataProduct",
          "businessAttribute",
          "document"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "referencedByAsset",
        "default": null,
        "doc": "Optional URN of the entity this file is associated with (e.g., the dataset whose docs contain this file)"
      },
      {
        "Relationship": {
          "entityTypes": [
            "schemaField"
          ],
          "name": "ReferencedBy"
        },
        "Searchable": {
          "fieldType": "URN"
        },
        "java": {
          "class": "com.linkedin.pegasus2avro.common.urn.Urn"
        },
        "Urn": "Urn",
        "entityTypes": [
          "schemaField"
        ],
        "type": [
          "null",
          "string"
        ],
        "name": "schemaField",
        "default": null,
        "doc": "The dataset schema field urn this file is referenced by"
      },
      {
        "Searchable": {
          "/actor": {
            "fieldName": "createdBy",
            "fieldType": "URN"
          },
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.AuditStamp",
        "name": "created",
        "doc": "Timestamp when this file was created and by whom"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": [
          "null",
          "string"
        ],
        "name": "contentHash",
        "default": null,
        "doc": "SHA-256 hash of file contents"
      }
    ],
    "doc": "Information about a DataHub file - a file stored in S3 for use within DataHub platform features like documentation, home pages, and announcements."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "roleProperties"
    },
    "name": "RoleProperties",
    "namespace": "com.linkedin.pegasus2avro.role",
    "fields": [
      {
        "Searchable": {
          "boostScore": 10.0,
          "enableAutocomplete": true,
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "WORD_GRAM",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "type": "record",
              "name": "RoleGroup",
              "namespace": "com.linkedin.pegasus2avro.role",
              "fields": [
                {
                  "Relationship": {
                    "entityTypes": [
                      "corpGroup"
                    ],
                    "name": "Has"
                  },
                  "java": {
                    "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                  },
                  "Urn": "Urn",
                  "entityTypes": [
                    "corpGroup"
                  ],
                  "type": "string",
                  "name": "group",
                  "doc": "Link provisioned corp group for a role"
                }
              ],
              "doc": "Provisioned groups of a role"
            }
          }
        ],
        "name": "groups",
        "default": null,
        "doc": "List of provisioned groups of a role"
      }
    ],
    "doc": "Provisioned users and groups of a role"
  },
  {
    "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": "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."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesSchemaAssertion"
          }
        },
        "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."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesFreshnessAssertion"
          }
        },
        "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."
      },
      {
        "Relationship": {
          "/*/assertion": {
            "entityTypes": [
              "assertion"
            ],
            "name": "IncludesDataQualityAssertion"
          }
        },
        "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."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "rawContract",
        "default": null,
        "doc": "YAML-formatted contract definition"
      }
    ],
    "doc": "Information about a data contract"
  },
  {
    "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": "propertyDefinition"
    },
    "name": "StructuredPropertyDefinition",
    "namespace": "com.linkedin.pegasus2avro.structured",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "searchLabel": "qualifiedName",
          "searchTier": 1
        },
        "type": "string",
        "name": "qualifiedName",
        "doc": "The fully qualified name of the property. e.g. io.acryl.datahub.myProperty"
      },
      {
        "Searchable": {
          "enableAutocomplete": true,
          "fieldType": "WORD_GRAM",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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",
            "searchLabel": "createdAt"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "created",
        "default": null,
        "doc": "Created Audit stamp"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "lastModified",
            "fieldType": "DATETIME",
            "searchLabel": "lastModifiedAt"
          }
        },
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.AuditStamp"
        ],
        "name": "lastModified",
        "default": null,
        "doc": "Last Modified Audit stamp"
      }
    ]
  },
  {
    "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"
              },
              {
                "Searchable": {
                  "/actor": {
                    "fieldName": "structuredPropertyAttributionActors",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/source": {
                    "fieldName": "structuredPropertyAttributionSources",
                    "fieldType": "URN",
                    "queryByDefault": false
                  },
                  "/time": {
                    "fieldName": "structuredPropertyAttributionDates",
                    "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"
              }
            ]
          }
        },
        "name": "properties",
        "doc": "Custom property bag."
      }
    ],
    "doc": "Properties about an entity governed by StructuredPropertyDefinition"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "structuredPropertyKey",
      "keyForEntity": "structuredProperty",
      "entityCategory": "core",
      "entityAspects": [
        "propertyDefinition",
        "structuredPropertySettings",
        "institutionalMemory",
        "status"
      ],
      "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": "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": "hideInAssetSummaryWhenEmpty",
        "default": false,
        "doc": "Whether or not this asset should be hidden in the asset sidebar (showInAssetSummary should be enabled)\nwhen its value is empty"
      },
      {
        "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "title",
        "doc": "Title of the chart"
      },
      {
        "Searchable": {
          "searchTier": 2
        },
        "type": "string",
        "name": "description",
        "doc": "Detailed description about the chart"
      },
      {
        "Searchable": {
          "/lastModified/time": {
            "fieldName": "lastModifiedAt",
            "fieldType": "DATETIME"
          }
        },
        "type": "com.linkedin.pegasus2avro.common.ChangeAuditStamps",
        "name": "lastModified",
        "doc": "Captures information about who created/last modified/deleted this chart and when"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "searchTier": 4
        },
        "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",
              "chart"
            ],
            "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",
          "searchTier": 3
        },
        "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",
          "searchTier": 4
        },
        "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": "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",
          "sanitizeRichText": true
        },
        "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": "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": "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."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataTypeInfo"
    },
    "name": "DataTypeInfo",
    "namespace": "com.linkedin.pegasus2avro.datatype",
    "fields": [
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "searchLabel": "qualifiedName",
          "searchTier": 1
        },
        "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": "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": "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 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",
    "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": "schemafieldInfo"
    },
    "name": "SchemaFieldInfo",
    "namespace": "com.linkedin.pegasus2avro.schemafield",
    "fields": [
      {
        "Searchable": {
          "fieldNameAliases": [
            "_entityName"
          ],
          "fieldType": "KEYWORD",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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": "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": "com.linkedin.pegasus2avro.dataset.FineGrainedLineage"
          }
        ],
        "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": "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": "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",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Flow name"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Flow description"
      },
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL",
          "queryByDefault": false,
          "searchTier": 3
        },
        "type": [
          "null",
          "string"
        ],
        "name": "project",
        "default": null,
        "doc": "Optional project/namespace associated with the flow"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdAt",
            "fieldType": "DATETIME",
            "searchLabel": "createdAt"
          }
        },
        "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",
            "searchLabel": "lastModifiedAt"
          }
        },
        "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": "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",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Job name"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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",
            "searchLabel": "createdAt"
          }
        },
        "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",
            "searchLabel": "lastModifiedAt"
          }
        },
        "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": "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Application"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the application"
      }
    ],
    "doc": "The main properties of an Application"
  },
  {
    "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": "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": "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": "string",
        "name": "name",
        "doc": "Display name of the Domain"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "searchTier": 2
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Description of the Domain"
      },
      {
        "Searchable": {
          "/time": {
            "fieldName": "createdTime",
            "fieldType": "DATETIME",
            "searchLabel": "createdAt"
          }
        },
        "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": "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": "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": "testInfo"
    },
    "name": "TestInfo",
    "namespace": "com.linkedin.pegasus2avro.test",
    "fields": [
      {
        "Searchable": {
          "fieldType": "TEXT_PARTIAL"
        },
        "type": "string",
        "name": "name",
        "doc": "The name of the test"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD"
        },
        "type": "string",
        "name": "category",
        "doc": "Category of the test"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "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"
            }
          ]
        },
        "name": "definition",
        "doc": "Configuration for the Test"
      }
    ],
    "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
          }
        },
        "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
          }
        },
        "type": {
          "type": "array",
          "items": "com.linkedin.pegasus2avro.test.TestResult"
        },
        "name": "passing",
        "doc": "Results that are passing"
      }
    ],
    "doc": "Information about a Test Result"
  },
  {
    "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": "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": "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": {
            "ASSETS": "Module displaying the assets of parent entity",
            "ASSET_COLLECTION": "A module with a collection of assets",
            "CHILD_HIERARCHY": "Module displaying the hierarchy of the children of a given entity. Glossary or Domains.",
            "COLUMNS": "Module displaying the columns of a dataset",
            "DATA_PRODUCTS": "Module displaying child data products of a given domain",
            "DOMAINS": "Module displaying the top domains",
            "HIERARCHY": "A module displaying a hierarchy to navigate",
            "LINEAGE": "Module displaying the lineage of an asset",
            "LINK": "Link type module",
            "OWNED_ASSETS": "Module displaying assets owned by a user",
            "PLATFORMS": "Module displaying the platforms in an instance",
            "RELATED_TERMS": "Module displaying the related terms of a given glossary term",
            "RICH_TEXT": "Module containing rich text to be rendered",
            "UNKNOWN": "Unknown module type - this can occur with corrupted data or rolling back to versions without new modules"
          },
          "name": "DataHubPageModuleType",
          "namespace": "com.linkedin.pegasus2avro.module",
          "symbols": [
            "LINK",
            "RICH_TEXT",
            "ASSET_COLLECTION",
            "HIERARCHY",
            "OWNED_ASSETS",
            "DOMAINS",
            "ASSETS",
            "CHILD_HIERARCHY",
            "DATA_PRODUCTS",
            "RELATED_TERMS",
            "PLATFORMS",
            "LINEAGE",
            "COLUMNS",
            "UNKNOWN"
          ],
          "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"
                    },
                    {
                      "type": [
                        "null",
                        "string"
                      ],
                      "name": "dynamicFilterJson",
                      "default": null,
                      "doc": "Optional dynamic filters\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 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"
  },
  {
    "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"
  },
  {
    "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."
      }
    ],
    "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": {
                    "FIELDS_STRUCTURED_PROPERTY": "This prompt is meant to apply a structured property to a schema fields 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"
                  ]
                },
                "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": "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"
      }
    ],
    "doc": "Information about a form to help with filling out metadata on entities."
  },
  {
    "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": "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": "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": {
      "name": "corpGroupEditableInfo"
    },
    "name": "CorpGroupEditableInfo",
    "namespace": "com.linkedin.pegasus2avro.identity",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "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": "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": {
      "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": "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 U"
      },
      {
        "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",
          {
            "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.",
                      "TEAMS": "Microsoft Teams target type."
                    },
                    "name": "NotificationSinkType",
                    "namespace": "com.linkedin.pegasus2avro.event.notification",
                    "symbols": [
                      "SLACK",
                      "EMAIL",
                      "TEAMS"
                    ],
                    "doc": "A type of sink / platform to send a notification to."
                  }
                },
                "name": "sinkTypes",
                "doc": "Sink types that notifications are sent to."
              },
              {
                "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"
              }
            ],
            "doc": "Notification settings for an actor or subscription."
          }
        ],
        "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": {
      "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,
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "displayName",
        "default": null,
        "doc": "displayName of this user ,  e.g.  Hang Zhang(DataHQ)"
      },
      {
        "Searchable": {
          "fieldType": "KEYWORD",
          "queryByDefault": true,
          "searchTier": 1
        },
        "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": "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": "assets/platforms/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": {
      "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": "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": {
      "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,
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "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",
          "searchTier": 2
        },
        "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",
            "searchLabel": "createdAt"
          }
        },
        "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": "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": "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": "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"
  },
  {
    "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": "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": "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": "com.linkedin.pegasus2avro.metadata.query.filter.Filter",
              "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": "editableMlPrimaryKeyProperties"
    },
    "name": "EditableMLPrimaryKeyProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "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": "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": {
              "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 ML Training Run"
      },
      {
        "type": [
          "null",
          {
            "type": "array",
            "items": {
              "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"
            }
          }
        ],
        "name": "trainingMetrics",
        "default": null,
        "doc": "Metrics of the ML Training Run"
      }
    ],
    "doc": "The inputs and outputs of this training run"
  },
  {
    "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": "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": "editableMlModelProperties"
    },
    "name": "EditableMLModelProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "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": "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,
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the MLModel"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "sanitizeRichText": true,
          "searchTier": 2
        },
        "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": "com.linkedin.pegasus2avro.ml.metadata.MLHyperParam"
          }
        ],
        "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": "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": "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",
          {
            "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 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": "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": "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",
    "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": "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": "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."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLPrimaryKey"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.MLFeatureDataType"
        ],
        "name": "dataType",
        "default": null,
        "doc": "Data Type of the MLPrimaryKey"
      },
      {
        "type": [
          "null",
          "com.linkedin.pegasus2avro.common.VersionTag"
        ],
        "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": "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": "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": "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": "editableMlFeatureProperties"
    },
    "name": "EditableMLFeatureProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "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": "editableMlModelGroupProperties"
    },
    "name": "EditableMLModelGroupProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "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": "editableMlFeatureTableProperties"
    },
    "name": "EditableMLFeatureTableProperties",
    "namespace": "com.linkedin.pegasus2avro.ml.metadata",
    "fields": [
      {
        "Searchable": {
          "fieldName": "editedDescription",
          "fieldType": "TEXT",
          "searchTier": 2
        },
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Documentation of the MLFeatureTable"
      }
    ],
    "doc": "Properties associated with a MLFeatureTable editable from the ui"
  },
  {
    "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."
  },
  "com.linkedin.pegasus2avro.ml.metadata.MLMetric",
  "com.linkedin.pegasus2avro.ml.metadata.MLHyperParam",
  "com.linkedin.pegasus2avro.schema.SchemaMetadata",
  {
    "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",
                  "sanitizeRichText": true,
                  "searchTier": 2
                },
                "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"
                  },
                  "/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"
                  },
                  "/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",
    "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": "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",
                    "com.linkedin.pegasus2avro.chart.ChartInfo",
                    "com.linkedin.pegasus2avro.chart.ChartQuery",
                    "com.linkedin.pegasus2avro.chart.EditableChartProperties",
                    "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 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",
                    "com.linkedin.pegasus2avro.dataset.DatasetProperties",
                    "com.linkedin.pegasus2avro.dataset.EditableDatasetProperties",
                    "com.linkedin.pegasus2avro.dataset.DatasetDeprecation",
                    "com.linkedin.pegasus2avro.dataset.DatasetUpstreamLineage",
                    "com.linkedin.pegasus2avro.dataset.UpstreamLineage",
                    "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",
                    "com.linkedin.pegasus2avro.dataset.ViewProperties",
                    "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",
                    "com.linkedin.pegasus2avro.dataprocess.DataProcessInfo",
                    "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",
                    "com.linkedin.pegasus2avro.dataplatform.DataPlatformInfo"
                  ]
                },
                "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",
                    "com.linkedin.pegasus2avro.common.Cost",
                    "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 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",
                    "com.linkedin.pegasus2avro.tag.TagProperties",
                    "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",
                    "com.linkedin.pegasus2avro.glossary.GlossaryTermInfo",
                    "com.linkedin.pegasus2avro.common.Ownership",
                    "com.linkedin.pegasus2avro.common.Status",
                    "com.linkedin.pegasus2avro.common.BrowsePaths",
                    "com.linkedin.pegasus2avro.glossary.GlossaryRelatedTerms"
                  ]
                },
                "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",
                    "com.linkedin.pegasus2avro.glossary.GlossaryNodeInfo",
                    "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",
                    {
                      "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",
                            {
                              "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."
                        },
                        {
                          "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."
                    }
                  ]
                },
                "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",
                    "com.linkedin.pegasus2avro.retention.DataHubRetentionConfig"
                  ]
                },
                "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",
          {
            "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": "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": "MetadataChangeLog",
    "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",
          {
            "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",
          "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"
      },
      {
        "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."
  },
  "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",
    "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."
  },
  {
    "type": "record",
    "Aspect": {
      "name": "dataHubPersonaInfo"
    },
    "name": "DataHubPersonaInfo",
    "namespace": "com.linkedin.pegasus2avro.persona",
    "fields": [],
    "doc": "Placeholder aspect for persona type info"
  },
  {
    "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": "assetSettings"
    },
    "name": "AssetSettings",
    "namespace": "com.linkedin.pegasus2avro.settings.asset",
    "fields": [
      {
        "type": [
          "null",
          {
            "type": "record",
            "name": "AssetSummarySettings",
            "namespace": "com.linkedin.pegasus2avro.settings.asset",
            "fields": [
              {
                "Relationship": {
                  "/*/template": {
                    "entityTypes": [
                      "dataHubPageTemplate"
                    ],
                    "name": "HasSummaryTemplate"
                  }
                },
                "type": [
                  {
                    "type": "array",
                    "items": {
                      "type": "record",
                      "name": "AssetSummarySettingsTemplate",
                      "namespace": "com.linkedin.pegasus2avro.settings.asset",
                      "fields": [
                        {
                          "java": {
                            "class": "com.linkedin.pegasus2avro.common.urn.Urn"
                          },
                          "Urn": "Urn",
                          "type": "string",
                          "name": "template",
                          "doc": "The urn of the template"
                        }
                      ],
                      "doc": "Object containing the template and any additional info for asset summary settings"
                    }
                  },
                  "null"
                ],
                "name": "templates",
                "default": [],
                "doc": "The list of templates applied to this asset in order. Right now we only expect one."
              }
            ],
            "doc": "Information related to the asset summary for this asset"
          }
        ],
        "name": "assetSummary",
        "default": null,
        "doc": "Information related to the asset summary for this asset"
      }
    ],
    "doc": "Settings associated with this asset"
  },
  {
    "type": "record",
    "Aspect": {
      "name": "globalSettingsInfo"
    },
    "name": "GlobalSettingsInfo",
    "namespace": "com.linkedin.pegasus2avro.settings.global",
    "fields": [
      {
        "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": "OAuthSettings",
            "namespace": "com.linkedin.pegasus2avro.settings.global",
            "fields": [
              {
                "type": {
                  "type": "array",
                  "items": {
                    "type": "record",
                    "name": "OAuthProvider",
                    "namespace": "com.linkedin.pegasus2avro.settings.global",
                    "fields": [
                      {
                        "type": "boolean",
                        "name": "enabled",
                        "doc": "Whether this OAuth provider is enabled."
                      },
                      {
                        "type": "string",
                        "name": "name",
                        "doc": "The name of this OAuth provider. This is used for display purposes only."
                      },
                      {
                        "type": [
                          "null",
                          "string"
                        ],
                        "name": "jwksUri",
                        "default": null,
                        "doc": "The URI of the JSON Web Key Set (JWKS) endpoint for this OAuth provider."
                      },
                      {
                        "type": "string",
                        "name": "issuer",
                        "doc": "The expected issuer (iss) claim in the JWTs issued by this OAuth provider."
                      },
                      {
                        "type": "string",
                        "name": "audience",
                        "doc": "The expected audience (aud) claim in the JWTs issued by this OAuth provider."
                      },
                      {
                        "type": "string",
                        "name": "algorithm",
                        "default": "RS256",
                        "doc": "The JWT signing algorithm required for this provider.\nPrevents algorithm confusion attacks. Common values: RS256, RS384, RS512, PS256, ES256"
                      },
                      {
                        "type": "string",
                        "name": "userIdClaim",
                        "default": "sub",
                        "doc": "The JWT claim to use as the user identifier for this provider.\nDifferent providers use different claims (sub, email, preferred_username, etc.)"
                      }
                    ],
                    "doc": "An OAuth Provider. This provides information required to validate inbound\nrequests with OAuth 2.0 bearer tokens."
                  }
                },
                "name": "providers",
                "doc": "Trusted OAuth Providers"
              }
            ],
            "doc": "Trust oauth providers to use for authentication."
          }
        ],
        "name": "oauth",
        "default": null,
        "doc": "Settings related to the oauth authentication provider"
      },
      {
        "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"
      }
    ],
    "doc": "DataHub Global platform settings. Careful - these should not be modified by the outside world!"
  },
  {
    "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."
  },
  "com.linkedin.pegasus2avro.policy.DataHubPolicyInfo",
  {
    "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",
            "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."
          },
          "name": "IncidentType",
          "namespace": "com.linkedin.pegasus2avro.incident",
          "symbols": [
            "FRESHNESS",
            "VOLUME",
            "FIELD",
            "SQL",
            "DATA_SCHEMA",
            "OPERATIONAL",
            "CUSTOM"
          ],
          "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'."
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "title",
        "default": null,
        "doc": "Optional title associated with the incident"
      },
      {
        "type": [
          "null",
          "string"
        ],
        "name": "description",
        "default": null,
        "doc": "Optional description associated with the incident"
      },
      {
        "Relationship": {
          "/*": {
            "entityTypes": [
              "dataset",
              "chart",
              "dashboard",
              "dataFlow",
              "dataJob",
              "schemaField"
            ],
            "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": [
          "null",
          "int"
        ],
        "name": "priority",
        "default": null,
        "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."
              }
            ],
            "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."
  },
  "com.linkedin.pegasus2avro.incident.IncidentSource",
  {
    "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",
          "searchLabel": "entityName",
          "searchTier": 1
        },
        "type": [
          "null",
          "string"
        ],
        "name": "name",
        "default": null,
        "doc": "Display name of the Data Platform Instance"
      },
      {
        "Searchable": {
          "fieldType": "TEXT",
          "hasValuesFieldName": "hasDescription",
          "searchTier": 2
        },
        "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": "com.linkedin.pegasus2avro.common.FabricType",
        "name": "env"
      }
    ],
    "doc": "An Iceberg warehouse location and credentails whose read/writes are governed by datahub catalog."
  },
  {
    "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": "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",
          "searchTier": 2
        },
        "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"
  }
]